diff --git a/build/contracts/@openzeppelin/contracts/interfaces/IERC1271.sol/IERC1271.dbg.json b/build/contracts/@openzeppelin/contracts/interfaces/IERC1271.sol/IERC1271.dbg.json index f443676..da09213 100644 --- a/build/contracts/@openzeppelin/contracts/interfaces/IERC1271.sol/IERC1271.dbg.json +++ b/build/contracts/@openzeppelin/contracts/interfaces/IERC1271.sol/IERC1271.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" + "buildInfo": "../../../../build-info/50bef133a3a4ef56dcc656e5ddaa5648.json" } diff --git a/build/contracts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json b/build/contracts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json index 4dac000..b664968 100644 --- a/build/contracts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json +++ b/build/contracts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" + "buildInfo": "../../../../../build-info/50bef133a3a4ef56dcc656e5ddaa5648.json" } diff --git a/build/contracts/build-info/12d08302563728732d9881031a37cca7.json b/build/contracts/build-info/12d08302563728732d9881031a37cca7.json new file mode 100644 index 0000000..01078de --- /dev/null +++ b/build/contracts/build-info/12d08302563728732d9881031a37cca7.json @@ -0,0 +1 @@ +{"id":"12d08302563728732d9881031a37cca7","_format":"hh-sol-build-info-1","solcVersion":"0.8.17","solcLongVersion":"0.8.17+commit.8df45f5f","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/interfaces/IERC1271.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (interfaces/IERC1271.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC1271 standard signature validation method for\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n *\n * _Available since v4.1._\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 _data\n */\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\ninterface IERC1155Receiver is IERC165 {\n /**\n * @dev Handles the receipt of a single ERC1155 token type. This function is\n * called at the end of a `safeTransferFrom` after the balance has been updated.\n *\n * NOTE: To accept the transfer, this must return\n * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n * (i.e. 0xf23a6e61, or its own function selector).\n *\n * @param operator The address which initiated the transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param id The ID of the token being transferred\n * @param value The amount of tokens being transferred\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(\n address operator,\n address from,\n uint256 id,\n uint256 value,\n bytes calldata data\n ) external returns (bytes4);\n\n /**\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\n * is called at the end of a `safeBatchTransferFrom` after the balances have\n * been updated.\n *\n * NOTE: To accept the transfer(s), this must return\n * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n * (i.e. 0xbc197c81, or its own function selector).\n *\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\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 caller.\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 v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 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 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/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\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[EIP 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/Account.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\nimport \"./interfaces/IERC6551Account.sol\";\nimport \"./interfaces/IERC6551Executable.sol\";\nimport \"./lib/ERC6551AccountLib.sol\";\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/token/ERC1155/IERC1155Receiver.sol\";\nimport \"@openzeppelin/contracts/interfaces/IERC1271.sol\";\n\nerror NotAuthorized();\nerror InvalidInput();\nerror AccountLocked();\nerror ExceedsMaxLockTime();\nerror UntrustedImplementation();\nerror OwnershipCycle();\n\n/**\n * @title A smart contract account owned by a single ERC721 token\n */\ncontract Account is\n IERC165,\n IERC6551Account,\n IERC6551Executable,\n IERC721Receiver,\n IERC1155Receiver\n{\n /// @dev timestamp at which this account will be unlocked\n uint256 public lockedUntil;\n\n /// @dev mapping from owner => caller => has permissions\n mapping(address => mapping(address => bool)) public permissions;\n\n event OverrideUpdated(\n address owner,\n bytes4 selector,\n address implementation\n );\n\n event PermissionUpdated(address owner, address caller, bool hasPermission);\n\n event LockUpdated(uint256 lockedUntil);\n\n /// @dev reverts if caller is not the owner of the account\n modifier onlyOwner() {\n if (msg.sender != owner()) revert NotAuthorized();\n _;\n }\n\n /// @dev reverts if caller is not authorized to execute on this account\n modifier onlyValidSigner(bytes calldata context) {\n if (isValidSigner(msg.sender, context) != 0x523e3260) revert NotAuthorized();\n _;\n }\n\n /// @dev reverts if this account is currently locked\n modifier onlyUnlocked() {\n if (isLocked()) revert AccountLocked();\n _;\n }\n\n modifier onlyAllowedMethod(bytes calldata _data) {\n require(allowedMethod(_data), \"Method all not allowed\");\n _;\n }\n\n constructor() {}\n\n /// @dev allows eth transfers by default, but allows account owner to override\n receive() external payable {\n }\n\n /// @dev executes a low-level call against an account if the caller is authorized to make calls\n function execute(\n address to,\n uint256 value,\n bytes calldata data,\n uint8 operation\n ) external payable onlyValidSigner(data) onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) {\n // emit TransactionExecuted(to, value, data);\n\n return _call(to, value, data);\n }\n\n /// @dev grants a given caller execution permissions\n function setPermissions(\n address[] calldata callers,\n bool[] calldata _permissions\n ) external onlyUnlocked {\n address _owner = owner();\n if (msg.sender != _owner) revert NotAuthorized();\n\n uint256 length = callers.length;\n\n if (_permissions.length != length) revert InvalidInput();\n\n for (uint256 i = 0; i < length; i++) {\n permissions[_owner][callers[i]] = _permissions[i];\n emit PermissionUpdated(_owner, callers[i], _permissions[i]);\n }\n }\n\n /// @dev locks the account until a certain timestamp\n function lock(uint256 _lockedUntil) external onlyOwner onlyUnlocked {\n if (_lockedUntil > block.timestamp + 365 days)\n revert ExceedsMaxLockTime();\n\n lockedUntil = _lockedUntil;\n\n emit LockUpdated(_lockedUntil);\n }\n\n /// @dev returns the current lock status of the account as a boolean\n function isLocked() public view returns (bool) {\n return lockedUntil > block.timestamp;\n }\n\n /// @dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\n /// owns this account.\n function token()\n external\n view\n returns (\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n )\n {\n return ERC6551AccountLib.token();\n }\n\n /// @dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\n /// of the token has full permissions on the account.\n function owner() public view returns (address) {\n (\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n ) = ERC6551AccountLib.token();\n\n if (chainId != block.chainid) return address(0);\n\n return IERC721(tokenContract).ownerOf(tokenId);\n }\n\n /// @dev Returns the authorization status for a given caller\n function isValidSigner(address signer, bytes calldata context) public view returns (bytes4 magicValue) {\n (\n ,\n address tokenContract,\n uint256 tokenId\n ) = ERC6551AccountLib.token();\n address _owner = IERC721(tokenContract).ownerOf(tokenId);\n\n // authorize token owner\n if (signer == _owner) return 0x523e3260;\n\n // authorize caller if owner has granted permissions\n if (permissions[_owner][signer]) return 0x523e3260;\n\n return 0xffffffff;\n }\n\n /// @dev Returns true if a given interfaceId is supported by this account. This method can be\n /// extended by an override.\n function supportsInterface(bytes4 interfaceId)\n public\n pure \n override\n returns (bool)\n {\n bool defaultSupport = interfaceId == type(IERC165).interfaceId ||\n interfaceId == type(IERC1155Receiver).interfaceId ||\n interfaceId == type(IERC6551Account).interfaceId;\n\n if (defaultSupport) return true;\n\n return false;\n }\n\n /// @dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\n /// This function can be overriden.\n function onERC721Received(\n address,\n address,\n uint256 receivedTokenId,\n bytes memory\n ) public view override returns (bytes4) {\n (\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n ) = ERC6551AccountLib.token();\n\n if (\n chainId == block.chainid &&\n tokenContract == msg.sender &&\n tokenId == receivedTokenId\n ) revert OwnershipCycle();\n\n return this.onERC721Received.selector;\n }\n\n /// @dev Allows ERC-1155 tokens to be received. This function can be overriden.\n function onERC1155Received(\n address,\n address,\n uint256,\n uint256,\n bytes memory\n ) public pure override returns (bytes4) {\n return this.onERC1155Received.selector;\n }\n\n /// @dev Allows ERC-1155 token batches to be received. This function can be overriden.\n function onERC1155BatchReceived(\n address,\n address,\n uint256[] memory,\n uint256[] memory,\n bytes memory\n ) public pure override returns (bytes4) {\n return this.onERC1155BatchReceived.selector;\n }\n\n /// @dev Executes a low-level call\n function _call(\n address to,\n uint256 value,\n bytes calldata data\n ) internal returns (bytes memory result) {\n bool success;\n (success, result) = to.call{value: value}(data);\n\n if (!success) {\n assembly {\n revert(add(result, 32), mload(result))\n }\n }\n }\n\n /// @dev Executes a low-level static call\n function _callStatic(address to, bytes calldata data)\n internal\n view\n returns (bytes memory result)\n {\n bool success;\n (success, result) = to.staticcall(data);\n\n if (!success) {\n assembly {\n revert(add(result, 32), mload(result))\n }\n }\n }\n\n function allowedMethod(bytes calldata _data) internal returns (bool) {\n bytes4 signature = parseFirst4Bytes(_data);\n // approve > 0x095ea7b3\n\n if (signature == 0x095ea7b3) {\n return false;\n }\n\n return true;\n }\n\n function parseFirst4Bytes(bytes calldata _data) public pure returns (bytes4) {\n return bytes4(_data[:4]);\n }\n\n function state() external view returns (uint256) {\n return 1;\n }\n}\n"},"contracts/ChargedParticlesAccount.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\nimport \"./Account.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ncontract ChargedParticlesAccount is Account {\n function covalentBond(\n address nftTokenAddress,\n uint256 nftTokenId,\n uint256 nftTokenAmount\n ) external {\n // Transfer to self\n IERC721(nftTokenAddress).safeTransferFrom(\n msg.sender,\n address(this),\n nftTokenId\n );\n }\n\n function breakCovalentBond(\n address receiver,\n address nftTokenAddress,\n uint256 nftTokenId,\n uint256 nftTokenAmount\n ) external {\n IERC721(nftTokenAddress).safeTransferFrom(address(this), receiver, nftTokenId);\n }\n\n function energizeParticle(\n address assetToken,\n uint256 assetAmount\n ) external {\n IERC20(assetToken).transferFrom(msg.sender, address(this), assetAmount);\n }\n\n function dischargeParticle(\n address receiver,\n address assetToken,\n uint256 assetAmount\n ) external {\n IERC20(assetToken).transfer(receiver, assetAmount);\n }\n}\n"},"contracts/interfaces/IERC6551Account.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\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 chain 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\n"},"contracts/interfaces/IERC6551Executable.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\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"},"contracts/lib/ERC6551AccountLib.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nlibrary ERC6551AccountLib {\n function token()\n internal\n view\n returns (\n uint256,\n address,\n uint256\n )\n {\n bytes memory footer = new bytes(0x60);\n\n assembly {\n // copy 0x60 bytes from end of footer\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\n }\n\n return abi.decode(footer, (uint256, address, uint256));\n }\n\n function salt() internal view returns (uint256) {\n bytes memory footer = new bytes(0x20);\n\n assembly {\n // copy 0x20 bytes from beginning of footer\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\n }\n\n return abi.decode(footer, (uint256));\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"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/Account.sol:81:9:\n |\n81 | uint8 operation\n | ^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":2384,"file":"contracts/Account.sol","start":2369},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n --> contracts/Account.sol:150:44:\n |\n150 | function isValidSigner(address signer, bytes calldata context) public view returns (bytes4 magicValue) {\n | ^^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":4630,"file":"contracts/Account.sol","start":4608},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n --> contracts/ChargedParticlesAccount.sol:12:9:\n |\n12 | uint256 nftTokenAmount\n | ^^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":370,"file":"contracts/ChargedParticlesAccount.sol","start":348},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n --> contracts/ChargedParticlesAccount.sol:26:9:\n |\n26 | uint256 nftTokenAmount\n | ^^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":708,"file":"contracts/ChargedParticlesAccount.sol","start":686},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"Warning: Function state mutability can be restricted to pure\n --> contracts/Account.sol:261:5:\n |\n261 | function allowedMethod(bytes calldata _data) internal returns (bool) {\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":7990,"file":"contracts/Account.sol","start":7731},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"Warning: Function state mutability can be restricted to pure\n --> contracts/Account.sol:276:5:\n |\n276 | function state() external view returns (uint256) {\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":8194,"file":"contracts/Account.sol","start":8120},"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",".0"],"nodeType":"PragmaDirective","src":"92:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1271","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"117:189:0","text":" @dev Interface of the ERC1271 standard signature validation method for\n contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n _Available since v4.1._"},"fullyImplemented":false,"id":13,"linearizedBaseContracts":[13],"name":"IERC1271","nameLocation":"317:8:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"332:220: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 _data"},"functionSelector":"1626ba7e","id":12,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"566:16:0","nodeType":"FunctionDefinition","parameters":{"id":8,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"hash","nameLocation":"591:4:0","nodeType":"VariableDeclaration","scope":12,"src":"583:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4,"name":"bytes32","nodeType":"ElementaryTypeName","src":"583:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"signature","nameLocation":"610:9:0","nodeType":"VariableDeclaration","scope":12,"src":"597:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6,"name":"bytes","nodeType":"ElementaryTypeName","src":"597:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"582:38:0"},"returnParameters":{"id":11,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"mutability":"mutable","name":"magicValue","nameLocation":"651:10:0","nodeType":"VariableDeclaration","scope":12,"src":"644:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9,"name":"bytes4","nodeType":"ElementaryTypeName","src":"644:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"643:19:0"},"scope":13,"src":"557:106:0","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14,"src":"307:358:0","usedErrors":[]}],"src":"92:574:0"},"id":0},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","exportedSymbols":{"IERC1155Receiver":[54],"IERC165":[278]},"id":55,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":15,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:1"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":16,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":55,"sourceUnit":279,"src":"143:47:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18,"name":"IERC165","nameLocations":["262:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":278,"src":"262:7:1"},"id":19,"nodeType":"InheritanceSpecifier","src":"262:7:1"}],"canonicalName":"IERC1155Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"192:39:1","text":" @dev _Available since v3.1._"},"fullyImplemented":false,"id":54,"linearizedBaseContracts":[54,278],"name":"IERC1155Receiver","nameLocation":"242:16:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":20,"nodeType":"StructuredDocumentation","src":"276:826:1","text":" @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n NOTE: To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"},"functionSelector":"f23a6e61","id":35,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"1116:17:1","nodeType":"FunctionDefinition","parameters":{"id":31,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22,"mutability":"mutable","name":"operator","nameLocation":"1151:8:1","nodeType":"VariableDeclaration","scope":35,"src":"1143:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21,"name":"address","nodeType":"ElementaryTypeName","src":"1143:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24,"mutability":"mutable","name":"from","nameLocation":"1177:4:1","nodeType":"VariableDeclaration","scope":35,"src":"1169:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1169:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"id","nameLocation":"1199:2:1","nodeType":"VariableDeclaration","scope":35,"src":"1191:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1191:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"value","nameLocation":"1219:5:1","nodeType":"VariableDeclaration","scope":35,"src":"1211:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30,"mutability":"mutable","name":"data","nameLocation":"1249:4:1","nodeType":"VariableDeclaration","scope":35,"src":"1234:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":29,"name":"bytes","nodeType":"ElementaryTypeName","src":"1234:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1133:126:1"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":35,"src":"1278:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":32,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1278:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1277:8:1"},"scope":54,"src":"1107:179:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1292:994:1","text":" @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated.\n NOTE: To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"},"functionSelector":"bc197c81","id":53,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"2300:22:1","nodeType":"FunctionDefinition","parameters":{"id":49,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"operator","nameLocation":"2340:8:1","nodeType":"VariableDeclaration","scope":53,"src":"2332:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2332:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":40,"mutability":"mutable","name":"from","nameLocation":"2366:4:1","nodeType":"VariableDeclaration","scope":53,"src":"2358:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39,"name":"address","nodeType":"ElementaryTypeName","src":"2358:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43,"mutability":"mutable","name":"ids","nameLocation":"2399:3:1","nodeType":"VariableDeclaration","scope":53,"src":"2380:22:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":41,"name":"uint256","nodeType":"ElementaryTypeName","src":"2380:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42,"nodeType":"ArrayTypeName","src":"2380:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":46,"mutability":"mutable","name":"values","nameLocation":"2431:6:1","nodeType":"VariableDeclaration","scope":53,"src":"2412:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":44,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45,"nodeType":"ArrayTypeName","src":"2412:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":48,"mutability":"mutable","name":"data","nameLocation":"2462:4:1","nodeType":"VariableDeclaration","scope":53,"src":"2447:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":47,"name":"bytes","nodeType":"ElementaryTypeName","src":"2447:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2322:150:1"},"returnParameters":{"id":52,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":53,"src":"2491:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":50,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2491:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2490:8:1"},"scope":54,"src":"2291:208:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":55,"src":"232:2269:1","usedErrors":[]}],"src":"118:2384:1"},"id":1},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[132]},"id":133,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":56,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":57,"nodeType":"StructuredDocumentation","src":"131:70:2","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":132,"linearizedBaseContracts":[132],"name":"IERC20","nameLocation":"212:6:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":58,"nodeType":"StructuredDocumentation","src":"225:158:2","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":66,"name":"Transfer","nameLocation":"394:8:2","nodeType":"EventDefinition","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:2","nodeType":"VariableDeclaration","scope":66,"src":"403:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:2","nodeType":"VariableDeclaration","scope":66,"src":"425:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":64,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:2","nodeType":"VariableDeclaration","scope":66,"src":"445:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":63,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:2"},"src":"388:72:2"},{"anonymous":false,"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"466:148:2","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":75,"name":"Approval","nameLocation":"625:8:2","nodeType":"EventDefinition","parameters":{"id":74,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:2","nodeType":"VariableDeclaration","scope":75,"src":"634:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":71,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:2","nodeType":"VariableDeclaration","scope":75,"src":"657:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":73,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:2","nodeType":"VariableDeclaration","scope":75,"src":"682:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:2"},"src":"619:78:2"},{"documentation":{"id":76,"nodeType":"StructuredDocumentation","src":"703:66:2","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":81,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:2","nodeType":"FunctionDefinition","parameters":{"id":77,"nodeType":"ParameterList","parameters":[],"src":"794:2:2"},"returnParameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81,"src":"820:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:2"},"scope":132,"src":"774:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":82,"nodeType":"StructuredDocumentation","src":"835:72:2","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":89,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:2","nodeType":"FunctionDefinition","parameters":{"id":85,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84,"mutability":"mutable","name":"account","nameLocation":"939:7:2","nodeType":"VariableDeclaration","scope":89,"src":"931:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:2"},"returnParameters":{"id":88,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89,"src":"971:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:2"},"scope":132,"src":"912:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"986:202:2","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":99,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:2","nodeType":"FunctionDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":92,"mutability":"mutable","name":"to","nameLocation":"1219:2:2","nodeType":"VariableDeclaration","scope":99,"src":"1211:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":94,"mutability":"mutable","name":"amount","nameLocation":"1231:6:2","nodeType":"VariableDeclaration","scope":99,"src":"1223:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":93,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:2"},"returnParameters":{"id":98,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":99,"src":"1257:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":96,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:2"},"scope":132,"src":"1193:70:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":100,"nodeType":"StructuredDocumentation","src":"1269:264:2","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":109,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:2","nodeType":"FunctionDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":102,"mutability":"mutable","name":"owner","nameLocation":"1565:5:2","nodeType":"VariableDeclaration","scope":109,"src":"1557:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":101,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":104,"mutability":"mutable","name":"spender","nameLocation":"1580:7:2","nodeType":"VariableDeclaration","scope":109,"src":"1572:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:2"},"returnParameters":{"id":108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":107,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":109,"src":"1612:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:2"},"scope":132,"src":"1538:83:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":110,"nodeType":"StructuredDocumentation","src":"1627:642:2","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":119,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:2","nodeType":"FunctionDefinition","parameters":{"id":115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"mutability":"mutable","name":"spender","nameLocation":"2299:7:2","nodeType":"VariableDeclaration","scope":119,"src":"2291:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":111,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":114,"mutability":"mutable","name":"amount","nameLocation":"2316:6:2","nodeType":"VariableDeclaration","scope":119,"src":"2308:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:2"},"returnParameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":119,"src":"2342:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":116,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:2"},"scope":132,"src":"2274:74:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":120,"nodeType":"StructuredDocumentation","src":"2354:287:2","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":131,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:2","nodeType":"FunctionDefinition","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":122,"mutability":"mutable","name":"from","nameLocation":"2676:4:2","nodeType":"VariableDeclaration","scope":131,"src":"2668:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":124,"mutability":"mutable","name":"to","nameLocation":"2690:2:2","nodeType":"VariableDeclaration","scope":131,"src":"2682:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":123,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":126,"mutability":"mutable","name":"amount","nameLocation":"2702:6:2","nodeType":"VariableDeclaration","scope":131,"src":"2694:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":125,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:42:2"},"returnParameters":{"id":130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":129,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":131,"src":"2728:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":128,"name":"bool","nodeType":"ElementaryTypeName","src":"2728:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2727:6:2"},"scope":132,"src":"2646:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":133,"src":"202:2534:2","usedErrors":[]}],"src":"106:2631:2"},"id":2},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[278],"IERC721":[248]},"id":249,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":134,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:3"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":135,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":249,"sourceUnit":279,"src":"133:47:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":137,"name":"IERC165","nameLocations":["271:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":278,"src":"271:7:3"},"id":138,"nodeType":"InheritanceSpecifier","src":"271:7:3"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":136,"nodeType":"StructuredDocumentation","src":"182:67:3","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":248,"linearizedBaseContracts":[248,278],"name":"IERC721","nameLocation":"260:7:3","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"285:88:3","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":147,"name":"Transfer","nameLocation":"384:8:3","nodeType":"EventDefinition","parameters":{"id":146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:3","nodeType":"VariableDeclaration","scope":147,"src":"393:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":143,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:3","nodeType":"VariableDeclaration","scope":147,"src":"415:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":142,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":145,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:3","nodeType":"VariableDeclaration","scope":147,"src":"435:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":144,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:3"},"src":"378:82:3"},{"anonymous":false,"documentation":{"id":148,"nodeType":"StructuredDocumentation","src":"466:94:3","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":156,"name":"Approval","nameLocation":"571:8:3","nodeType":"EventDefinition","parameters":{"id":155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":150,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:3","nodeType":"VariableDeclaration","scope":156,"src":"580:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":149,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":152,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:3","nodeType":"VariableDeclaration","scope":156,"src":"603:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":151,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":154,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:3","nodeType":"VariableDeclaration","scope":156,"src":"629:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":153,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:3"},"src":"565:89:3"},{"anonymous":false,"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"660:117:3","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":165,"name":"ApprovalForAll","nameLocation":"788:14:3","nodeType":"EventDefinition","parameters":{"id":164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:3","nodeType":"VariableDeclaration","scope":165,"src":"803:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":158,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:3","nodeType":"VariableDeclaration","scope":165,"src":"826:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":160,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":163,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:3","nodeType":"VariableDeclaration","scope":165,"src":"852:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":162,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:3"},"src":"782:85:3"},{"documentation":{"id":166,"nodeType":"StructuredDocumentation","src":"873:76:3","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":173,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:3","nodeType":"FunctionDefinition","parameters":{"id":169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":168,"mutability":"mutable","name":"owner","nameLocation":"981:5:3","nodeType":"VariableDeclaration","scope":173,"src":"973:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":167,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:3"},"returnParameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"balance","nameLocation":"1019:7:3","nodeType":"VariableDeclaration","scope":173,"src":"1011:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:3"},"scope":248,"src":"954:74:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":174,"nodeType":"StructuredDocumentation","src":"1034:131:3","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":181,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:3","nodeType":"FunctionDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":176,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:3","nodeType":"VariableDeclaration","scope":181,"src":"1187:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":175,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:3"},"returnParameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":179,"mutability":"mutable","name":"owner","nameLocation":"1235:5:3","nodeType":"VariableDeclaration","scope":181,"src":"1227:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":178,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:3"},"scope":248,"src":"1170:72:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":182,"nodeType":"StructuredDocumentation","src":"1248:556:3","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 a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":193,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:3","nodeType":"FunctionDefinition","parameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":184,"mutability":"mutable","name":"from","nameLocation":"1843:4:3","nodeType":"VariableDeclaration","scope":193,"src":"1835:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":183,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":186,"mutability":"mutable","name":"to","nameLocation":"1857:2:3","nodeType":"VariableDeclaration","scope":193,"src":"1849:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"tokenId","nameLocation":"1869:7:3","nodeType":"VariableDeclaration","scope":193,"src":"1861:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":187,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"data","nameLocation":"1893:4:3","nodeType":"VariableDeclaration","scope":193,"src":"1878:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":189,"name":"bytes","nodeType":"ElementaryTypeName","src":"1878:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:64:3"},"returnParameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"1907:0:3"},"scope":248,"src":"1809:99:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":194,"nodeType":"StructuredDocumentation","src":"1914:687:3","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 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 {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":203,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2615:16:3","nodeType":"FunctionDefinition","parameters":{"id":201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"from","nameLocation":"2640:4:3","nodeType":"VariableDeclaration","scope":203,"src":"2632:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":195,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":198,"mutability":"mutable","name":"to","nameLocation":"2654:2:3","nodeType":"VariableDeclaration","scope":203,"src":"2646:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"2646:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":200,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:3","nodeType":"VariableDeclaration","scope":203,"src":"2658:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":199,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2631:43:3"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"2683:0:3"},"scope":248,"src":"2606:78:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":204,"nodeType":"StructuredDocumentation","src":"2690:732:3","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 ERC721\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":213,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3436:12:3","nodeType":"FunctionDefinition","parameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":206,"mutability":"mutable","name":"from","nameLocation":"3457:4:3","nodeType":"VariableDeclaration","scope":213,"src":"3449:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":205,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":208,"mutability":"mutable","name":"to","nameLocation":"3471:2:3","nodeType":"VariableDeclaration","scope":213,"src":"3463:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":207,"name":"address","nodeType":"ElementaryTypeName","src":"3463:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":210,"mutability":"mutable","name":"tokenId","nameLocation":"3483:7:3","nodeType":"VariableDeclaration","scope":213,"src":"3475:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":209,"name":"uint256","nodeType":"ElementaryTypeName","src":"3475:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3448:43:3"},"returnParameters":{"id":212,"nodeType":"ParameterList","parameters":[],"src":"3500:0:3"},"scope":248,"src":"3427:74:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":214,"nodeType":"StructuredDocumentation","src":"3507:452:3","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":221,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3973:7:3","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":216,"mutability":"mutable","name":"to","nameLocation":"3989:2:3","nodeType":"VariableDeclaration","scope":221,"src":"3981:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"3981:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":218,"mutability":"mutable","name":"tokenId","nameLocation":"4001:7:3","nodeType":"VariableDeclaration","scope":221,"src":"3993:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":217,"name":"uint256","nodeType":"ElementaryTypeName","src":"3993:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3980:29:3"},"returnParameters":{"id":220,"nodeType":"ParameterList","parameters":[],"src":"4018:0:3"},"scope":248,"src":"3964:55:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":222,"nodeType":"StructuredDocumentation","src":"4025:309:3","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 caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":229,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4348:17:3","nodeType":"FunctionDefinition","parameters":{"id":227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"operator","nameLocation":"4374:8:3","nodeType":"VariableDeclaration","scope":229,"src":"4366:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":223,"name":"address","nodeType":"ElementaryTypeName","src":"4366:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":226,"mutability":"mutable","name":"approved","nameLocation":"4389:8:3","nodeType":"VariableDeclaration","scope":229,"src":"4384:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":225,"name":"bool","nodeType":"ElementaryTypeName","src":"4384:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4365:33:3"},"returnParameters":{"id":228,"nodeType":"ParameterList","parameters":[],"src":"4407:0:3"},"scope":248,"src":"4339:69:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":230,"nodeType":"StructuredDocumentation","src":"4414:139:3","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":237,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4567:11:3","nodeType":"FunctionDefinition","parameters":{"id":233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":232,"mutability":"mutable","name":"tokenId","nameLocation":"4587:7:3","nodeType":"VariableDeclaration","scope":237,"src":"4579:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":231,"name":"uint256","nodeType":"ElementaryTypeName","src":"4579:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4578:17:3"},"returnParameters":{"id":236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":235,"mutability":"mutable","name":"operator","nameLocation":"4627:8:3","nodeType":"VariableDeclaration","scope":237,"src":"4619:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":234,"name":"address","nodeType":"ElementaryTypeName","src":"4619:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4618:18:3"},"scope":248,"src":"4558:79:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":238,"nodeType":"StructuredDocumentation","src":"4643:138:3","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":247,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4795:16:3","nodeType":"FunctionDefinition","parameters":{"id":243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":240,"mutability":"mutable","name":"owner","nameLocation":"4820:5:3","nodeType":"VariableDeclaration","scope":247,"src":"4812:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":239,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":242,"mutability":"mutable","name":"operator","nameLocation":"4835:8:3","nodeType":"VariableDeclaration","scope":247,"src":"4827:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":241,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4811:33:3"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":247,"src":"4868:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":244,"name":"bool","nodeType":"ElementaryTypeName","src":"4868:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4867:6:3"},"scope":248,"src":"4786:88:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":249,"src":"250:4626:3","usedErrors":[]}],"src":"108:4769:3"},"id":3},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[266]},"id":267,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":250,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"141:152:4","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":266,"linearizedBaseContracts":[266],"name":"IERC721Receiver","nameLocation":"304:15:4","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":252,"nodeType":"StructuredDocumentation","src":"326:493:4","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 reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":265,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:4","nodeType":"FunctionDefinition","parameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":254,"mutability":"mutable","name":"operator","nameLocation":"867:8:4","nodeType":"VariableDeclaration","scope":265,"src":"859:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":253,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":256,"mutability":"mutable","name":"from","nameLocation":"893:4:4","nodeType":"VariableDeclaration","scope":265,"src":"885:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":255,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":258,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:4","nodeType":"VariableDeclaration","scope":265,"src":"907:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":257,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"data","nameLocation":"947:4:4","nodeType":"VariableDeclaration","scope":265,"src":"932:19:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":259,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:4"},"returnParameters":{"id":264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":265,"src":"976:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":262,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:4"},"scope":266,"src":"824:160:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":267,"src":"294:692:4","usedErrors":[]}],"src":"116:871:4"},"id":4},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[278]},"id":279,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":268,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":269,"nodeType":"StructuredDocumentation","src":"125:279:5","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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":278,"linearizedBaseContracts":[278],"name":"IERC165","nameLocation":"415:7:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":270,"nodeType":"StructuredDocumentation","src":"429: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[EIP 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":277,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:5","nodeType":"FunctionDefinition","parameters":{"id":273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":272,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:5","nodeType":"VariableDeclaration","scope":277,"src":"801:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":271,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:5"},"returnParameters":{"id":276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":277,"src":"844:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":274,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:5"},"scope":278,"src":"774:76:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":279,"src":"405:447:5","usedErrors":[]}],"src":"100:753:5"},"id":5},"contracts/Account.sol":{"ast":{"absolutePath":"contracts/Account.sol","exportedSymbols":{"Account":[881],"AccountLocked":[294],"ERC6551AccountLib":[1082],"ExceedsMaxLockTime":[296],"IERC1155Receiver":[54],"IERC1271":[13],"IERC165":[278],"IERC6551Account":[1009],"IERC6551Executable":[1027],"IERC721":[248],"IERC721Receiver":[266],"InvalidInput":[292],"NotAuthorized":[290],"OwnershipCycle":[300],"UntrustedImplementation":[298]},"id":882,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":280,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:6"},{"absolutePath":"contracts/interfaces/IERC6551Account.sol","file":"./interfaces/IERC6551Account.sol","id":281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":882,"sourceUnit":1010,"src":"65:42:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IERC6551Executable.sol","file":"./interfaces/IERC6551Executable.sol","id":282,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":882,"sourceUnit":1028,"src":"108:45:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/ERC6551AccountLib.sol","file":"./lib/ERC6551AccountLib.sol","id":283,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":882,"sourceUnit":1083,"src":"154:37:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":284,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":882,"sourceUnit":279,"src":"193:65:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":285,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":882,"sourceUnit":249,"src":"259:58:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":286,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":882,"sourceUnit":267,"src":"318:66:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","file":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","id":287,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":882,"sourceUnit":55,"src":"385:68:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","file":"@openzeppelin/contracts/interfaces/IERC1271.sol","id":288,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":882,"sourceUnit":14,"src":"454:57:6","symbolAliases":[],"unitAlias":""},{"errorSelector":"ea8e4eb5","id":290,"name":"NotAuthorized","nameLocation":"519:13:6","nodeType":"ErrorDefinition","parameters":{"id":289,"nodeType":"ParameterList","parameters":[],"src":"532:2:6"},"src":"513:22:6"},{"errorSelector":"b4fa3fb3","id":292,"name":"InvalidInput","nameLocation":"542:12:6","nodeType":"ErrorDefinition","parameters":{"id":291,"nodeType":"ParameterList","parameters":[],"src":"554:2:6"},"src":"536:21:6"},{"errorSelector":"6315bfbb","id":294,"name":"AccountLocked","nameLocation":"564:13:6","nodeType":"ErrorDefinition","parameters":{"id":293,"nodeType":"ParameterList","parameters":[],"src":"577:2:6"},"src":"558:22:6"},{"errorSelector":"0c0a7be8","id":296,"name":"ExceedsMaxLockTime","nameLocation":"587:18:6","nodeType":"ErrorDefinition","parameters":{"id":295,"nodeType":"ParameterList","parameters":[],"src":"605:2:6"},"src":"581:27:6"},{"errorSelector":"b57d5a5e","id":298,"name":"UntrustedImplementation","nameLocation":"615:23:6","nodeType":"ErrorDefinition","parameters":{"id":297,"nodeType":"ParameterList","parameters":[],"src":"638:2:6"},"src":"609:32:6"},{"errorSelector":"b79e3f3f","id":300,"name":"OwnershipCycle","nameLocation":"648:14:6","nodeType":"ErrorDefinition","parameters":{"id":299,"nodeType":"ParameterList","parameters":[],"src":"662:2:6"},"src":"642:23:6"},{"abstract":false,"baseContracts":[{"baseName":{"id":302,"name":"IERC165","nameLocations":["765:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":278,"src":"765:7:6"},"id":303,"nodeType":"InheritanceSpecifier","src":"765:7:6"},{"baseName":{"id":304,"name":"IERC6551Account","nameLocations":["778:15:6"],"nodeType":"IdentifierPath","referencedDeclaration":1009,"src":"778:15:6"},"id":305,"nodeType":"InheritanceSpecifier","src":"778:15:6"},{"baseName":{"id":306,"name":"IERC6551Executable","nameLocations":["799:18:6"],"nodeType":"IdentifierPath","referencedDeclaration":1027,"src":"799:18:6"},"id":307,"nodeType":"InheritanceSpecifier","src":"799:18:6"},{"baseName":{"id":308,"name":"IERC721Receiver","nameLocations":["823:15:6"],"nodeType":"IdentifierPath","referencedDeclaration":266,"src":"823:15:6"},"id":309,"nodeType":"InheritanceSpecifier","src":"823:15:6"},{"baseName":{"id":310,"name":"IERC1155Receiver","nameLocations":["844:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":54,"src":"844:16:6"},"id":311,"nodeType":"InheritanceSpecifier","src":"844:16:6"}],"canonicalName":"Account","contractDependencies":[],"contractKind":"contract","documentation":{"id":301,"nodeType":"StructuredDocumentation","src":"667:73:6","text":" @title A smart contract account owned by a single ERC721 token"},"fullyImplemented":true,"id":881,"linearizedBaseContracts":[881,54,266,1027,1009,278],"name":"Account","nameLocation":"750:7:6","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":312,"nodeType":"StructuredDocumentation","src":"867:57:6","text":"@dev timestamp at which this account will be unlocked"},"functionSelector":"ce0617ec","id":314,"mutability":"mutable","name":"lockedUntil","nameLocation":"944:11:6","nodeType":"VariableDeclaration","scope":881,"src":"929:26:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":313,"name":"uint256","nodeType":"ElementaryTypeName","src":"929:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"documentation":{"id":315,"nodeType":"StructuredDocumentation","src":"962:56:6","text":"@dev mapping from owner => caller => has permissions"},"functionSelector":"1f9838b5","id":321,"mutability":"mutable","name":"permissions","nameLocation":"1075:11:6","nodeType":"VariableDeclaration","scope":881,"src":"1023:63:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":320,"keyType":{"id":316,"name":"address","nodeType":"ElementaryTypeName","src":"1031:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1023:44:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":319,"keyType":{"id":317,"name":"address","nodeType":"ElementaryTypeName","src":"1050:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1042:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":318,"name":"bool","nodeType":"ElementaryTypeName","src":"1061:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"public"},{"anonymous":false,"eventSelector":"2c722487e90aca38ec1b074c3403210bd2bfb769b4da7f12f7bf0b9e37517c18","id":329,"name":"OverrideUpdated","nameLocation":"1099:15:6","nodeType":"EventDefinition","parameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":323,"indexed":false,"mutability":"mutable","name":"owner","nameLocation":"1132:5:6","nodeType":"VariableDeclaration","scope":329,"src":"1124:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":322,"name":"address","nodeType":"ElementaryTypeName","src":"1124:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":325,"indexed":false,"mutability":"mutable","name":"selector","nameLocation":"1154:8:6","nodeType":"VariableDeclaration","scope":329,"src":"1147:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":324,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1147:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":327,"indexed":false,"mutability":"mutable","name":"implementation","nameLocation":"1180:14:6","nodeType":"VariableDeclaration","scope":329,"src":"1172:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":326,"name":"address","nodeType":"ElementaryTypeName","src":"1172:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1114:86:6"},"src":"1093:108:6"},{"anonymous":false,"eventSelector":"394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5","id":337,"name":"PermissionUpdated","nameLocation":"1213:17:6","nodeType":"EventDefinition","parameters":{"id":336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":331,"indexed":false,"mutability":"mutable","name":"owner","nameLocation":"1239:5:6","nodeType":"VariableDeclaration","scope":337,"src":"1231:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":330,"name":"address","nodeType":"ElementaryTypeName","src":"1231:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":333,"indexed":false,"mutability":"mutable","name":"caller","nameLocation":"1254:6:6","nodeType":"VariableDeclaration","scope":337,"src":"1246:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":332,"name":"address","nodeType":"ElementaryTypeName","src":"1246:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":335,"indexed":false,"mutability":"mutable","name":"hasPermission","nameLocation":"1267:13:6","nodeType":"VariableDeclaration","scope":337,"src":"1262:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":334,"name":"bool","nodeType":"ElementaryTypeName","src":"1262:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1230:51:6"},"src":"1207:75:6"},{"anonymous":false,"eventSelector":"a7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad","id":341,"name":"LockUpdated","nameLocation":"1294:11:6","nodeType":"EventDefinition","parameters":{"id":340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":339,"indexed":false,"mutability":"mutable","name":"lockedUntil","nameLocation":"1314:11:6","nodeType":"VariableDeclaration","scope":341,"src":"1306:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":338,"name":"uint256","nodeType":"ElementaryTypeName","src":"1306:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1305:21:6"},"src":"1288:39:6"},{"body":{"id":354,"nodeType":"Block","src":"1417:77:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":344,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1431:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:6:6","memberName":"sender","nodeType":"MemberAccess","src":"1431:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":346,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"1445:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1445:7:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1431:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":352,"nodeType":"IfStatement","src":"1427:49:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":349,"name":"NotAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":290,"src":"1461:13:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1461:15:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":351,"nodeType":"RevertStatement","src":"1454:22:6"}},{"id":353,"nodeType":"PlaceholderStatement","src":"1486:1:6"}]},"documentation":{"id":342,"nodeType":"StructuredDocumentation","src":"1333:58:6","text":"@dev reverts if caller is not the owner of the account"},"id":355,"name":"onlyOwner","nameLocation":"1405:9:6","nodeType":"ModifierDefinition","parameters":{"id":343,"nodeType":"ParameterList","parameters":[],"src":"1414:2:6"},"src":"1396:98:6","virtual":false,"visibility":"internal"},{"body":{"id":372,"nodeType":"Block","src":"1625:104:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":361,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1653:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1657:6:6","memberName":"sender","nodeType":"MemberAccess","src":"1653:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":363,"name":"context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":358,"src":"1665:7:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":360,"name":"isValidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":642,"src":"1639:13:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (address,bytes calldata) view returns (bytes4)"}},"id":364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1639:34:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30783532336533323630","id":365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:10:6","typeDescriptions":{"typeIdentifier":"t_rational_1379807840_by_1","typeString":"int_const 1379807840"},"value":"0x523e3260"},"src":"1639:48:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":370,"nodeType":"IfStatement","src":"1635:76:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":367,"name":"NotAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":290,"src":"1696:13:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1696:15:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":369,"nodeType":"RevertStatement","src":"1689:22:6"}},{"id":371,"nodeType":"PlaceholderStatement","src":"1721:1:6"}]},"documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"1500:71:6","text":"@dev reverts if caller is not authorized to execute on this account"},"id":373,"name":"onlyValidSigner","nameLocation":"1585:15:6","nodeType":"ModifierDefinition","parameters":{"id":359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"context","nameLocation":"1616:7:6","nodeType":"VariableDeclaration","scope":373,"src":"1601:22:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":357,"name":"bytes","nodeType":"ElementaryTypeName","src":"1601:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1600:24:6"},"src":"1576:153:6","virtual":false,"visibility":"internal"},{"body":{"id":383,"nodeType":"Block","src":"1816:66:6","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":376,"name":"isLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":549,"src":"1830:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1830:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":381,"nodeType":"IfStatement","src":"1826:38:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":378,"name":"AccountLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"1849:13:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1849:15:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":380,"nodeType":"RevertStatement","src":"1842:22:6"}},{"id":382,"nodeType":"PlaceholderStatement","src":"1874:1:6"}]},"documentation":{"id":374,"nodeType":"StructuredDocumentation","src":"1735:52:6","text":"@dev reverts if this account is currently locked"},"id":384,"name":"onlyUnlocked","nameLocation":"1801:12:6","nodeType":"ModifierDefinition","parameters":{"id":375,"nodeType":"ParameterList","parameters":[],"src":"1813:2:6"},"src":"1792:90:6","virtual":false,"visibility":"internal"},{"body":{"id":396,"nodeType":"Block","src":"1937:83:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":390,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":386,"src":"1969:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":389,"name":"allowedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"1955:13:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$returns$_t_bool_$","typeString":"function (bytes calldata) returns (bool)"}},"id":391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1955:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6574686f6420616c6c206e6f7420616c6c6f776564","id":392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1977:24:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483","typeString":"literal_string \"Method all not allowed\""},"value":"Method all not allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483","typeString":"literal_string \"Method all not allowed\""}],"id":388,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1947:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1947:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":394,"nodeType":"ExpressionStatement","src":"1947:55:6"},{"id":395,"nodeType":"PlaceholderStatement","src":"2012:1:6"}]},"id":397,"name":"onlyAllowedMethod","nameLocation":"1897:17:6","nodeType":"ModifierDefinition","parameters":{"id":387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":386,"mutability":"mutable","name":"_data","nameLocation":"1930:5:6","nodeType":"VariableDeclaration","scope":397,"src":"1915:20:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":385,"name":"bytes","nodeType":"ElementaryTypeName","src":"1915:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1914:22:6"},"src":"1888:132:6","virtual":false,"visibility":"internal"},{"body":{"id":400,"nodeType":"Block","src":"2040:2:6","statements":[]},"id":401,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":398,"nodeType":"ParameterList","parameters":[],"src":"2037:2:6"},"returnParameters":{"id":399,"nodeType":"ParameterList","parameters":[],"src":"2040:0:6"},"scope":881,"src":"2026:16:6","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[982],"body":{"id":405,"nodeType":"Block","src":"2158:7:6","statements":[]},"documentation":{"id":402,"nodeType":"StructuredDocumentation","src":"2048:78:6","text":"@dev allows eth transfers by default, but allows account owner to override"},"id":406,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":403,"nodeType":"ParameterList","parameters":[],"src":"2138:2:6"},"returnParameters":{"id":404,"nodeType":"ParameterList","parameters":[],"src":"2158:0:6"},"scope":881,"src":"2131:34:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1026],"body":{"id":434,"nodeType":"Block","src":"2490:101:6","statements":[{"expression":{"arguments":[{"id":429,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":409,"src":"2568:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":430,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"2572:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":431,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"2579:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":428,"name":"_call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"2562:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,uint256,bytes calldata) returns (bytes memory)"}},"id":432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2562:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":427,"id":433,"nodeType":"Return","src":"2555:29:6"}]},"documentation":{"id":407,"nodeType":"StructuredDocumentation","src":"2171:95:6","text":"@dev executes a low-level call against an account if the caller is authorized to make calls"},"functionSelector":"51945447","id":435,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":418,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"2424:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":419,"kind":"modifierInvocation","modifierName":{"id":417,"name":"onlyValidSigner","nameLocations":["2408:15:6"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"2408:15:6"},"nodeType":"ModifierInvocation","src":"2408:21:6"},{"id":421,"kind":"modifierInvocation","modifierName":{"id":420,"name":"onlyUnlocked","nameLocations":["2430:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":384,"src":"2430:12:6"},"nodeType":"ModifierInvocation","src":"2430:12:6"},{"arguments":[{"id":423,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"2461:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":424,"kind":"modifierInvocation","modifierName":{"id":422,"name":"onlyAllowedMethod","nameLocations":["2443:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":397,"src":"2443:17:6"},"nodeType":"ModifierInvocation","src":"2443:23:6"}],"name":"execute","nameLocation":"2280:7:6","nodeType":"FunctionDefinition","parameters":{"id":416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":409,"mutability":"mutable","name":"to","nameLocation":"2305:2:6","nodeType":"VariableDeclaration","scope":435,"src":"2297:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":408,"name":"address","nodeType":"ElementaryTypeName","src":"2297:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":411,"mutability":"mutable","name":"value","nameLocation":"2325:5:6","nodeType":"VariableDeclaration","scope":435,"src":"2317:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"2317:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"data","nameLocation":"2355:4:6","nodeType":"VariableDeclaration","scope":435,"src":"2340:19:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":412,"name":"bytes","nodeType":"ElementaryTypeName","src":"2340:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":415,"mutability":"mutable","name":"operation","nameLocation":"2375:9:6","nodeType":"VariableDeclaration","scope":435,"src":"2369:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":414,"name":"uint8","nodeType":"ElementaryTypeName","src":"2369:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2287:103:6"},"returnParameters":{"id":427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":435,"src":"2476:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":425,"name":"bytes","nodeType":"ElementaryTypeName","src":"2476:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2475:14:6"},"scope":881,"src":"2271:320:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":507,"nodeType":"Block","src":"2780:402:6","statements":[{"assignments":[448],"declarations":[{"constant":false,"id":448,"mutability":"mutable","name":"_owner","nameLocation":"2798:6:6","nodeType":"VariableDeclaration","scope":507,"src":"2790:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":447,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":451,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":449,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":598,"src":"2807:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2807:7:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2790:24:6"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":452,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2828:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2832:6:6","memberName":"sender","nodeType":"MemberAccess","src":"2828:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":454,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"2842:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2828:20:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":459,"nodeType":"IfStatement","src":"2824:48:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":456,"name":"NotAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":290,"src":"2857:13:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2857:15:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":458,"nodeType":"RevertStatement","src":"2850:22:6"}},{"assignments":[461],"declarations":[{"constant":false,"id":461,"mutability":"mutable","name":"length","nameLocation":"2891:6:6","nodeType":"VariableDeclaration","scope":507,"src":"2883:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":460,"name":"uint256","nodeType":"ElementaryTypeName","src":"2883:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":464,"initialValue":{"expression":{"id":462,"name":"callers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"2900:7:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2908:6:6","memberName":"length","nodeType":"MemberAccess","src":"2900:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2883:31:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":465,"name":"_permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"2929:12:6","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[] calldata"}},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2942:6:6","memberName":"length","nodeType":"MemberAccess","src":"2929:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":467,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"2952:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2929:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":472,"nodeType":"IfStatement","src":"2925:56:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":469,"name":"InvalidInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"2967:12:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2967:14:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":471,"nodeType":"RevertStatement","src":"2960:21:6"}},{"body":{"id":505,"nodeType":"Block","src":"3029:147:6","statements":[{"expression":{"id":493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":483,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"3043:11:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":488,"indexExpression":{"id":484,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"3055:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3043:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":489,"indexExpression":{"baseExpression":{"id":485,"name":"callers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"3063:7:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":487,"indexExpression":{"id":486,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"3071:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3063:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3043:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":490,"name":"_permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"3077:12:6","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[] calldata"}},"id":492,"indexExpression":{"id":491,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"3090:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3077:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3043:49:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":494,"nodeType":"ExpressionStatement","src":"3043:49:6"},{"eventCall":{"arguments":[{"id":496,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"3129:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":497,"name":"callers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":439,"src":"3137:7:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":499,"indexExpression":{"id":498,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"3145:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3137:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":500,"name":"_permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"3149:12:6","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[] calldata"}},"id":502,"indexExpression":{"id":501,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"3162:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3149:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":495,"name":"PermissionUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"3111:17:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3111:54:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":504,"nodeType":"EmitStatement","src":"3106:59:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":477,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"3012:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":478,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"3016:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3012:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":506,"initializationExpression":{"assignments":[474],"declarations":[{"constant":false,"id":474,"mutability":"mutable","name":"i","nameLocation":"3005:1:6","nodeType":"VariableDeclaration","scope":506,"src":"2997:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":473,"name":"uint256","nodeType":"ElementaryTypeName","src":"2997:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":476,"initialValue":{"hexValue":"30","id":475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3009:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2997:13:6"},"loopExpression":{"expression":{"id":481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3024:3:6","subExpression":{"id":480,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"3024:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":482,"nodeType":"ExpressionStatement","src":"3024:3:6"},"nodeType":"ForStatement","src":"2992:184:6"}]},"documentation":{"id":436,"nodeType":"StructuredDocumentation","src":"2597:52:6","text":"@dev grants a given caller execution permissions"},"functionSelector":"039721b1","id":508,"implemented":true,"kind":"function","modifiers":[{"id":445,"kind":"modifierInvocation","modifierName":{"id":444,"name":"onlyUnlocked","nameLocations":["2767:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":384,"src":"2767:12:6"},"nodeType":"ModifierInvocation","src":"2767:12:6"}],"name":"setPermissions","nameLocation":"2663:14:6","nodeType":"FunctionDefinition","parameters":{"id":443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":439,"mutability":"mutable","name":"callers","nameLocation":"2706:7:6","nodeType":"VariableDeclaration","scope":508,"src":"2687:26:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":437,"name":"address","nodeType":"ElementaryTypeName","src":"2687:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":438,"nodeType":"ArrayTypeName","src":"2687:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":442,"mutability":"mutable","name":"_permissions","nameLocation":"2739:12:6","nodeType":"VariableDeclaration","scope":508,"src":"2723:28:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":440,"name":"bool","nodeType":"ElementaryTypeName","src":"2723:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":441,"nodeType":"ArrayTypeName","src":"2723:6:6","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"2677:80:6"},"returnParameters":{"id":446,"nodeType":"ParameterList","parameters":[],"src":"2780:0:6"},"scope":881,"src":"2654:528:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":536,"nodeType":"Block","src":"3313:181:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":518,"name":"_lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"3327:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":519,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3342:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3348:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"3342:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"333635","id":521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3360:8:6","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"365"},"src":"3342:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3327:41:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":527,"nodeType":"IfStatement","src":"3323:86:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":524,"name":"ExceedsMaxLockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":296,"src":"3389:18:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3389:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":526,"nodeType":"RevertStatement","src":"3382:27:6"}},{"expression":{"id":530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":528,"name":"lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"3420:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":529,"name":"_lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"3434:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3420:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":531,"nodeType":"ExpressionStatement","src":"3420:26:6"},{"eventCall":{"arguments":[{"id":533,"name":"_lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"3474:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":532,"name":"LockUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"3462:11:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3462:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":535,"nodeType":"EmitStatement","src":"3457:30:6"}]},"documentation":{"id":509,"nodeType":"StructuredDocumentation","src":"3188:52:6","text":"@dev locks the account until a certain timestamp"},"functionSelector":"dd467064","id":537,"implemented":true,"kind":"function","modifiers":[{"id":514,"kind":"modifierInvocation","modifierName":{"id":513,"name":"onlyOwner","nameLocations":["3290:9:6"],"nodeType":"IdentifierPath","referencedDeclaration":355,"src":"3290:9:6"},"nodeType":"ModifierInvocation","src":"3290:9:6"},{"id":516,"kind":"modifierInvocation","modifierName":{"id":515,"name":"onlyUnlocked","nameLocations":["3300:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":384,"src":"3300:12:6"},"nodeType":"ModifierInvocation","src":"3300:12:6"}],"name":"lock","nameLocation":"3254:4:6","nodeType":"FunctionDefinition","parameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":511,"mutability":"mutable","name":"_lockedUntil","nameLocation":"3267:12:6","nodeType":"VariableDeclaration","scope":537,"src":"3259:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"3259:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3258:22:6"},"returnParameters":{"id":517,"nodeType":"ParameterList","parameters":[],"src":"3313:0:6"},"scope":881,"src":"3245:249:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":548,"nodeType":"Block","src":"3620:53:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":543,"name":"lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"3637:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":544,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3651:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3657:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"3651:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3637:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":542,"id":547,"nodeType":"Return","src":"3630:36:6"}]},"documentation":{"id":538,"nodeType":"StructuredDocumentation","src":"3500:68:6","text":"@dev returns the current lock status of the account as a boolean"},"functionSelector":"a4e2d634","id":549,"implemented":true,"kind":"function","modifiers":[],"name":"isLocked","nameLocation":"3582:8:6","nodeType":"FunctionDefinition","parameters":{"id":539,"nodeType":"ParameterList","parameters":[],"src":"3590:2:6"},"returnParameters":{"id":542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":549,"src":"3614:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":540,"name":"bool","nodeType":"ElementaryTypeName","src":"3614:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3613:6:6"},"scope":881,"src":"3573:100:6","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[992],"body":{"id":563,"nodeType":"Block","src":"3976:49:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":559,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"3993:17:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$1082_$","typeString":"type(library ERC6551AccountLib)"}},"id":560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4011:5:6","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1059,"src":"3993:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3993:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"functionReturnParameters":558,"id":562,"nodeType":"Return","src":"3986:32:6"}]},"documentation":{"id":550,"nodeType":"StructuredDocumentation","src":"3679:121:6","text":"@dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\n owns this account."},"functionSelector":"fc0c546a","id":564,"implemented":true,"kind":"function","modifiers":[],"name":"token","nameLocation":"3814:5:6","nodeType":"FunctionDefinition","parameters":{"id":551,"nodeType":"ParameterList","parameters":[],"src":"3819:2:6"},"returnParameters":{"id":558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"chainId","nameLocation":"3890:7:6","nodeType":"VariableDeclaration","scope":564,"src":"3882:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":552,"name":"uint256","nodeType":"ElementaryTypeName","src":"3882:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"tokenContract","nameLocation":"3919:13:6","nodeType":"VariableDeclaration","scope":564,"src":"3911:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":554,"name":"address","nodeType":"ElementaryTypeName","src":"3911:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":557,"mutability":"mutable","name":"tokenId","nameLocation":"3954:7:6","nodeType":"VariableDeclaration","scope":564,"src":"3946:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":556,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3868:103:6"},"scope":881,"src":"3805:220:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":597,"nodeType":"Block","src":"4235:263:6","statements":[{"assignments":[571,573,575],"declarations":[{"constant":false,"id":571,"mutability":"mutable","name":"chainId","nameLocation":"4267:7:6","nodeType":"VariableDeclaration","scope":597,"src":"4259:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":570,"name":"uint256","nodeType":"ElementaryTypeName","src":"4259:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":573,"mutability":"mutable","name":"tokenContract","nameLocation":"4296:13:6","nodeType":"VariableDeclaration","scope":597,"src":"4288:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":572,"name":"address","nodeType":"ElementaryTypeName","src":"4288:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":575,"mutability":"mutable","name":"tokenId","nameLocation":"4331:7:6","nodeType":"VariableDeclaration","scope":597,"src":"4323:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":574,"name":"uint256","nodeType":"ElementaryTypeName","src":"4323:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":579,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":576,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"4351:17:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$1082_$","typeString":"type(library ERC6551AccountLib)"}},"id":577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4369:5:6","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1059,"src":"4351:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4351:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4245:131:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":580,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"4391:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":581,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4402:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4408:7:6","memberName":"chainid","nodeType":"MemberAccess","src":"4402:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4391:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":589,"nodeType":"IfStatement","src":"4387:47:6","trueBody":{"expression":{"arguments":[{"hexValue":"30","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4432: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":585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4424:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":584,"name":"address","nodeType":"ElementaryTypeName","src":"4424:7:6","typeDescriptions":{}}},"id":587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4424:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":569,"id":588,"nodeType":"Return","src":"4417:17:6"}},{"expression":{"arguments":[{"id":594,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"4483:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":591,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"4460:13:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":590,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"4452:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$248_$","typeString":"type(contract IERC721)"}},"id":592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4452:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$248","typeString":"contract IERC721"}},"id":593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4475:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":181,"src":"4452:30:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4452:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":569,"id":596,"nodeType":"Return","src":"4445:46:6"}]},"documentation":{"id":565,"nodeType":"StructuredDocumentation","src":"4031:152:6","text":"@dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\n of the token has full permissions on the account."},"functionSelector":"8da5cb5b","id":598,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"4197:5:6","nodeType":"FunctionDefinition","parameters":{"id":566,"nodeType":"ParameterList","parameters":[],"src":"4202:2:6"},"returnParameters":{"id":569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":568,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":598,"src":"4226:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":567,"name":"address","nodeType":"ElementaryTypeName","src":"4226:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4225:9:6"},"scope":881,"src":"4188:310:6","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1008],"body":{"id":641,"nodeType":"Block","src":"4672:432:6","statements":[{"assignments":[null,609,611],"declarations":[null,{"constant":false,"id":609,"mutability":"mutable","name":"tokenContract","nameLocation":"4718:13:6","nodeType":"VariableDeclaration","scope":641,"src":"4710:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":608,"name":"address","nodeType":"ElementaryTypeName","src":"4710:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":611,"mutability":"mutable","name":"tokenId","nameLocation":"4753:7:6","nodeType":"VariableDeclaration","scope":641,"src":"4745:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":610,"name":"uint256","nodeType":"ElementaryTypeName","src":"4745:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":615,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":612,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"4773:17:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$1082_$","typeString":"type(library ERC6551AccountLib)"}},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4791:5:6","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1059,"src":"4773:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4773:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4682:116:6"},{"assignments":[617],"declarations":[{"constant":false,"id":617,"mutability":"mutable","name":"_owner","nameLocation":"4816:6:6","nodeType":"VariableDeclaration","scope":641,"src":"4808:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":616,"name":"address","nodeType":"ElementaryTypeName","src":"4808:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":624,"initialValue":{"arguments":[{"id":622,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"4856:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":619,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"4833:13:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":618,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"4825:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$248_$","typeString":"type(contract IERC721)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4825:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$248","typeString":"contract IERC721"}},"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4848:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":181,"src":"4825:30:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4825:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4808:56:6"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":625,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":601,"src":"4912:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":626,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"4922:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4912:16:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":630,"nodeType":"IfStatement","src":"4908:39:6","trueBody":{"expression":{"hexValue":"30783532336533323630","id":628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4937:10:6","typeDescriptions":{"typeIdentifier":"t_rational_1379807840_by_1","typeString":"int_const 1379807840"},"value":"0x523e3260"},"functionReturnParameters":607,"id":629,"nodeType":"Return","src":"4930:17:6"}},{"condition":{"baseExpression":{"baseExpression":{"id":631,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"5023:11:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":633,"indexExpression":{"id":632,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"5035:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5023:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":635,"indexExpression":{"id":634,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":601,"src":"5043:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5023:27:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":638,"nodeType":"IfStatement","src":"5019:50:6","trueBody":{"expression":{"hexValue":"30783532336533323630","id":636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5059:10:6","typeDescriptions":{"typeIdentifier":"t_rational_1379807840_by_1","typeString":"int_const 1379807840"},"value":"0x523e3260"},"functionReturnParameters":607,"id":637,"nodeType":"Return","src":"5052:17:6"}},{"expression":{"hexValue":"30786666666666666666","id":639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5087:10:6","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"functionReturnParameters":607,"id":640,"nodeType":"Return","src":"5080:17:6"}]},"documentation":{"id":599,"nodeType":"StructuredDocumentation","src":"4504:60:6","text":"@dev Returns the authorization status for a given caller"},"functionSelector":"523e3260","id":642,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSigner","nameLocation":"4578:13:6","nodeType":"FunctionDefinition","parameters":{"id":604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":601,"mutability":"mutable","name":"signer","nameLocation":"4600:6:6","nodeType":"VariableDeclaration","scope":642,"src":"4592:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":600,"name":"address","nodeType":"ElementaryTypeName","src":"4592:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":603,"mutability":"mutable","name":"context","nameLocation":"4623:7:6","nodeType":"VariableDeclaration","scope":642,"src":"4608:22:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":602,"name":"bytes","nodeType":"ElementaryTypeName","src":"4608:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4591:40:6"},"returnParameters":{"id":607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":606,"mutability":"mutable","name":"magicValue","nameLocation":"4660:10:6","nodeType":"VariableDeclaration","scope":642,"src":"4653:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":605,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4653:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4652:19:6"},"scope":881,"src":"4569:535:6","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[277],"body":{"id":680,"nodeType":"Block","src":"5361:273:6","statements":[{"assignments":[652],"declarations":[{"constant":false,"id":652,"mutability":"mutable","name":"defaultSupport","nameLocation":"5376:14:6","nodeType":"VariableDeclaration","scope":680,"src":"5371:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":651,"name":"bool","nodeType":"ElementaryTypeName","src":"5371:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":673,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":653,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"5393:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":655,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5413:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$278_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$278_$","typeString":"type(contract IERC165)"}],"id":654,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5408:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5408:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$278","typeString":"type(contract IERC165)"}},"id":657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5422:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"5408:25:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5393:40:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":659,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"5449:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":661,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"5469:16:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$54_$","typeString":"type(contract IERC1155Receiver)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$54_$","typeString":"type(contract IERC1155Receiver)"}],"id":660,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5464:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5464:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1155Receiver_$54","typeString":"type(contract IERC1155Receiver)"}},"id":663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5487:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"5464:34:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5449:49:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5393:105:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":666,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"5514:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":668,"name":"IERC6551Account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1009,"src":"5534:15:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$1009_$","typeString":"type(contract IERC6551Account)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$1009_$","typeString":"type(contract IERC6551Account)"}],"id":667,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5529:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5529:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC6551Account_$1009","typeString":"type(contract IERC6551Account)"}},"id":670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5551:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"5529:33:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5514:48:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5393:169:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5371:191:6"},{"condition":{"id":674,"name":"defaultSupport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"5577:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":677,"nodeType":"IfStatement","src":"5573:31:6","trueBody":{"expression":{"hexValue":"74727565","id":675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5600:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":650,"id":676,"nodeType":"Return","src":"5593:11:6"}},{"expression":{"hexValue":"66616c7365","id":678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5622:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":650,"id":679,"nodeType":"Return","src":"5615:12:6"}]},"documentation":{"id":643,"nodeType":"StructuredDocumentation","src":"5110:126:6","text":"@dev Returns true if a given interfaceId is supported by this account. This method can be\n extended by an override."},"functionSelector":"01ffc9a7","id":681,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"5250:17:6","nodeType":"FunctionDefinition","overrides":{"id":647,"nodeType":"OverrideSpecifier","overrides":[],"src":"5325:8:6"},"parameters":{"id":646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":645,"mutability":"mutable","name":"interfaceId","nameLocation":"5275:11:6","nodeType":"VariableDeclaration","scope":681,"src":"5268:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":644,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5268:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5267:20:6"},"returnParameters":{"id":650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":681,"src":"5351:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":648,"name":"bool","nodeType":"ElementaryTypeName","src":"5351:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5350:6:6"},"scope":881,"src":"5241:393:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[265],"body":{"id":727,"nodeType":"Block","src":"5938:367:6","statements":[{"assignments":[697,699,701],"declarations":[{"constant":false,"id":697,"mutability":"mutable","name":"chainId","nameLocation":"5970:7:6","nodeType":"VariableDeclaration","scope":727,"src":"5962:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":696,"name":"uint256","nodeType":"ElementaryTypeName","src":"5962:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":699,"mutability":"mutable","name":"tokenContract","nameLocation":"5999:13:6","nodeType":"VariableDeclaration","scope":727,"src":"5991:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":698,"name":"address","nodeType":"ElementaryTypeName","src":"5991:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":701,"mutability":"mutable","name":"tokenId","nameLocation":"6034:7:6","nodeType":"VariableDeclaration","scope":727,"src":"6026:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":700,"name":"uint256","nodeType":"ElementaryTypeName","src":"6026:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":705,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":702,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"6054:17:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$1082_$","typeString":"type(library ERC6551AccountLib)"}},"id":703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6072:5:6","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1059,"src":"6054:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6054:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5948:131:6"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":706,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"6107:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":707,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6118:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6124:7:6","memberName":"chainid","nodeType":"MemberAccess","src":"6118:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6107:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":710,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"6147:13:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":711,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6164:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6168:6:6","memberName":"sender","nodeType":"MemberAccess","src":"6164:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6147:27:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6107:67:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":715,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"6190:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":716,"name":"receivedTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"6201:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6190:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6107:109:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":722,"nodeType":"IfStatement","src":"6090:160:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":719,"name":"OwnershipCycle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"6234:14:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6234:16:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":721,"nodeType":"RevertStatement","src":"6227:23:6"}},{"expression":{"expression":{"expression":{"id":723,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6268:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Account_$881","typeString":"contract Account"}},"id":724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6273:16:6","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":728,"src":"6268:21:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) view external returns (bytes4)"}},"id":725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6290:8:6","memberName":"selector","nodeType":"MemberAccess","src":"6268:30:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":695,"id":726,"nodeType":"Return","src":"6261:37:6"}]},"documentation":{"id":682,"nodeType":"StructuredDocumentation","src":"5640:134:6","text":"@dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\n This function can be overriden."},"functionSelector":"150b7a02","id":728,"implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"5788:16:6","nodeType":"FunctionDefinition","overrides":{"id":692,"nodeType":"OverrideSpecifier","overrides":[],"src":"5912:8:6"},"parameters":{"id":691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":684,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":728,"src":"5814:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":683,"name":"address","nodeType":"ElementaryTypeName","src":"5814:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":686,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":728,"src":"5831:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":685,"name":"address","nodeType":"ElementaryTypeName","src":"5831:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":688,"mutability":"mutable","name":"receivedTokenId","nameLocation":"5856:15:6","nodeType":"VariableDeclaration","scope":728,"src":"5848:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":687,"name":"uint256","nodeType":"ElementaryTypeName","src":"5848:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":690,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":728,"src":"5881:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":689,"name":"bytes","nodeType":"ElementaryTypeName","src":"5881:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5804:95:6"},"returnParameters":{"id":695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":694,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":728,"src":"5930:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":693,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5930:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5929:8:6"},"scope":881,"src":"5779:526:6","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[35],"body":{"id":749,"nodeType":"Block","src":"6556:55:6","statements":[{"expression":{"expression":{"expression":{"id":745,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6573:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Account_$881","typeString":"contract Account"}},"id":746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6578:17:6","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":750,"src":"6573:22:6","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,uint256,bytes memory) pure external returns (bytes4)"}},"id":747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6596:8:6","memberName":"selector","nodeType":"MemberAccess","src":"6573:31:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":744,"id":748,"nodeType":"Return","src":"6566:38:6"}]},"documentation":{"id":729,"nodeType":"StructuredDocumentation","src":"6311:79:6","text":"@dev Allows ERC-1155 tokens to be received. This function can be overriden."},"functionSelector":"f23a6e61","id":750,"implemented":true,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"6404:17:6","nodeType":"FunctionDefinition","overrides":{"id":741,"nodeType":"OverrideSpecifier","overrides":[],"src":"6530:8:6"},"parameters":{"id":740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":750,"src":"6431:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":730,"name":"address","nodeType":"ElementaryTypeName","src":"6431:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":733,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":750,"src":"6448:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":732,"name":"address","nodeType":"ElementaryTypeName","src":"6448:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":735,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":750,"src":"6465:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":734,"name":"uint256","nodeType":"ElementaryTypeName","src":"6465:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":750,"src":"6482:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":736,"name":"uint256","nodeType":"ElementaryTypeName","src":"6482:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":739,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":750,"src":"6499:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":738,"name":"bytes","nodeType":"ElementaryTypeName","src":"6499:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6421:96:6"},"returnParameters":{"id":744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":750,"src":"6548:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":742,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6548:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6547:8:6"},"scope":881,"src":"6395:216:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[53],"body":{"id":773,"nodeType":"Block","src":"6892:60:6","statements":[{"expression":{"expression":{"expression":{"id":769,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6909:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Account_$881","typeString":"contract Account"}},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6914:22:6","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":774,"src":"6909:27:6","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory) pure external returns (bytes4)"}},"id":771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6937:8:6","memberName":"selector","nodeType":"MemberAccess","src":"6909:36:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":768,"id":772,"nodeType":"Return","src":"6902:43:6"}]},"documentation":{"id":751,"nodeType":"StructuredDocumentation","src":"6617:86:6","text":"@dev Allows ERC-1155 token batches to be received. This function can be overriden."},"functionSelector":"bc197c81","id":774,"implemented":true,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"6717:22:6","nodeType":"FunctionDefinition","overrides":{"id":765,"nodeType":"OverrideSpecifier","overrides":[],"src":"6866:8:6"},"parameters":{"id":764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"6749:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":752,"name":"address","nodeType":"ElementaryTypeName","src":"6749:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":755,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"6766:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":754,"name":"address","nodeType":"ElementaryTypeName","src":"6766:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":758,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"6783:16:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":756,"name":"uint256","nodeType":"ElementaryTypeName","src":"6783:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":757,"nodeType":"ArrayTypeName","src":"6783:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"6809:16:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":759,"name":"uint256","nodeType":"ElementaryTypeName","src":"6809:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":760,"nodeType":"ArrayTypeName","src":"6809:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"6835:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":762,"name":"bytes","nodeType":"ElementaryTypeName","src":"6835:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6739:114:6"},"returnParameters":{"id":768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"6884:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":766,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6884:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6883:8:6"},"scope":881,"src":"6708:244:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":805,"nodeType":"Block","src":"7129:213:6","statements":[{"assignments":[787],"declarations":[{"constant":false,"id":787,"mutability":"mutable","name":"success","nameLocation":"7144:7:6","nodeType":"VariableDeclaration","scope":805,"src":"7139:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":786,"name":"bool","nodeType":"ElementaryTypeName","src":"7139:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":788,"nodeType":"VariableDeclarationStatement","src":"7139:12:6"},{"expression":{"id":798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":789,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"7162:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":790,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"7171:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":791,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7161:17:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":796,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"7203: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":792,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":777,"src":"7181:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7184:4:6","memberName":"call","nodeType":"MemberAccess","src":"7181: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":795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":794,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"7196:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"7181: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":797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7181:27:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"7161:47:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":799,"nodeType":"ExpressionStatement","src":"7161:47:6"},{"condition":{"id":801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7223:8:6","subExpression":{"id":800,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"7224:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":804,"nodeType":"IfStatement","src":"7219:117:6","trueBody":{"id":803,"nodeType":"Block","src":"7233:103:6","statements":[{"AST":{"nodeType":"YulBlock","src":"7256:70:6","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"7285:6:6"},{"kind":"number","nodeType":"YulLiteral","src":"7293:2:6","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7281:3:6"},"nodeType":"YulFunctionCall","src":"7281:15:6"},{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"7304:6:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7298:5:6"},"nodeType":"YulFunctionCall","src":"7298:13:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7274:6:6"},"nodeType":"YulFunctionCall","src":"7274:38:6"},"nodeType":"YulExpressionStatement","src":"7274:38:6"}]},"evmVersion":"london","externalReferences":[{"declaration":784,"isOffset":false,"isSlot":false,"src":"7285:6:6","valueSize":1},{"declaration":784,"isOffset":false,"isSlot":false,"src":"7304:6:6","valueSize":1}],"id":802,"nodeType":"InlineAssembly","src":"7247:79:6"}]}}]},"documentation":{"id":775,"nodeType":"StructuredDocumentation","src":"6958:34:6","text":"@dev Executes a low-level call"},"id":806,"implemented":true,"kind":"function","modifiers":[],"name":"_call","nameLocation":"7006:5:6","nodeType":"FunctionDefinition","parameters":{"id":782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":777,"mutability":"mutable","name":"to","nameLocation":"7029:2:6","nodeType":"VariableDeclaration","scope":806,"src":"7021:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":776,"name":"address","nodeType":"ElementaryTypeName","src":"7021:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":779,"mutability":"mutable","name":"value","nameLocation":"7049:5:6","nodeType":"VariableDeclaration","scope":806,"src":"7041:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":778,"name":"uint256","nodeType":"ElementaryTypeName","src":"7041:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":781,"mutability":"mutable","name":"data","nameLocation":"7079:4:6","nodeType":"VariableDeclaration","scope":806,"src":"7064:19:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":780,"name":"bytes","nodeType":"ElementaryTypeName","src":"7064:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7011:78:6"},"returnParameters":{"id":785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"result","nameLocation":"7121:6:6","nodeType":"VariableDeclaration","scope":806,"src":"7108:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":783,"name":"bytes","nodeType":"ElementaryTypeName","src":"7108:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7107:21:6"},"scope":881,"src":"6997:345:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":833,"nodeType":"Block","src":"7520:205:6","statements":[{"assignments":[817],"declarations":[{"constant":false,"id":817,"mutability":"mutable","name":"success","nameLocation":"7535:7:6","nodeType":"VariableDeclaration","scope":833,"src":"7530:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":816,"name":"bool","nodeType":"ElementaryTypeName","src":"7530:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":818,"nodeType":"VariableDeclarationStatement","src":"7530:12:6"},{"expression":{"id":826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":819,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"7553:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":820,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":814,"src":"7562:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":821,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7552:17:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":824,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"7586:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":822,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":809,"src":"7572:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7575:10:6","memberName":"staticcall","nodeType":"MemberAccess","src":"7572:13:6","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":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7572:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"7552:39:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":827,"nodeType":"ExpressionStatement","src":"7552:39:6"},{"condition":{"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7606:8:6","subExpression":{"id":828,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":817,"src":"7607:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":832,"nodeType":"IfStatement","src":"7602:117:6","trueBody":{"id":831,"nodeType":"Block","src":"7616:103:6","statements":[{"AST":{"nodeType":"YulBlock","src":"7639:70:6","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"7668:6:6"},{"kind":"number","nodeType":"YulLiteral","src":"7676:2:6","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7664:3:6"},"nodeType":"YulFunctionCall","src":"7664:15:6"},{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"7687:6:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7681:5:6"},"nodeType":"YulFunctionCall","src":"7681:13:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7657:6:6"},"nodeType":"YulFunctionCall","src":"7657:38:6"},"nodeType":"YulExpressionStatement","src":"7657:38:6"}]},"evmVersion":"london","externalReferences":[{"declaration":814,"isOffset":false,"isSlot":false,"src":"7668:6:6","valueSize":1},{"declaration":814,"isOffset":false,"isSlot":false,"src":"7687:6:6","valueSize":1}],"id":830,"nodeType":"InlineAssembly","src":"7630:79:6"}]}}]},"documentation":{"id":807,"nodeType":"StructuredDocumentation","src":"7348:41:6","text":"@dev Executes a low-level static call"},"id":834,"implemented":true,"kind":"function","modifiers":[],"name":"_callStatic","nameLocation":"7403:11:6","nodeType":"FunctionDefinition","parameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":809,"mutability":"mutable","name":"to","nameLocation":"7423:2:6","nodeType":"VariableDeclaration","scope":834,"src":"7415:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":808,"name":"address","nodeType":"ElementaryTypeName","src":"7415:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":811,"mutability":"mutable","name":"data","nameLocation":"7442:4:6","nodeType":"VariableDeclaration","scope":834,"src":"7427:19:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":810,"name":"bytes","nodeType":"ElementaryTypeName","src":"7427:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7414:33:6"},"returnParameters":{"id":815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":814,"mutability":"mutable","name":"result","nameLocation":"7508:6:6","nodeType":"VariableDeclaration","scope":834,"src":"7495:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":813,"name":"bytes","nodeType":"ElementaryTypeName","src":"7495:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7494:21:6"},"scope":881,"src":"7394:331:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":856,"nodeType":"Block","src":"7800:190:6","statements":[{"assignments":[842],"declarations":[{"constant":false,"id":842,"mutability":"mutable","name":"signature","nameLocation":"7817:9:6","nodeType":"VariableDeclaration","scope":856,"src":"7810:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":841,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7810:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":846,"initialValue":{"arguments":[{"id":844,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":836,"src":"7846:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":843,"name":"parseFirst4Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":872,"src":"7829:16:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7829:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"7810:42:6"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":847,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":842,"src":"7900:9:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783039356561376233","id":848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7913:10:6","typeDescriptions":{"typeIdentifier":"t_rational_157198259_by_1","typeString":"int_const 157198259"},"value":"0x095ea7b3"},"src":"7900:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":853,"nodeType":"IfStatement","src":"7896:66:6","trueBody":{"id":852,"nodeType":"Block","src":"7925:37:6","statements":[{"expression":{"hexValue":"66616c7365","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7946:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":840,"id":851,"nodeType":"Return","src":"7939:12:6"}]}},{"expression":{"hexValue":"74727565","id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7979:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":840,"id":855,"nodeType":"Return","src":"7972:11:6"}]},"id":857,"implemented":true,"kind":"function","modifiers":[],"name":"allowedMethod","nameLocation":"7740:13:6","nodeType":"FunctionDefinition","parameters":{"id":837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":836,"mutability":"mutable","name":"_data","nameLocation":"7769:5:6","nodeType":"VariableDeclaration","scope":857,"src":"7754:20:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":835,"name":"bytes","nodeType":"ElementaryTypeName","src":"7754:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7753:22:6"},"returnParameters":{"id":840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":857,"src":"7794:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":838,"name":"bool","nodeType":"ElementaryTypeName","src":"7794:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7793:6:6"},"scope":881,"src":"7731:259:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":871,"nodeType":"Block","src":"8073:41:6","statements":[{"expression":{"arguments":[{"baseExpression":{"id":866,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"8097:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"34","id":867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8104:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"8097:9:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8090:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":864,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8090:6:6","typeDescriptions":{}}},"id":869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8090:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":863,"id":870,"nodeType":"Return","src":"8083:24:6"}]},"functionSelector":"d0ad2535","id":872,"implemented":true,"kind":"function","modifiers":[],"name":"parseFirst4Bytes","nameLocation":"8005:16:6","nodeType":"FunctionDefinition","parameters":{"id":860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":859,"mutability":"mutable","name":"_data","nameLocation":"8037:5:6","nodeType":"VariableDeclaration","scope":872,"src":"8022:20:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":858,"name":"bytes","nodeType":"ElementaryTypeName","src":"8022:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8021:22:6"},"returnParameters":{"id":863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":862,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":872,"src":"8065:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":861,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8065:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"8064:8:6"},"scope":881,"src":"7996:118:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[998],"body":{"id":879,"nodeType":"Block","src":"8169:25:6","statements":[{"expression":{"hexValue":"31","id":877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8186:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":876,"id":878,"nodeType":"Return","src":"8179:8:6"}]},"functionSelector":"c19d93fb","id":880,"implemented":true,"kind":"function","modifiers":[],"name":"state","nameLocation":"8129:5:6","nodeType":"FunctionDefinition","parameters":{"id":873,"nodeType":"ParameterList","parameters":[],"src":"8134:2:6"},"returnParameters":{"id":876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":880,"src":"8160:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":874,"name":"uint256","nodeType":"ElementaryTypeName","src":"8160:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8159:9:6"},"scope":881,"src":"8120:74:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":882,"src":"741:7455:6","usedErrors":[290,292,294,296,300]}],"src":"39:8158:6"},"id":6},"contracts/ChargedParticlesAccount.sol":{"ast":{"absolutePath":"contracts/ChargedParticlesAccount.sol","exportedSymbols":{"Account":[881],"AccountLocked":[294],"ChargedParticlesAccount":[975],"ERC6551AccountLib":[1082],"ExceedsMaxLockTime":[296],"IERC1155Receiver":[54],"IERC1271":[13],"IERC165":[278],"IERC20":[132],"IERC6551Account":[1009],"IERC6551Executable":[1027],"IERC721":[248],"IERC721Receiver":[266],"InvalidInput":[292],"NotAuthorized":[290],"OwnershipCycle":[300],"UntrustedImplementation":[298]},"id":976,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":883,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:7"},{"absolutePath":"contracts/Account.sol","file":"./Account.sol","id":884,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":976,"sourceUnit":882,"src":"65:23:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":885,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":976,"sourceUnit":249,"src":"89:58:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":886,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":976,"sourceUnit":133,"src":"148:56:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":887,"name":"Account","nameLocations":["242:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":881,"src":"242:7:7"},"id":888,"nodeType":"InheritanceSpecifier","src":"242:7:7"}],"canonicalName":"ChargedParticlesAccount","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":975,"linearizedBaseContracts":[975,881,54,266,1027,1009,278],"name":"ChargedParticlesAccount","nameLocation":"215:23:7","nodeType":"ContractDefinition","nodes":[{"body":{"id":910,"nodeType":"Block","src":"386:171:7","statements":[{"expression":{"arguments":[{"expression":{"id":901,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"479:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"483:6:7","memberName":"sender","nodeType":"MemberAccess","src":"479:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":905,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"511:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$975","typeString":"contract ChargedParticlesAccount"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$975","typeString":"contract ChargedParticlesAccount"}],"id":904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"503:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":903,"name":"address","nodeType":"ElementaryTypeName","src":"503:7:7","typeDescriptions":{}}},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"503:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":907,"name":"nftTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":892,"src":"530:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":898,"name":"nftTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"432:15:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":897,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"424:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$248_$","typeString":"type(contract IERC721)"}},"id":899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"424:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$248","typeString":"contract IERC721"}},"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"449:16:7","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":203,"src":"424:41:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"424:126:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":909,"nodeType":"ExpressionStatement","src":"424:126:7"}]},"functionSelector":"a737a299","id":911,"implemented":true,"kind":"function","modifiers":[],"name":"covalentBond","nameLocation":"265:12:7","nodeType":"FunctionDefinition","parameters":{"id":895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"mutability":"mutable","name":"nftTokenAddress","nameLocation":"295:15:7","nodeType":"VariableDeclaration","scope":911,"src":"287:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":889,"name":"address","nodeType":"ElementaryTypeName","src":"287:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":892,"mutability":"mutable","name":"nftTokenId","nameLocation":"328:10:7","nodeType":"VariableDeclaration","scope":911,"src":"320:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":891,"name":"uint256","nodeType":"ElementaryTypeName","src":"320:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":894,"mutability":"mutable","name":"nftTokenAmount","nameLocation":"356:14:7","nodeType":"VariableDeclaration","scope":911,"src":"348:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":893,"name":"uint256","nodeType":"ElementaryTypeName","src":"348:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"277:99:7"},"returnParameters":{"id":896,"nodeType":"ParameterList","parameters":[],"src":"386:0:7"},"scope":975,"src":"256:301:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":934,"nodeType":"Block","src":"724:95:7","statements":[{"expression":{"arguments":[{"arguments":[{"id":928,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"784:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$975","typeString":"contract ChargedParticlesAccount"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$975","typeString":"contract ChargedParticlesAccount"}],"id":927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"776:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":926,"name":"address","nodeType":"ElementaryTypeName","src":"776:7:7","typeDescriptions":{}}},"id":929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"776:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":930,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"791:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":931,"name":"nftTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"801:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":923,"name":"nftTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":915,"src":"742:15:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":922,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"734:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$248_$","typeString":"type(contract IERC721)"}},"id":924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"734:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$248","typeString":"contract IERC721"}},"id":925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"759:16:7","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":203,"src":"734:41:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"734:78:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":933,"nodeType":"ExpressionStatement","src":"734:78:7"}]},"functionSelector":"6b764e1b","id":935,"implemented":true,"kind":"function","modifiers":[],"name":"breakCovalentBond","nameLocation":"572:17:7","nodeType":"FunctionDefinition","parameters":{"id":920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":913,"mutability":"mutable","name":"receiver","nameLocation":"607:8:7","nodeType":"VariableDeclaration","scope":935,"src":"599:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":912,"name":"address","nodeType":"ElementaryTypeName","src":"599:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":915,"mutability":"mutable","name":"nftTokenAddress","nameLocation":"633:15:7","nodeType":"VariableDeclaration","scope":935,"src":"625:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":914,"name":"address","nodeType":"ElementaryTypeName","src":"625:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":917,"mutability":"mutable","name":"nftTokenId","nameLocation":"666:10:7","nodeType":"VariableDeclaration","scope":935,"src":"658:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":916,"name":"uint256","nodeType":"ElementaryTypeName","src":"658:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":919,"mutability":"mutable","name":"nftTokenAmount","nameLocation":"694:14:7","nodeType":"VariableDeclaration","scope":935,"src":"686:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":918,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"589:125:7"},"returnParameters":{"id":921,"nodeType":"ParameterList","parameters":[],"src":"724:0:7"},"scope":975,"src":"563:256:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":955,"nodeType":"Block","src":"923:88:7","statements":[{"expression":{"arguments":[{"expression":{"id":946,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"965:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"969:6:7","memberName":"sender","nodeType":"MemberAccess","src":"965:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":950,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"985:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$975","typeString":"contract ChargedParticlesAccount"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$975","typeString":"contract ChargedParticlesAccount"}],"id":949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"977:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":948,"name":"address","nodeType":"ElementaryTypeName","src":"977:7:7","typeDescriptions":{}}},"id":951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"977:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":952,"name":"assetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":939,"src":"992:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":943,"name":"assetToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":937,"src":"940:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":942,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"933:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$132_$","typeString":"type(contract IERC20)"}},"id":944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$132","typeString":"contract IERC20"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"952:12:7","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":131,"src":"933:31:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:71:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":954,"nodeType":"ExpressionStatement","src":"933:71:7"}]},"functionSelector":"a65e78f1","id":956,"implemented":true,"kind":"function","modifiers":[],"name":"energizeParticle","nameLocation":"834:16:7","nodeType":"FunctionDefinition","parameters":{"id":940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":937,"mutability":"mutable","name":"assetToken","nameLocation":"868:10:7","nodeType":"VariableDeclaration","scope":956,"src":"860:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"860:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":939,"mutability":"mutable","name":"assetAmount","nameLocation":"896:11:7","nodeType":"VariableDeclaration","scope":956,"src":"888:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":938,"name":"uint256","nodeType":"ElementaryTypeName","src":"888:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"850:63:7"},"returnParameters":{"id":941,"nodeType":"ParameterList","parameters":[],"src":"923:0:7"},"scope":975,"src":"825:186:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":973,"nodeType":"Block","src":"1134:65:7","statements":[{"expression":{"arguments":[{"id":969,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":958,"src":"1172:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":970,"name":"assetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"1182:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":966,"name":"assetToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"1151:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":965,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"1144:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$132_$","typeString":"type(contract IERC20)"}},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1144:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$132","typeString":"contract IERC20"}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1163:8:7","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":99,"src":"1144:27:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1144:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":972,"nodeType":"ExpressionStatement","src":"1144:50:7"}]},"functionSelector":"ca1cc220","id":974,"implemented":true,"kind":"function","modifiers":[],"name":"dischargeParticle","nameLocation":"1026:17:7","nodeType":"FunctionDefinition","parameters":{"id":963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"receiver","nameLocation":"1059:8:7","nodeType":"VariableDeclaration","scope":974,"src":"1051:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":957,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":960,"mutability":"mutable","name":"assetToken","nameLocation":"1083:10:7","nodeType":"VariableDeclaration","scope":974,"src":"1075:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":959,"name":"address","nodeType":"ElementaryTypeName","src":"1075:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":962,"mutability":"mutable","name":"assetAmount","nameLocation":"1109:11:7","nodeType":"VariableDeclaration","scope":974,"src":"1101:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":961,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1043:81:7"},"returnParameters":{"id":964,"nodeType":"ParameterList","parameters":[],"src":"1134:0:7"},"scope":975,"src":"1017:182:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":976,"src":"206:995:7","usedErrors":[290,292,294,296,300]}],"src":"39:1163:7"},"id":7},"contracts/interfaces/IERC6551Account.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Account.sol","exportedSymbols":{"IERC6551Account":[1009]},"id":1010,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":977,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Account","contractDependencies":[],"contractKind":"interface","documentation":{"id":978,"nodeType":"StructuredDocumentation","src":"65:67:8","text":"@dev the ERC-165 identifier for this interface is `0x6faff5f1`"},"fullyImplemented":false,"id":1009,"linearizedBaseContracts":[1009],"name":"IERC6551Account","nameLocation":"142:15:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":979,"nodeType":"StructuredDocumentation","src":"164:236:8","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":982,"implemented":false,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":980,"nodeType":"ParameterList","parameters":[],"src":"412:2:8"},"returnParameters":{"id":981,"nodeType":"ParameterList","parameters":[],"src":"431:0:8"},"scope":1009,"src":"405:27:8","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":983,"nodeType":"StructuredDocumentation","src":"438:387:8","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 chain 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":992,"implemented":false,"kind":"function","modifiers":[],"name":"token","nameLocation":"839:5:8","nodeType":"FunctionDefinition","parameters":{"id":984,"nodeType":"ParameterList","parameters":[],"src":"844:2:8"},"returnParameters":{"id":991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":986,"mutability":"mutable","name":"chainId","nameLocation":"902:7:8","nodeType":"VariableDeclaration","scope":992,"src":"894:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":985,"name":"uint256","nodeType":"ElementaryTypeName","src":"894:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":988,"mutability":"mutable","name":"tokenContract","nameLocation":"919:13:8","nodeType":"VariableDeclaration","scope":992,"src":"911:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":987,"name":"address","nodeType":"ElementaryTypeName","src":"911:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":990,"mutability":"mutable","name":"tokenId","nameLocation":"942:7:8","nodeType":"VariableDeclaration","scope":992,"src":"934:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"934:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"893:57:8"},"scope":1009,"src":"830:121:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":993,"nodeType":"StructuredDocumentation","src":"957:148:8","text":" @dev Returns a value that SHOULD be modified each time the account changes state.\n @return The current account state"},"functionSelector":"c19d93fb","id":998,"implemented":false,"kind":"function","modifiers":[],"name":"state","nameLocation":"1119:5:8","nodeType":"FunctionDefinition","parameters":{"id":994,"nodeType":"ParameterList","parameters":[],"src":"1124:2:8"},"returnParameters":{"id":997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":996,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":998,"src":"1150:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":995,"name":"uint256","nodeType":"ElementaryTypeName","src":"1150:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1149:9:8"},"scope":1009,"src":"1110:49:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":999,"nodeType":"StructuredDocumentation","src":"1165:773:8","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":1008,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSigner","nameLocation":"1952:13:8","nodeType":"FunctionDefinition","parameters":{"id":1004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1001,"mutability":"mutable","name":"signer","nameLocation":"1974:6:8","nodeType":"VariableDeclaration","scope":1008,"src":"1966:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1000,"name":"address","nodeType":"ElementaryTypeName","src":"1966:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1003,"mutability":"mutable","name":"context","nameLocation":"1997:7:8","nodeType":"VariableDeclaration","scope":1008,"src":"1982:22:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1002,"name":"bytes","nodeType":"ElementaryTypeName","src":"1982:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1965:40:8"},"returnParameters":{"id":1007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1006,"mutability":"mutable","name":"magicValue","nameLocation":"2060:10:8","nodeType":"VariableDeclaration","scope":1008,"src":"2053:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1005,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2053:6:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2052:19:8"},"scope":1009,"src":"1943:129:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1010,"src":"132:1942:8","usedErrors":[]}],"src":"39:2037:8"},"id":8},"contracts/interfaces/IERC6551Executable.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Executable.sol","exportedSymbols":{"IERC6551Executable":[1027]},"id":1028,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1011,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:9"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Executable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1012,"nodeType":"StructuredDocumentation","src":"65:67:9","text":"@dev the ERC-165 identifier for this interface is `0x51945447`"},"fullyImplemented":false,"id":1027,"linearizedBaseContracts":[1027],"name":"IERC6551Executable","nameLocation":"142:18:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1013,"nodeType":"StructuredDocumentation","src":"167:815:9","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":1026,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"996:7:9","nodeType":"FunctionDefinition","parameters":{"id":1022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1015,"mutability":"mutable","name":"to","nameLocation":"1012:2:9","nodeType":"VariableDeclaration","scope":1026,"src":"1004:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1014,"name":"address","nodeType":"ElementaryTypeName","src":"1004:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1017,"mutability":"mutable","name":"value","nameLocation":"1024:5:9","nodeType":"VariableDeclaration","scope":1026,"src":"1016:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1016,"name":"uint256","nodeType":"ElementaryTypeName","src":"1016:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1019,"mutability":"mutable","name":"data","nameLocation":"1046:4:9","nodeType":"VariableDeclaration","scope":1026,"src":"1031:19:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1018,"name":"bytes","nodeType":"ElementaryTypeName","src":"1031:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1021,"mutability":"mutable","name":"operation","nameLocation":"1058:9:9","nodeType":"VariableDeclaration","scope":1026,"src":"1052:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1020,"name":"uint8","nodeType":"ElementaryTypeName","src":"1052:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1003:65:9"},"returnParameters":{"id":1025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1024,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1026,"src":"1119:12:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1023,"name":"bytes","nodeType":"ElementaryTypeName","src":"1119:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1118:14:9"},"scope":1027,"src":"987:146:9","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":1028,"src":"132:1003:9","usedErrors":[]}],"src":"39:1097:9"},"id":9},"contracts/lib/ERC6551AccountLib.sol":{"ast":{"absolutePath":"contracts/lib/ERC6551AccountLib.sol","exportedSymbols":{"ERC6551AccountLib":[1082]},"id":1083,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1029,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:10"},{"abstract":false,"baseContracts":[],"canonicalName":"ERC6551AccountLib","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1082,"linearizedBaseContracts":[1082],"name":"ERC6551AccountLib","nameLocation":"66:17:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":1058,"nodeType":"Block","src":"231:265:10","statements":[{"assignments":[1039],"declarations":[{"constant":false,"id":1039,"mutability":"mutable","name":"footer","nameLocation":"254:6:10","nodeType":"VariableDeclaration","scope":1058,"src":"241:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1038,"name":"bytes","nodeType":"ElementaryTypeName","src":"241:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1044,"initialValue":{"arguments":[{"hexValue":"30783630","id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"273:4:10","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"}],"id":1041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"263:9:10","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1040,"name":"bytes","nodeType":"ElementaryTypeName","src":"267:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"263:15:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"241:37:10"},{"AST":{"nodeType":"YulBlock","src":"298:127:10","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"address","nodeType":"YulIdentifier","src":"374:7:10"},"nodeType":"YulFunctionCall","src":"374:9:10"},{"arguments":[{"name":"footer","nodeType":"YulIdentifier","src":"389:6:10"},{"kind":"number","nodeType":"YulLiteral","src":"397:4:10","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"385:3:10"},"nodeType":"YulFunctionCall","src":"385:17:10"},{"kind":"number","nodeType":"YulLiteral","src":"404:4:10","type":"","value":"0x4d"},{"kind":"number","nodeType":"YulLiteral","src":"410:4:10","type":"","value":"0xad"}],"functionName":{"name":"extcodecopy","nodeType":"YulIdentifier","src":"362:11:10"},"nodeType":"YulFunctionCall","src":"362:53:10"},"nodeType":"YulExpressionStatement","src":"362:53:10"}]},"evmVersion":"london","externalReferences":[{"declaration":1039,"isOffset":false,"isSlot":false,"src":"389:6:10","valueSize":1}],"id":1045,"nodeType":"InlineAssembly","src":"289:136:10"},{"expression":{"arguments":[{"id":1048,"name":"footer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1039,"src":"453:6:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"462:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1049,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:10","typeDescriptions":{}}},{"id":1052,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"471:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1051,"name":"address","nodeType":"ElementaryTypeName","src":"471:7:10","typeDescriptions":{}}},{"id":1054,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"480:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1053,"name":"uint256","nodeType":"ElementaryTypeName","src":"480:7:10","typeDescriptions":{}}}],"id":1055,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"461:27:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(address),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(address),type(uint256))"}],"expression":{"id":1046,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"442:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"446:6:10","memberName":"decode","nodeType":"MemberAccess","src":"442:10:10","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"442:47:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_payable_$_t_uint256_$","typeString":"tuple(uint256,address payable,uint256)"}},"functionReturnParameters":1037,"id":1057,"nodeType":"Return","src":"435:54:10"}]},"id":1059,"implemented":true,"kind":"function","modifiers":[],"name":"token","nameLocation":"99:5:10","nodeType":"FunctionDefinition","parameters":{"id":1030,"nodeType":"ParameterList","parameters":[],"src":"104:2:10"},"returnParameters":{"id":1037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1059,"src":"167:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1031,"name":"uint256","nodeType":"ElementaryTypeName","src":"167:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1034,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1059,"src":"188:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1033,"name":"address","nodeType":"ElementaryTypeName","src":"188:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1036,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1059,"src":"209:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1035,"name":"uint256","nodeType":"ElementaryTypeName","src":"209:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"153:73:10"},"scope":1082,"src":"90:406:10","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1080,"nodeType":"Block","src":"550:253:10","statements":[{"assignments":[1065],"declarations":[{"constant":false,"id":1065,"mutability":"mutable","name":"footer","nameLocation":"573:6:10","nodeType":"VariableDeclaration","scope":1080,"src":"560:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1064,"name":"bytes","nodeType":"ElementaryTypeName","src":"560:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1070,"initialValue":{"arguments":[{"hexValue":"30783230","id":1068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"592:4:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"id":1067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"582:9:10","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1066,"name":"bytes","nodeType":"ElementaryTypeName","src":"586:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"582:15:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"560:37:10"},{"AST":{"nodeType":"YulBlock","src":"617:133:10","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"address","nodeType":"YulIdentifier","src":"699:7:10"},"nodeType":"YulFunctionCall","src":"699:9:10"},{"arguments":[{"name":"footer","nodeType":"YulIdentifier","src":"714:6:10"},{"kind":"number","nodeType":"YulLiteral","src":"722:4:10","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"710:3:10"},"nodeType":"YulFunctionCall","src":"710:17:10"},{"kind":"number","nodeType":"YulLiteral","src":"729:4:10","type":"","value":"0x2d"},{"kind":"number","nodeType":"YulLiteral","src":"735:4:10","type":"","value":"0x4d"}],"functionName":{"name":"extcodecopy","nodeType":"YulIdentifier","src":"687:11:10"},"nodeType":"YulFunctionCall","src":"687:53:10"},"nodeType":"YulExpressionStatement","src":"687:53:10"}]},"evmVersion":"london","externalReferences":[{"declaration":1065,"isOffset":false,"isSlot":false,"src":"714:6:10","valueSize":1}],"id":1071,"nodeType":"InlineAssembly","src":"608:142:10"},{"expression":{"arguments":[{"id":1074,"name":"footer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1065,"src":"778:6:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"787:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1075,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:10","typeDescriptions":{}}}],"id":1077,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"786:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":1072,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"767:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"771:6:10","memberName":"decode","nodeType":"MemberAccess","src":"767:10:10","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"767:29:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1063,"id":1079,"nodeType":"Return","src":"760:36:10"}]},"id":1081,"implemented":true,"kind":"function","modifiers":[],"name":"salt","nameLocation":"511:4:10","nodeType":"FunctionDefinition","parameters":{"id":1060,"nodeType":"ParameterList","parameters":[],"src":"515:2:10"},"returnParameters":{"id":1063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1062,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1081,"src":"541:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1061,"name":"uint256","nodeType":"ElementaryTypeName","src":"541:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"540:9:10"},"scope":1082,"src":"502:301:10","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1083,"src":"58:747:10","usedErrors":[]}],"src":"32:774:10"},"id":10}},"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 ERC1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. _Available since v4.1._","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 _data"}}},"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.17+commit.8df45f5f\"},\"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 ERC1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. _Available since v4.1._\",\"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 _data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"london\",\"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 v4.4.1 (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n *\\n * _Available since v4.1._\\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 _data\\n */\\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"IERC1155Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"_Available since v3.1._","kind":"dev","methods":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","ids":"An array containing ids of each token being transferred (order and length must match values array)","operator":"The address which initiated the batch transfer (i.e. msg.sender)","values":"An array containing amounts of each token being transferred (order and length must match ids array)"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"}},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","id":"The ID of the token being transferred","operator":"The address which initiated the transfer (i.e. msg.sender)","value":"The amount of tokens being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"}},"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[EIP 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":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"_Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"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[EIP 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/token/ERC1155/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. 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":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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.17+commit.8df45f5f\"},\"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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\":\"london\",\"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 v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC721 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":"ERC721 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.17+commit.8df45f5f\"},\"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 ERC721 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\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"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 v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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.17+commit.8df45f5f\"},\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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\":\"london\",\"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 v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/Account.sol":{"Account":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccountLocked","type":"error"},{"inputs":[],"name":"ExceedsMaxLockTime","type":"error"},{"inputs":[],"name":"InvalidInput","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"OwnershipCycle","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockedUntil","type":"uint256"}],"name":"LockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"OverrideUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"hasPermission","type":"bool"}],"name":"PermissionUpdated","type":"event"},{"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"},{"inputs":[],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"uint256","name":"_lockedUntil","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"receivedTokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"parseFirst4Bytes","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"permissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"callers","type":"address[]"},{"internalType":"bool[]","name":"_permissions","type":"bool[]"}],"name":"setPermissions","outputs":[],"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":{"kind":"dev","methods":{"execute(address,uint256,bytes,uint8)":{"details":"executes a low-level call against an account if the caller is authorized to make calls"},"isLocked()":{"details":"returns the current lock status of the account as a boolean"},"isValidSigner(address,bytes)":{"details":"Returns the authorization status for a given caller"},"lock(uint256)":{"details":"locks the account until a certain timestamp"},"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Allows ERC-1155 token batches to be received. This function can be overriden."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Allows ERC-1155 tokens to be received. This function can be overriden."},"onERC721Received(address,address,uint256,bytes)":{"details":"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden."},"owner()":{"details":"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account."},"setPermissions(address[],bool[])":{"details":"grants a given caller execution permissions"},"state()":{"details":"Returns a value that SHOULD be modified each time the account changes state.","returns":{"_0":"The current account state"}},"supportsInterface(bytes4)":{"details":"Returns true if a given interfaceId is supported by this account. This method can be extended by an override."},"token()":{"details":"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account."}},"stateVariables":{"lockedUntil":{"details":"timestamp at which this account will be unlocked"},"permissions":{"details":"mapping from owner => caller => has permissions"}},"title":"A smart contract account owned by a single ERC721 token","version":1},"evm":{"bytecode":{"functionDebugData":{"@_401":{"entryPoint":null,"id":401,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061118a806100206000396000f3fe6080604052600436106100ec5760003560e01c8063a4e2d6341161008a578063d0ad253511610059578063d0ad2535146102a7578063dd467064146102c7578063f23a6e61146102e7578063fc0c546a1461031357600080fd5b8063a4e2d63414610230578063bc197c8114610247578063c19d93fb14610273578063ce0617ec1461029157600080fd5b80631f9838b5116100c65780631f9838b51461018857806351945447146101c3578063523e3260146101e35780638da5cb5b1461020357600080fd5b806301ffc9a7146100f8578063039721b11461012d578063150b7a021461014f57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004610a56565b61034b565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004610acc565b6103b2565b005b34801561015b57600080fd5b5061016f61016a366004610c07565b61057b565b6040516001600160e01b03199091168152602001610124565b34801561019457600080fd5b506101186101a3366004610c73565b600160209081526000928352604080842090915290825290205460ff1681565b6101d66101d1366004610cee565b6105e3565b6040516101249190610d68565b3480156101ef57600080fd5b5061016f6101fe366004610db6565b6106b4565b34801561020f57600080fd5b506102186107b8565b6040516001600160a01b039091168152602001610124565b34801561023c57600080fd5b506000544210610118565b34801561025357600080fd5b5061016f610262366004610e8b565b63bc197c8160e01b95945050505050565b34801561027f57600080fd5b5060015b604051908152602001610124565b34801561029d57600080fd5b5061028360005481565b3480156102b357600080fd5b5061016f6102c2366004610f39565b61084e565b3480156102d357600080fd5b5061014d6102e2366004610f7b565b61086f565b3480156102f357600080fd5b5061016f610302366004610f94565b63f23a6e6160e01b95945050505050565b34801561031f57600080fd5b50610328610934565b604080519384526001600160a01b03909216602084015290820152606001610124565b6000806001600160e01b031983166301ffc9a760e01b148061037d57506001600160e01b03198316630271189760e51b145b8061039857506001600160e01b03198316636faff5f160e01b145b905080156103a95750600192915050565b50600092915050565b6000544210156103d557604051636315bfbb60e01b815260040160405180910390fd5b60006103df6107b8565b9050336001600160a01b0382161461040a5760405163ea8e4eb560e01b815260040160405180910390fd5b8382811461042b5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156105725784848281811061044857610448610ffd565b905060200201602081019061045d9190611013565b6001600160a01b03841660009081526001602052604081209089898581811061048857610488610ffd565b905060200201602081019061049d9190611035565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106104f9576104f9610ffd565b905060200201602081019061050e9190611035565b87878581811061052057610520610ffd565b90506020020160208101906105359190611013565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a18061056a81611068565b91505061042e565b50505050505050565b60008060008061058961094c565b92509250925046831480156105a657506001600160a01b03821633145b80156105b157508581145b156105cf5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b606083836105f23383836106b4565b6001600160e01b03191663523e326060e01b146106225760405163ea8e4eb560e01b815260040160405180910390fd5b60005442101561064557604051636315bfbb60e01b815260040160405180910390fd5b8585610651828261099f565b61069a5760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b6106a68a8a8a8a6109da565b9a9950505050505050505050565b60008060006106c161094c565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa15801561070f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107339190611081565b9050806001600160a01b0316876001600160a01b0316036107615750630291f19360e51b92506107b1915050565b6001600160a01b038082166000908152600160209081526040808320938b168352929052205460ff16156107a25750630291f19360e51b92506107b1915050565b506001600160e01b0319925050505b9392505050565b6000806000806107c661094c565b9250925092504683146107dd576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108469190611081565b935050505090565b600061085d600482848661109e565b610866916110c8565b90505b92915050565b6108776107b8565b6001600160a01b0316336001600160a01b0316146108a85760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156108cb57604051636315bfbb60e01b815260040160405180910390fd5b6108d9426301e133806110f8565b8111156108f9576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b600080600061094161094c565b925092509250909192565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610993919061110b565b93509350935050909192565b6000806109ac848461084e565b90506001600160e01b0319811663095ea7b360e01b036109d0576000915050610869565b5060019392505050565b60606000856001600160a01b03168585856040516109f9929190611144565b60006040518083038185875af1925050503d8060008114610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b509250905080610a4d57815160208301fd5b50949350505050565b600060208284031215610a6857600080fd5b81356001600160e01b0319811681146107b157600080fd5b60008083601f840112610a9257600080fd5b50813567ffffffffffffffff811115610aaa57600080fd5b6020830191508360208260051b8501011115610ac557600080fd5b9250929050565b60008060008060408587031215610ae257600080fd5b843567ffffffffffffffff80821115610afa57600080fd5b610b0688838901610a80565b90965094506020870135915080821115610b1f57600080fd5b50610b2c87828801610a80565b95989497509550505050565b6001600160a01b0381168114610b4d57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b8f57610b8f610b50565b604052919050565b600082601f830112610ba857600080fd5b813567ffffffffffffffff811115610bc257610bc2610b50565b610bd5601f8201601f1916602001610b66565b818152846020838601011115610bea57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610c1d57600080fd5b8435610c2881610b38565b93506020850135610c3881610b38565b925060408501359150606085013567ffffffffffffffff811115610c5b57600080fd5b610c6787828801610b97565b91505092959194509250565b60008060408385031215610c8657600080fd5b8235610c9181610b38565b91506020830135610ca181610b38565b809150509250929050565b60008083601f840112610cbe57600080fd5b50813567ffffffffffffffff811115610cd657600080fd5b602083019150836020828501011115610ac557600080fd5b600080600080600060808688031215610d0657600080fd5b8535610d1181610b38565b945060208601359350604086013567ffffffffffffffff811115610d3457600080fd5b610d4088828901610cac565b909450925050606086013560ff81168114610d5a57600080fd5b809150509295509295909350565b600060208083528351808285015260005b81811015610d9557858101830151858201604001528201610d79565b506000604082860101526040601f19601f8301168501019250505092915050565b600080600060408486031215610dcb57600080fd5b8335610dd681610b38565b9250602084013567ffffffffffffffff811115610df257600080fd5b610dfe86828701610cac565b9497909650939450505050565b600082601f830112610e1c57600080fd5b8135602067ffffffffffffffff821115610e3857610e38610b50565b8160051b610e47828201610b66565b9283528481018201928281019087851115610e6157600080fd5b83870192505b84831015610e8057823582529183019190830190610e67565b979650505050505050565b600080600080600060a08688031215610ea357600080fd5b8535610eae81610b38565b94506020860135610ebe81610b38565b9350604086013567ffffffffffffffff80821115610edb57600080fd5b610ee789838a01610e0b565b94506060880135915080821115610efd57600080fd5b610f0989838a01610e0b565b93506080880135915080821115610f1f57600080fd5b50610f2c88828901610b97565b9150509295509295909350565b60008060208385031215610f4c57600080fd5b823567ffffffffffffffff811115610f6357600080fd5b610f6f85828601610cac565b90969095509350505050565b600060208284031215610f8d57600080fd5b5035919050565b600080600080600060a08688031215610fac57600080fd5b8535610fb781610b38565b94506020860135610fc781610b38565b93506040860135925060608601359150608086013567ffffffffffffffff811115610ff157600080fd5b610f2c88828901610b97565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561102557600080fd5b813580151581146107b157600080fd5b60006020828403121561104757600080fd5b81356107b181610b38565b634e487b7160e01b600052601160045260246000fd5b60006001820161107a5761107a611052565b5060010190565b60006020828403121561109357600080fd5b81516107b181610b38565b600080858511156110ae57600080fd5b838611156110bb57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156110f05780818660040360031b1b83161692505b505092915050565b8082018082111561086957610869611052565b60008060006060848603121561112057600080fd5b83519250602084015161113281610b38565b80925050604084015190509250925092565b818382376000910190815291905056fea264697066735822122062a000d968f4f9e334ac56f8fdc909890fab65dffc1717506fc748f45a7b83ba64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA4E2D634 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xD0AD2535 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1F9838B5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xF3 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0xA56 JUMP JUMPDEST PUSH2 0x34B 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 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0xACC JUMP JUMPDEST PUSH2 0x3B2 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x16A CALLDATASIZE PUSH1 0x4 PUSH2 0xC07 JUMP JUMPDEST PUSH2 0x57B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x1A3 CALLDATASIZE PUSH1 0x4 PUSH2 0xC73 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0xCEE JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0xD68 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x1FE CALLDATASIZE PUSH1 0x4 PUSH2 0xDB6 JUMP JUMPDEST PUSH2 0x6B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x218 PUSH2 0x7B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x118 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x262 CALLDATASIZE PUSH1 0x4 PUSH2 0xE8B JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x283 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF39 JUMP JUMPDEST PUSH2 0x84E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF7B JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x302 CALLDATASIZE PUSH1 0x4 PUSH2 0xF94 JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x328 PUSH2 0x934 JUMP JUMPDEST 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 0x124 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x37D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x398 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3A9 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3DF PUSH2 0x7B8 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x40A JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x42B JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x572 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x448 JUMPI PUSH2 0x448 PUSH2 0xFFD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x45D SWAP2 SWAP1 PUSH2 0x1013 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x488 JUMPI PUSH2 0x488 PUSH2 0xFFD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x49D SWAP2 SWAP1 PUSH2 0x1035 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x4F9 JUMPI PUSH2 0x4F9 PUSH2 0xFFD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x50E SWAP2 SWAP1 PUSH2 0x1035 JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x520 JUMPI PUSH2 0x520 PUSH2 0xFFD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x535 SWAP2 SWAP1 PUSH2 0x1013 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x56A DUP2 PUSH2 0x1068 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x42E JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x589 PUSH2 0x94C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x5A6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x5B1 JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x5CF JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP4 PUSH2 0x5F2 CALLER DUP4 DUP4 PUSH2 0x6B4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x523E3260 PUSH1 0xE0 SHL EQ PUSH2 0x622 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x645 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP6 PUSH2 0x651 DUP3 DUP3 PUSH2 0x99F JUMP JUMPDEST PUSH2 0x69A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6A6 DUP11 DUP11 DUP11 DUP11 PUSH2 0x9DA JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x6C1 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0x70F 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 0x733 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x761 JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL SWAP3 POP PUSH2 0x7B1 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x7A2 JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL SWAP3 POP PUSH2 0x7B1 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x7C6 PUSH2 0x94C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x7DD JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x822 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 0x846 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85D PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x109E JUMP JUMPDEST PUSH2 0x866 SWAP2 PUSH2 0x10C8 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x877 PUSH2 0x7B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8A8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x8CB JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8D9 TIMESTAMP PUSH4 0x1E13380 PUSH2 0x10F8 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x941 PUSH2 0x94C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x993 SWAP2 SWAP1 PUSH2 0x110B JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9AC DUP5 DUP5 PUSH2 0x84E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0x9D0 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x869 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9F9 SWAP3 SWAP2 SWAP1 PUSH2 0x1144 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 0xA36 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 0xA3B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0xA4D JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xA92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xAC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xAFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB06 DUP9 DUP4 DUP10 ADD PUSH2 0xA80 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xB1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB2C DUP8 DUP3 DUP9 ADD PUSH2 0xA80 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB8F JUMPI PUSH2 0xB8F PUSH2 0xB50 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xBA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBC2 JUMPI PUSH2 0xBC2 PUSH2 0xB50 JUMP JUMPDEST PUSH2 0xBD5 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xB66 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xBEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xC28 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xC38 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC67 DUP8 DUP3 DUP9 ADD PUSH2 0xB97 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xC91 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xCA1 DUP2 PUSH2 0xB38 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xAC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xD06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xD11 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD40 DUP9 DUP3 DUP10 ADD PUSH2 0xCAC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xD5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD95 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xD79 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xDD6 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDFE DUP7 DUP3 DUP8 ADD PUSH2 0xCAC JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xE38 JUMPI PUSH2 0xE38 PUSH2 0xB50 JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0xE47 DUP3 DUP3 ADD PUSH2 0xB66 JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0xE61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0xE80 JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0xE67 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xEA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xEAE DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xEBE DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE7 DUP10 DUP4 DUP11 ADD PUSH2 0xE0B JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF09 DUP10 DUP4 DUP11 ADD PUSH2 0xE0B JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2C DUP9 DUP3 DUP10 ADD PUSH2 0xB97 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF6F DUP6 DUP3 DUP7 ADD PUSH2 0xCAC JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xFAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xFB7 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xFC7 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF2C DUP9 DUP3 DUP10 ADD PUSH2 0xB97 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1025 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1047 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7B1 DUP2 PUSH2 0xB38 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x107A JUMPI PUSH2 0x107A PUSH2 0x1052 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1093 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7B1 DUP2 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x10AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x10BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x10F0 JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x869 JUMPI PUSH2 0x869 PUSH2 0x1052 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x1132 DUP2 PUSH2 0xB38 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0xA000D9 PUSH9 0xF4F9E334AC56F8FDC9 MULMOD DUP10 0xF 0xAB PUSH6 0xDFFC1717506F 0xC7 BASEFEE DELEGATECALL GAS PUSH28 0x83BA64736F6C63430008110033000000000000000000000000000000 ","sourceMap":"741:7455:6:-:0;;;2026:16;;;;;;;;;;741:7455;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_406":{"entryPoint":null,"id":406,"parameterSlots":0,"returnSlots":0},"@_call_806":{"entryPoint":2522,"id":806,"parameterSlots":4,"returnSlots":1},"@allowedMethod_857":{"entryPoint":2463,"id":857,"parameterSlots":2,"returnSlots":1},"@execute_435":{"entryPoint":1507,"id":435,"parameterSlots":5,"returnSlots":1},"@isLocked_549":{"entryPoint":null,"id":549,"parameterSlots":0,"returnSlots":1},"@isValidSigner_642":{"entryPoint":1716,"id":642,"parameterSlots":3,"returnSlots":1},"@lock_537":{"entryPoint":2159,"id":537,"parameterSlots":1,"returnSlots":0},"@lockedUntil_314":{"entryPoint":null,"id":314,"parameterSlots":0,"returnSlots":0},"@onERC1155BatchReceived_774":{"entryPoint":null,"id":774,"parameterSlots":5,"returnSlots":1},"@onERC1155Received_750":{"entryPoint":null,"id":750,"parameterSlots":5,"returnSlots":1},"@onERC721Received_728":{"entryPoint":1403,"id":728,"parameterSlots":4,"returnSlots":1},"@owner_598":{"entryPoint":1976,"id":598,"parameterSlots":0,"returnSlots":1},"@parseFirst4Bytes_872":{"entryPoint":2126,"id":872,"parameterSlots":2,"returnSlots":1},"@permissions_321":{"entryPoint":null,"id":321,"parameterSlots":0,"returnSlots":0},"@setPermissions_508":{"entryPoint":946,"id":508,"parameterSlots":4,"returnSlots":0},"@state_880":{"entryPoint":null,"id":880,"parameterSlots":0,"returnSlots":1},"@supportsInterface_681":{"entryPoint":843,"id":681,"parameterSlots":1,"returnSlots":1},"@token_1059":{"entryPoint":2380,"id":1059,"parameterSlots":0,"returnSlots":3},"@token_564":{"entryPoint":2356,"id":564,"parameterSlots":0,"returnSlots":3},"abi_decode_array_address_dyn_calldata":{"entryPoint":2688,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":3595,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":2967,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3244,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":4149,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4225,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3187,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr":{"entryPoint":3723,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":3079,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr":{"entryPoint":3988,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_bytes_calldata_ptr":{"entryPoint":3510,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint8":{"entryPoint":3310,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr":{"entryPoint":2764,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":4115,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":2646,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":3897,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":3963,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory":{"entryPoint":4363,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4420,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"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":3432,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__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},"allocate_memory":{"entryPoint":2918,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":4254,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":4344,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":4296,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":4200,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":4178,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4093,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2896,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":2872,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:13487:11","statements":[{"nodeType":"YulBlock","src":"6:3:11","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:11","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:11"},"nodeType":"YulFunctionCall","src":"131:12:11"},"nodeType":"YulExpressionStatement","src":"131:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:11"},"nodeType":"YulFunctionCall","src":"100:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:11"},"nodeType":"YulFunctionCall","src":"96:32:11"},"nodeType":"YulIf","src":"93:52:11"},{"nodeType":"YulVariableDeclaration","src":"154:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:11"},"nodeType":"YulFunctionCall","src":"167:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:11"},"nodeType":"YulFunctionCall","src":"256:12:11"},"nodeType":"YulExpressionStatement","src":"256:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:11"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:11","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:11"},"nodeType":"YulFunctionCall","src":"230:20:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:11"},"nodeType":"YulFunctionCall","src":"219:32:11"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:11"},"nodeType":"YulFunctionCall","src":"209:43:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:11"},"nodeType":"YulFunctionCall","src":"202:51:11"},"nodeType":"YulIf","src":"199:71:11"},{"nodeType":"YulAssignment","src":"279:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:11"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:11","type":""}],"src":"14:286:11"},{"body":{"nodeType":"YulBlock","src":"400:92:11","statements":[{"nodeType":"YulAssignment","src":"410:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:11"},"nodeType":"YulFunctionCall","src":"418:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:11"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:11"},"nodeType":"YulFunctionCall","src":"470:14:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:11"},"nodeType":"YulFunctionCall","src":"463:22:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:11"},"nodeType":"YulFunctionCall","src":"445:41:11"},"nodeType":"YulExpressionStatement","src":"445:41:11"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:11","type":""}],"src":"305:187:11"},{"body":{"nodeType":"YulBlock","src":"581:283:11","statements":[{"body":{"nodeType":"YulBlock","src":"630:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"639:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"642:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"632:6:11"},"nodeType":"YulFunctionCall","src":"632:12:11"},"nodeType":"YulExpressionStatement","src":"632:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"609:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"617:4:11","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"605:3:11"},"nodeType":"YulFunctionCall","src":"605:17:11"},{"name":"end","nodeType":"YulIdentifier","src":"624:3:11"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"601:3:11"},"nodeType":"YulFunctionCall","src":"601:27:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"594:6:11"},"nodeType":"YulFunctionCall","src":"594:35:11"},"nodeType":"YulIf","src":"591:55:11"},{"nodeType":"YulAssignment","src":"655:30:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"678:6:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"665:12:11"},"nodeType":"YulFunctionCall","src":"665:20:11"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"655:6:11"}]},{"body":{"nodeType":"YulBlock","src":"728:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"737:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"740:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"730:6:11"},"nodeType":"YulFunctionCall","src":"730:12:11"},"nodeType":"YulExpressionStatement","src":"730:12:11"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"700:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"708:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"697:2:11"},"nodeType":"YulFunctionCall","src":"697:30:11"},"nodeType":"YulIf","src":"694:50:11"},{"nodeType":"YulAssignment","src":"753:29:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"769:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"777:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:11"},"nodeType":"YulFunctionCall","src":"765:17:11"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"753:8:11"}]},{"body":{"nodeType":"YulBlock","src":"842:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"851:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"854:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"844:6:11"},"nodeType":"YulFunctionCall","src":"844:12:11"},"nodeType":"YulExpressionStatement","src":"844:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"805:6:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"817:1:11","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"820:6:11"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"813:3:11"},"nodeType":"YulFunctionCall","src":"813:14:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"801:3:11"},"nodeType":"YulFunctionCall","src":"801:27:11"},{"kind":"number","nodeType":"YulLiteral","src":"830:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"797:3:11"},"nodeType":"YulFunctionCall","src":"797:38:11"},{"name":"end","nodeType":"YulIdentifier","src":"837:3:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"794:2:11"},"nodeType":"YulFunctionCall","src":"794:47:11"},"nodeType":"YulIf","src":"791:67:11"}]},"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"544:6:11","type":""},{"name":"end","nodeType":"YulTypedName","src":"552:3:11","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"560:8:11","type":""},{"name":"length","nodeType":"YulTypedName","src":"570:6:11","type":""}],"src":"497:367:11"},{"body":{"nodeType":"YulBlock","src":"1023:616:11","statements":[{"body":{"nodeType":"YulBlock","src":"1069:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1078:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1081:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1071:6:11"},"nodeType":"YulFunctionCall","src":"1071:12:11"},"nodeType":"YulExpressionStatement","src":"1071:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1044:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"1053:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1040:3:11"},"nodeType":"YulFunctionCall","src":"1040:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"1065:2:11","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1036:3:11"},"nodeType":"YulFunctionCall","src":"1036:32:11"},"nodeType":"YulIf","src":"1033:52:11"},{"nodeType":"YulVariableDeclaration","src":"1094:37:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1108:12:11"},"nodeType":"YulFunctionCall","src":"1108:23:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1098:6:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1140:28:11","value":{"kind":"number","nodeType":"YulLiteral","src":"1150:18:11","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1144:2:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"1195:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1204:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1207:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1197:6:11"},"nodeType":"YulFunctionCall","src":"1197:12:11"},"nodeType":"YulExpressionStatement","src":"1197:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1183:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"1191:2:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1180:2:11"},"nodeType":"YulFunctionCall","src":"1180:14:11"},"nodeType":"YulIf","src":"1177:34:11"},{"nodeType":"YulVariableDeclaration","src":"1220:96:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1288:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"1299:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1284:3:11"},"nodeType":"YulFunctionCall","src":"1284:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1308:7:11"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1246:37:11"},"nodeType":"YulFunctionCall","src":"1246:70:11"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"1224:8:11","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"1234:8:11","type":""}]},{"nodeType":"YulAssignment","src":"1325:18:11","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"1335:8:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1325:6:11"}]},{"nodeType":"YulAssignment","src":"1352:18:11","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1362:8:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1352:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"1379:48:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1412:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"1423:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1408:3:11"},"nodeType":"YulFunctionCall","src":"1408:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1395:12:11"},"nodeType":"YulFunctionCall","src":"1395:32:11"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"1456:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1465:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1468:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1458:6:11"},"nodeType":"YulFunctionCall","src":"1458:12:11"},"nodeType":"YulExpressionStatement","src":"1458:12:11"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1442:8:11"},{"name":"_1","nodeType":"YulIdentifier","src":"1452:2:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1439:2:11"},"nodeType":"YulFunctionCall","src":"1439:16:11"},"nodeType":"YulIf","src":"1436:36:11"},{"nodeType":"YulVariableDeclaration","src":"1481:98:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1549:9:11"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1560:8:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1545:3:11"},"nodeType":"YulFunctionCall","src":"1545:24:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1571:7:11"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1507:37:11"},"nodeType":"YulFunctionCall","src":"1507:72:11"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"1485:8:11","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"1495:8:11","type":""}]},{"nodeType":"YulAssignment","src":"1588:18:11","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1598:8:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1588:6:11"}]},{"nodeType":"YulAssignment","src":"1615:18:11","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1625:8:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1615:6:11"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"965:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"976:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"988:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"996:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1004:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1012:6:11","type":""}],"src":"869:770:11"},{"body":{"nodeType":"YulBlock","src":"1689:86:11","statements":[{"body":{"nodeType":"YulBlock","src":"1753:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1762:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1765:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1755:6:11"},"nodeType":"YulFunctionCall","src":"1755:12:11"},"nodeType":"YulExpressionStatement","src":"1755:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1712:5:11"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1723:5:11"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1738:3:11","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1743:1:11","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1734:3:11"},"nodeType":"YulFunctionCall","src":"1734:11:11"},{"kind":"number","nodeType":"YulLiteral","src":"1747:1:11","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1730:3:11"},"nodeType":"YulFunctionCall","src":"1730:19:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1719:3:11"},"nodeType":"YulFunctionCall","src":"1719:31:11"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1709:2:11"},"nodeType":"YulFunctionCall","src":"1709:42:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1702:6:11"},"nodeType":"YulFunctionCall","src":"1702:50:11"},"nodeType":"YulIf","src":"1699:70:11"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1678:5:11","type":""}],"src":"1644:131:11"},{"body":{"nodeType":"YulBlock","src":"1812:95:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1829:1:11","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1836:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1841:10:11","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1832:3:11"},"nodeType":"YulFunctionCall","src":"1832:20:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1822:6:11"},"nodeType":"YulFunctionCall","src":"1822:31:11"},"nodeType":"YulExpressionStatement","src":"1822:31:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1869:1:11","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1872:4:11","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1862:6:11"},"nodeType":"YulFunctionCall","src":"1862:15:11"},"nodeType":"YulExpressionStatement","src":"1862:15:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1893:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1896:4:11","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1886:6:11"},"nodeType":"YulFunctionCall","src":"1886:15:11"},"nodeType":"YulExpressionStatement","src":"1886:15:11"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1780:127:11"},{"body":{"nodeType":"YulBlock","src":"1957:230:11","statements":[{"nodeType":"YulAssignment","src":"1967:19:11","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1983:2:11","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1977:5:11"},"nodeType":"YulFunctionCall","src":"1977:9:11"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1967:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"1995:58:11","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2017:6:11"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2033:4:11"},{"kind":"number","nodeType":"YulLiteral","src":"2039:2:11","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2029:3:11"},"nodeType":"YulFunctionCall","src":"2029:13:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2048:2:11","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2044:3:11"},"nodeType":"YulFunctionCall","src":"2044:7:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2025:3:11"},"nodeType":"YulFunctionCall","src":"2025:27:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2013:3:11"},"nodeType":"YulFunctionCall","src":"2013:40:11"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1999:10:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"2128:22:11","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2130:16:11"},"nodeType":"YulFunctionCall","src":"2130:18:11"},"nodeType":"YulExpressionStatement","src":"2130:18:11"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2071:10:11"},{"kind":"number","nodeType":"YulLiteral","src":"2083:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2068:2:11"},"nodeType":"YulFunctionCall","src":"2068:34:11"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2107:10:11"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2119:6:11"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2104:2:11"},"nodeType":"YulFunctionCall","src":"2104:22:11"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2065:2:11"},"nodeType":"YulFunctionCall","src":"2065:62:11"},"nodeType":"YulIf","src":"2062:88:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2166:2:11","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2170:10:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2159:6:11"},"nodeType":"YulFunctionCall","src":"2159:22:11"},"nodeType":"YulExpressionStatement","src":"2159:22:11"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1937:4:11","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1946:6:11","type":""}],"src":"1912:275:11"},{"body":{"nodeType":"YulBlock","src":"2244:478:11","statements":[{"body":{"nodeType":"YulBlock","src":"2293:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2302:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2305:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2295:6:11"},"nodeType":"YulFunctionCall","src":"2295:12:11"},"nodeType":"YulExpressionStatement","src":"2295:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2272:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"2280:4:11","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2268:3:11"},"nodeType":"YulFunctionCall","src":"2268:17:11"},{"name":"end","nodeType":"YulIdentifier","src":"2287:3:11"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2264:3:11"},"nodeType":"YulFunctionCall","src":"2264:27:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2257:6:11"},"nodeType":"YulFunctionCall","src":"2257:35:11"},"nodeType":"YulIf","src":"2254:55:11"},{"nodeType":"YulVariableDeclaration","src":"2318:30:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2341:6:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2328:12:11"},"nodeType":"YulFunctionCall","src":"2328:20:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2322:2:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"2387:22:11","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2389:16:11"},"nodeType":"YulFunctionCall","src":"2389:18:11"},"nodeType":"YulExpressionStatement","src":"2389:18:11"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2363:2:11"},{"kind":"number","nodeType":"YulLiteral","src":"2367:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2360:2:11"},"nodeType":"YulFunctionCall","src":"2360:26:11"},"nodeType":"YulIf","src":"2357:52:11"},{"nodeType":"YulVariableDeclaration","src":"2418:70:11","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2461:2:11"},{"kind":"number","nodeType":"YulLiteral","src":"2465:4:11","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2457:3:11"},"nodeType":"YulFunctionCall","src":"2457:13:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2476:2:11","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2472:3:11"},"nodeType":"YulFunctionCall","src":"2472:7:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2453:3:11"},"nodeType":"YulFunctionCall","src":"2453:27:11"},{"kind":"number","nodeType":"YulLiteral","src":"2482:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2449:3:11"},"nodeType":"YulFunctionCall","src":"2449:38:11"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2433:15:11"},"nodeType":"YulFunctionCall","src":"2433:55:11"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"2422:7:11","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2504:7:11"},{"name":"_1","nodeType":"YulIdentifier","src":"2513:2:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2497:6:11"},"nodeType":"YulFunctionCall","src":"2497:19:11"},"nodeType":"YulExpressionStatement","src":"2497:19:11"},{"body":{"nodeType":"YulBlock","src":"2564:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2573:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2576:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2566:6:11"},"nodeType":"YulFunctionCall","src":"2566:12:11"},"nodeType":"YulExpressionStatement","src":"2566:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2539:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"2547:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2535:3:11"},"nodeType":"YulFunctionCall","src":"2535:15:11"},{"kind":"number","nodeType":"YulLiteral","src":"2552:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2531:3:11"},"nodeType":"YulFunctionCall","src":"2531:26:11"},{"name":"end","nodeType":"YulIdentifier","src":"2559:3:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2528:2:11"},"nodeType":"YulFunctionCall","src":"2528:35:11"},"nodeType":"YulIf","src":"2525:55:11"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2606:7:11"},{"kind":"number","nodeType":"YulLiteral","src":"2615:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2602:3:11"},"nodeType":"YulFunctionCall","src":"2602:18:11"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2626:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"2634:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2622:3:11"},"nodeType":"YulFunctionCall","src":"2622:17:11"},{"name":"_1","nodeType":"YulIdentifier","src":"2641:2:11"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2589:12:11"},"nodeType":"YulFunctionCall","src":"2589:55:11"},"nodeType":"YulExpressionStatement","src":"2589:55:11"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2668:7:11"},{"name":"_1","nodeType":"YulIdentifier","src":"2677:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2664:3:11"},"nodeType":"YulFunctionCall","src":"2664:16:11"},{"kind":"number","nodeType":"YulLiteral","src":"2682:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2660:3:11"},"nodeType":"YulFunctionCall","src":"2660:27:11"},{"kind":"number","nodeType":"YulLiteral","src":"2689:1:11","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2653:6:11"},"nodeType":"YulFunctionCall","src":"2653:38:11"},"nodeType":"YulExpressionStatement","src":"2653:38:11"},{"nodeType":"YulAssignment","src":"2700:16:11","value":{"name":"array_1","nodeType":"YulIdentifier","src":"2709:7:11"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2700:5:11"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2218:6:11","type":""},{"name":"end","nodeType":"YulTypedName","src":"2226:3:11","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2234:5:11","type":""}],"src":"2192:530:11"},{"body":{"nodeType":"YulBlock","src":"2857:535:11","statements":[{"body":{"nodeType":"YulBlock","src":"2904:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2916:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2906:6:11"},"nodeType":"YulFunctionCall","src":"2906:12:11"},"nodeType":"YulExpressionStatement","src":"2906:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2878:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"2887:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2874:3:11"},"nodeType":"YulFunctionCall","src":"2874:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"2899:3:11","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2870:3:11"},"nodeType":"YulFunctionCall","src":"2870:33:11"},"nodeType":"YulIf","src":"2867:53:11"},{"nodeType":"YulVariableDeclaration","src":"2929:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2942:12:11"},"nodeType":"YulFunctionCall","src":"2942:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2933:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2999:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2974:24:11"},"nodeType":"YulFunctionCall","src":"2974:31:11"},"nodeType":"YulExpressionStatement","src":"2974:31:11"},{"nodeType":"YulAssignment","src":"3014:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"3024:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3014:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"3038:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3070:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"3081:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3066:3:11"},"nodeType":"YulFunctionCall","src":"3066:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3053:12:11"},"nodeType":"YulFunctionCall","src":"3053:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3042:7:11","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3119:7:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3094:24:11"},"nodeType":"YulFunctionCall","src":"3094:33:11"},"nodeType":"YulExpressionStatement","src":"3094:33:11"},{"nodeType":"YulAssignment","src":"3136:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3146:7:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3136:6:11"}]},{"nodeType":"YulAssignment","src":"3162:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"3200:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3185:3:11"},"nodeType":"YulFunctionCall","src":"3185:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3172:12:11"},"nodeType":"YulFunctionCall","src":"3172:32:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3162:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"3213:46:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3244:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"3255:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3240:3:11"},"nodeType":"YulFunctionCall","src":"3240:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3227:12:11"},"nodeType":"YulFunctionCall","src":"3227:32:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3217:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"3302:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3311:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3314:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3304:6:11"},"nodeType":"YulFunctionCall","src":"3304:12:11"},"nodeType":"YulExpressionStatement","src":"3304:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3274:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"3282:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3271:2:11"},"nodeType":"YulFunctionCall","src":"3271:30:11"},"nodeType":"YulIf","src":"3268:50:11"},{"nodeType":"YulAssignment","src":"3327:59:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3358:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"3369:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3354:3:11"},"nodeType":"YulFunctionCall","src":"3354:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3378:7:11"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"3337:16:11"},"nodeType":"YulFunctionCall","src":"3337:49:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3327:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2799:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2810:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2822:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2830:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2838:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2846:6:11","type":""}],"src":"2727:665:11"},{"body":{"nodeType":"YulBlock","src":"3496:103:11","statements":[{"nodeType":"YulAssignment","src":"3506:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3518:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"3529:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3514:3:11"},"nodeType":"YulFunctionCall","src":"3514:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3506:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:11"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3563:6:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3575:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3580:10:11","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3571:3:11"},"nodeType":"YulFunctionCall","src":"3571:20:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3559:3:11"},"nodeType":"YulFunctionCall","src":"3559:33:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3541:6:11"},"nodeType":"YulFunctionCall","src":"3541:52:11"},"nodeType":"YulExpressionStatement","src":"3541:52:11"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3465:9:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3476:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3487:4:11","type":""}],"src":"3397:202:11"},{"body":{"nodeType":"YulBlock","src":"3691:301:11","statements":[{"body":{"nodeType":"YulBlock","src":"3737:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3746:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3749:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3739:6:11"},"nodeType":"YulFunctionCall","src":"3739:12:11"},"nodeType":"YulExpressionStatement","src":"3739:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3712:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"3721:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:11"},"nodeType":"YulFunctionCall","src":"3708:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"3733:2:11","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3704:3:11"},"nodeType":"YulFunctionCall","src":"3704:32:11"},"nodeType":"YulIf","src":"3701:52:11"},{"nodeType":"YulVariableDeclaration","src":"3762:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3788:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3775:12:11"},"nodeType":"YulFunctionCall","src":"3775:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3766:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3832:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3807:24:11"},"nodeType":"YulFunctionCall","src":"3807:31:11"},"nodeType":"YulExpressionStatement","src":"3807:31:11"},{"nodeType":"YulAssignment","src":"3847:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"3857:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3847:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"3871:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3903:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"3914:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3899:3:11"},"nodeType":"YulFunctionCall","src":"3899:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3886:12:11"},"nodeType":"YulFunctionCall","src":"3886:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3875:7:11","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3952:7:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3927:24:11"},"nodeType":"YulFunctionCall","src":"3927:33:11"},"nodeType":"YulExpressionStatement","src":"3927:33:11"},{"nodeType":"YulAssignment","src":"3969:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3979:7:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3969:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3649:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3660:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3672:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3680:6:11","type":""}],"src":"3604:388:11"},{"body":{"nodeType":"YulBlock","src":"4069:275:11","statements":[{"body":{"nodeType":"YulBlock","src":"4118:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4127:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4130:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4120:6:11"},"nodeType":"YulFunctionCall","src":"4120:12:11"},"nodeType":"YulExpressionStatement","src":"4120:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4097:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"4105:4:11","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4093:3:11"},"nodeType":"YulFunctionCall","src":"4093:17:11"},{"name":"end","nodeType":"YulIdentifier","src":"4112:3:11"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4089:3:11"},"nodeType":"YulFunctionCall","src":"4089:27:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4082:6:11"},"nodeType":"YulFunctionCall","src":"4082:35:11"},"nodeType":"YulIf","src":"4079:55:11"},{"nodeType":"YulAssignment","src":"4143:30:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4166:6:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4153:12:11"},"nodeType":"YulFunctionCall","src":"4153:20:11"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4143:6:11"}]},{"body":{"nodeType":"YulBlock","src":"4216:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4225:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4228:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4218:6:11"},"nodeType":"YulFunctionCall","src":"4218:12:11"},"nodeType":"YulExpressionStatement","src":"4218:12:11"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4188:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"4196:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4185:2:11"},"nodeType":"YulFunctionCall","src":"4185:30:11"},"nodeType":"YulIf","src":"4182:50:11"},{"nodeType":"YulAssignment","src":"4241:29:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4257:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"4265:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4253:3:11"},"nodeType":"YulFunctionCall","src":"4253:17:11"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"4241:8:11"}]},{"body":{"nodeType":"YulBlock","src":"4322:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4331:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4334:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4324:6:11"},"nodeType":"YulFunctionCall","src":"4324:12:11"},"nodeType":"YulExpressionStatement","src":"4324:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4293:6:11"},{"name":"length","nodeType":"YulIdentifier","src":"4301:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:11"},"nodeType":"YulFunctionCall","src":"4289:19:11"},{"kind":"number","nodeType":"YulLiteral","src":"4310:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4285:3:11"},"nodeType":"YulFunctionCall","src":"4285:30:11"},{"name":"end","nodeType":"YulIdentifier","src":"4317:3:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4282:2:11"},"nodeType":"YulFunctionCall","src":"4282:39:11"},"nodeType":"YulIf","src":"4279:59:11"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4032:6:11","type":""},{"name":"end","nodeType":"YulTypedName","src":"4040:3:11","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"4048:8:11","type":""},{"name":"length","nodeType":"YulTypedName","src":"4058:6:11","type":""}],"src":"3997:347:11"},{"body":{"nodeType":"YulBlock","src":"4487:640:11","statements":[{"body":{"nodeType":"YulBlock","src":"4534:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4543:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4546:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4536:6:11"},"nodeType":"YulFunctionCall","src":"4536:12:11"},"nodeType":"YulExpressionStatement","src":"4536:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4508:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"4517:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4504:3:11"},"nodeType":"YulFunctionCall","src":"4504:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"4529:3:11","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4500:3:11"},"nodeType":"YulFunctionCall","src":"4500:33:11"},"nodeType":"YulIf","src":"4497:53:11"},{"nodeType":"YulVariableDeclaration","src":"4559:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4585:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4572:12:11"},"nodeType":"YulFunctionCall","src":"4572:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4563:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4629:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4604:24:11"},"nodeType":"YulFunctionCall","src":"4604:31:11"},"nodeType":"YulExpressionStatement","src":"4604:31:11"},{"nodeType":"YulAssignment","src":"4644:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"4654:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4644:6:11"}]},{"nodeType":"YulAssignment","src":"4668:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4695:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"4706:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4691:3:11"},"nodeType":"YulFunctionCall","src":"4691:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4678:12:11"},"nodeType":"YulFunctionCall","src":"4678:32:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4668:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"4719:46:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4750:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"4761:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4746:3:11"},"nodeType":"YulFunctionCall","src":"4746:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4733:12:11"},"nodeType":"YulFunctionCall","src":"4733:32:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4723:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"4808:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4817:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4820:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4810:6:11"},"nodeType":"YulFunctionCall","src":"4810:12:11"},"nodeType":"YulExpressionStatement","src":"4810:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4780:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"4788:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4777:2:11"},"nodeType":"YulFunctionCall","src":"4777:30:11"},"nodeType":"YulIf","src":"4774:50:11"},{"nodeType":"YulVariableDeclaration","src":"4833:84:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4889:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"4900:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4885:3:11"},"nodeType":"YulFunctionCall","src":"4885:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4909:7:11"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"4859:25:11"},"nodeType":"YulFunctionCall","src":"4859:58:11"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"4837:8:11","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"4847:8:11","type":""}]},{"nodeType":"YulAssignment","src":"4926:18:11","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"4936:8:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4926:6:11"}]},{"nodeType":"YulAssignment","src":"4953:18:11","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"4963:8:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4953:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"4980:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5012:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"5023:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5008:3:11"},"nodeType":"YulFunctionCall","src":"5008:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4995:12:11"},"nodeType":"YulFunctionCall","src":"4995:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4984:7:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"5079:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5088:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5091:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5081:6:11"},"nodeType":"YulFunctionCall","src":"5081:12:11"},"nodeType":"YulExpressionStatement","src":"5081:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5049:7:11"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5062:7:11"},{"kind":"number","nodeType":"YulLiteral","src":"5071:4:11","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5058:3:11"},"nodeType":"YulFunctionCall","src":"5058:18:11"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5046:2:11"},"nodeType":"YulFunctionCall","src":"5046:31:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5039:6:11"},"nodeType":"YulFunctionCall","src":"5039:39:11"},"nodeType":"YulIf","src":"5036:59:11"},{"nodeType":"YulAssignment","src":"5104:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"5114:7:11"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5104:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4421:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4432:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4444:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4452:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4460:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4468:6:11","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4476:6:11","type":""}],"src":"4349:778:11"},{"body":{"nodeType":"YulBlock","src":"5251:427:11","statements":[{"nodeType":"YulVariableDeclaration","src":"5261:12:11","value":{"kind":"number","nodeType":"YulLiteral","src":"5271:2:11","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5265:2:11","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5289:9:11"},{"name":"_1","nodeType":"YulIdentifier","src":"5300:2:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5282:6:11"},"nodeType":"YulFunctionCall","src":"5282:21:11"},"nodeType":"YulExpressionStatement","src":"5282:21:11"},{"nodeType":"YulVariableDeclaration","src":"5312:27:11","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5332:6:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5326:5:11"},"nodeType":"YulFunctionCall","src":"5326:13:11"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5316:6:11","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5359:9:11"},{"name":"_1","nodeType":"YulIdentifier","src":"5370:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5355:3:11"},"nodeType":"YulFunctionCall","src":"5355:18:11"},{"name":"length","nodeType":"YulIdentifier","src":"5375:6:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5348:6:11"},"nodeType":"YulFunctionCall","src":"5348:34:11"},"nodeType":"YulExpressionStatement","src":"5348:34:11"},{"nodeType":"YulVariableDeclaration","src":"5391:10:11","value":{"kind":"number","nodeType":"YulLiteral","src":"5400:1:11","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5395:1:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"5460:90:11","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5489:9:11"},{"name":"i","nodeType":"YulIdentifier","src":"5500:1:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:11"},"nodeType":"YulFunctionCall","src":"5485:17:11"},{"kind":"number","nodeType":"YulLiteral","src":"5504:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5481:3:11"},"nodeType":"YulFunctionCall","src":"5481:26:11"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5523:6:11"},{"name":"i","nodeType":"YulIdentifier","src":"5531:1:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5519:3:11"},"nodeType":"YulFunctionCall","src":"5519:14:11"},{"name":"_1","nodeType":"YulIdentifier","src":"5535:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5515:3:11"},"nodeType":"YulFunctionCall","src":"5515:23:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5509:5:11"},"nodeType":"YulFunctionCall","src":"5509:30:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5474:6:11"},"nodeType":"YulFunctionCall","src":"5474:66:11"},"nodeType":"YulExpressionStatement","src":"5474:66:11"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5421:1:11"},{"name":"length","nodeType":"YulIdentifier","src":"5424:6:11"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5418:2:11"},"nodeType":"YulFunctionCall","src":"5418:13:11"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5432:19:11","statements":[{"nodeType":"YulAssignment","src":"5434:15:11","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5443:1:11"},{"name":"_1","nodeType":"YulIdentifier","src":"5446:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5439:3:11"},"nodeType":"YulFunctionCall","src":"5439:10:11"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5434:1:11"}]}]},"pre":{"nodeType":"YulBlock","src":"5414:3:11","statements":[]},"src":"5410:140:11"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5574:9:11"},{"name":"length","nodeType":"YulIdentifier","src":"5585:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5570:3:11"},"nodeType":"YulFunctionCall","src":"5570:22:11"},{"kind":"number","nodeType":"YulLiteral","src":"5594:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5566:3:11"},"nodeType":"YulFunctionCall","src":"5566:31:11"},{"kind":"number","nodeType":"YulLiteral","src":"5599:1:11","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5559:6:11"},"nodeType":"YulFunctionCall","src":"5559:42:11"},"nodeType":"YulExpressionStatement","src":"5559:42:11"},{"nodeType":"YulAssignment","src":"5610:62:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5626:9:11"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5645:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"5653:2:11","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5641:3:11"},"nodeType":"YulFunctionCall","src":"5641:15:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5662:2:11","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5658:3:11"},"nodeType":"YulFunctionCall","src":"5658:7:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5637:3:11"},"nodeType":"YulFunctionCall","src":"5637:29:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5622:3:11"},"nodeType":"YulFunctionCall","src":"5622:45:11"},{"kind":"number","nodeType":"YulLiteral","src":"5669:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5618:3:11"},"nodeType":"YulFunctionCall","src":"5618:54:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5610:4:11"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5220:9:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5231:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5242:4:11","type":""}],"src":"5132:546:11"},{"body":{"nodeType":"YulBlock","src":"5789:438:11","statements":[{"body":{"nodeType":"YulBlock","src":"5835:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5844:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5847:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5837:6:11"},"nodeType":"YulFunctionCall","src":"5837:12:11"},"nodeType":"YulExpressionStatement","src":"5837:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5810:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"5819:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5806:3:11"},"nodeType":"YulFunctionCall","src":"5806:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"5831:2:11","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5802:3:11"},"nodeType":"YulFunctionCall","src":"5802:32:11"},"nodeType":"YulIf","src":"5799:52:11"},{"nodeType":"YulVariableDeclaration","src":"5860:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5886:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5873:12:11"},"nodeType":"YulFunctionCall","src":"5873:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5864:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5930:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"5905:24:11"},"nodeType":"YulFunctionCall","src":"5905:31:11"},"nodeType":"YulExpressionStatement","src":"5905:31:11"},{"nodeType":"YulAssignment","src":"5945:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"5955:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5945:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"5969:46:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6000:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"6011:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5996:3:11"},"nodeType":"YulFunctionCall","src":"5996:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5983:12:11"},"nodeType":"YulFunctionCall","src":"5983:32:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5973:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"6058:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6067:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6070:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6060:6:11"},"nodeType":"YulFunctionCall","src":"6060:12:11"},"nodeType":"YulExpressionStatement","src":"6060:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6030:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"6038:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6027:2:11"},"nodeType":"YulFunctionCall","src":"6027:30:11"},"nodeType":"YulIf","src":"6024:50:11"},{"nodeType":"YulVariableDeclaration","src":"6083:84:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6139:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"6150:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6135:3:11"},"nodeType":"YulFunctionCall","src":"6135:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6159:7:11"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"6109:25:11"},"nodeType":"YulFunctionCall","src":"6109:58:11"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"6087:8:11","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"6097:8:11","type":""}]},{"nodeType":"YulAssignment","src":"6176:18:11","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"6186:8:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6176:6:11"}]},{"nodeType":"YulAssignment","src":"6203:18:11","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"6213:8:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6203:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5739:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5750:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5762:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5770:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5778:6:11","type":""}],"src":"5683:544:11"},{"body":{"nodeType":"YulBlock","src":"6333:102:11","statements":[{"nodeType":"YulAssignment","src":"6343:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6355:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"6366:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6351:3:11"},"nodeType":"YulFunctionCall","src":"6351:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6343:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6385:9:11"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6400:6:11"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6416:3:11","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6421:1:11","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6412:3:11"},"nodeType":"YulFunctionCall","src":"6412:11:11"},{"kind":"number","nodeType":"YulLiteral","src":"6425:1:11","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6408:3:11"},"nodeType":"YulFunctionCall","src":"6408:19:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6396:3:11"},"nodeType":"YulFunctionCall","src":"6396:32:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6378:6:11"},"nodeType":"YulFunctionCall","src":"6378:51:11"},"nodeType":"YulExpressionStatement","src":"6378:51:11"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6302:9:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6313:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6324:4:11","type":""}],"src":"6232:203:11"},{"body":{"nodeType":"YulBlock","src":"6504:648:11","statements":[{"body":{"nodeType":"YulBlock","src":"6553:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6562:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6565:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6555:6:11"},"nodeType":"YulFunctionCall","src":"6555:12:11"},"nodeType":"YulExpressionStatement","src":"6555:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6532:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"6540:4:11","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6528:3:11"},"nodeType":"YulFunctionCall","src":"6528:17:11"},{"name":"end","nodeType":"YulIdentifier","src":"6547:3:11"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6524:3:11"},"nodeType":"YulFunctionCall","src":"6524:27:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6517:6:11"},"nodeType":"YulFunctionCall","src":"6517:35:11"},"nodeType":"YulIf","src":"6514:55:11"},{"nodeType":"YulVariableDeclaration","src":"6578:30:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6601:6:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6588:12:11"},"nodeType":"YulFunctionCall","src":"6588:20:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6582:2:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6617:14:11","value":{"kind":"number","nodeType":"YulLiteral","src":"6627:4:11","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"6621:2:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"6670:22:11","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6672:16:11"},"nodeType":"YulFunctionCall","src":"6672:18:11"},"nodeType":"YulExpressionStatement","src":"6672:18:11"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6646:2:11"},{"kind":"number","nodeType":"YulLiteral","src":"6650:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6643:2:11"},"nodeType":"YulFunctionCall","src":"6643:26:11"},"nodeType":"YulIf","src":"6640:52:11"},{"nodeType":"YulVariableDeclaration","src":"6701:20:11","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6715:1:11","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"6718:2:11"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6711:3:11"},"nodeType":"YulFunctionCall","src":"6711:10:11"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"6705:2:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6730:39:11","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6761:2:11"},{"name":"_2","nodeType":"YulIdentifier","src":"6765:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6757:3:11"},"nodeType":"YulFunctionCall","src":"6757:11:11"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"6741:15:11"},"nodeType":"YulFunctionCall","src":"6741:28:11"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"6734:3:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6778:16:11","value":{"name":"dst","nodeType":"YulIdentifier","src":"6791:3:11"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"6782:5:11","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6810:3:11"},{"name":"_1","nodeType":"YulIdentifier","src":"6815:2:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6803:6:11"},"nodeType":"YulFunctionCall","src":"6803:15:11"},"nodeType":"YulExpressionStatement","src":"6803:15:11"},{"nodeType":"YulAssignment","src":"6827:19:11","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6838:3:11"},{"name":"_2","nodeType":"YulIdentifier","src":"6843:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6834:3:11"},"nodeType":"YulFunctionCall","src":"6834:12:11"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"6827:3:11"}]},{"nodeType":"YulVariableDeclaration","src":"6855:38:11","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6877:6:11"},{"name":"_3","nodeType":"YulIdentifier","src":"6885:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6873:3:11"},"nodeType":"YulFunctionCall","src":"6873:15:11"},{"name":"_2","nodeType":"YulIdentifier","src":"6890:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6869:3:11"},"nodeType":"YulFunctionCall","src":"6869:24:11"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"6859:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"6921:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6930:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6933:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6923:6:11"},"nodeType":"YulFunctionCall","src":"6923:12:11"},"nodeType":"YulExpressionStatement","src":"6923:12:11"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"6908:6:11"},{"name":"end","nodeType":"YulIdentifier","src":"6916:3:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6905:2:11"},"nodeType":"YulFunctionCall","src":"6905:15:11"},"nodeType":"YulIf","src":"6902:35:11"},{"nodeType":"YulVariableDeclaration","src":"6946:26:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6961:6:11"},{"name":"_2","nodeType":"YulIdentifier","src":"6969:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6957:3:11"},"nodeType":"YulFunctionCall","src":"6957:15:11"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"6950:3:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"7037:86:11","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7058:3:11"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7076:3:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7063:12:11"},"nodeType":"YulFunctionCall","src":"7063:17:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7051:6:11"},"nodeType":"YulFunctionCall","src":"7051:30:11"},"nodeType":"YulExpressionStatement","src":"7051:30:11"},{"nodeType":"YulAssignment","src":"7094:19:11","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7105:3:11"},{"name":"_2","nodeType":"YulIdentifier","src":"7110:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7101:3:11"},"nodeType":"YulFunctionCall","src":"7101:12:11"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"7094:3:11"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6992:3:11"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"6997:6:11"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6989:2:11"},"nodeType":"YulFunctionCall","src":"6989:15:11"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7005:23:11","statements":[{"nodeType":"YulAssignment","src":"7007:19:11","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7018:3:11"},{"name":"_2","nodeType":"YulIdentifier","src":"7023:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7014:3:11"},"nodeType":"YulFunctionCall","src":"7014:12:11"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"7007:3:11"}]}]},"pre":{"nodeType":"YulBlock","src":"6985:3:11","statements":[]},"src":"6981:142:11"},{"nodeType":"YulAssignment","src":"7132:14:11","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"7141:5:11"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"7132:5:11"}]}]},"name":"abi_decode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6478:6:11","type":""},{"name":"end","nodeType":"YulTypedName","src":"6486:3:11","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"6494:5:11","type":""}],"src":"6440:712:11"},{"body":{"nodeType":"YulBlock","src":"7354:874:11","statements":[{"body":{"nodeType":"YulBlock","src":"7401:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7410:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7413:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7403:6:11"},"nodeType":"YulFunctionCall","src":"7403:12:11"},"nodeType":"YulExpressionStatement","src":"7403:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7375:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"7384:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7371:3:11"},"nodeType":"YulFunctionCall","src":"7371:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"7396:3:11","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7367:3:11"},"nodeType":"YulFunctionCall","src":"7367:33:11"},"nodeType":"YulIf","src":"7364:53:11"},{"nodeType":"YulVariableDeclaration","src":"7426:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7452:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7439:12:11"},"nodeType":"YulFunctionCall","src":"7439:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7430:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7496:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"7471:24:11"},"nodeType":"YulFunctionCall","src":"7471:31:11"},"nodeType":"YulExpressionStatement","src":"7471:31:11"},{"nodeType":"YulAssignment","src":"7511:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"7521:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7511:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"7535:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7567:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"7578:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7563:3:11"},"nodeType":"YulFunctionCall","src":"7563:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7550:12:11"},"nodeType":"YulFunctionCall","src":"7550:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"7539:7:11","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"7616:7:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"7591:24:11"},"nodeType":"YulFunctionCall","src":"7591:33:11"},"nodeType":"YulExpressionStatement","src":"7591:33:11"},{"nodeType":"YulAssignment","src":"7633:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"7643:7:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7633:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"7659:46:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7690:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"7701:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7686:3:11"},"nodeType":"YulFunctionCall","src":"7686:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7673:12:11"},"nodeType":"YulFunctionCall","src":"7673:32:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7663:6:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7714:28:11","value":{"kind":"number","nodeType":"YulLiteral","src":"7724:18:11","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7718:2:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"7769:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7778:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7781:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7771:6:11"},"nodeType":"YulFunctionCall","src":"7771:12:11"},"nodeType":"YulExpressionStatement","src":"7771:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7757:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"7765:2:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7754:2:11"},"nodeType":"YulFunctionCall","src":"7754:14:11"},"nodeType":"YulIf","src":"7751:34:11"},{"nodeType":"YulAssignment","src":"7794:71:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7837:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"7848:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7833:3:11"},"nodeType":"YulFunctionCall","src":"7833:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7857:7:11"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"7804:28:11"},"nodeType":"YulFunctionCall","src":"7804:61:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7794:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"7874:48:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7907:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"7918:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7903:3:11"},"nodeType":"YulFunctionCall","src":"7903:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7890:12:11"},"nodeType":"YulFunctionCall","src":"7890:32:11"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"7878:8:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"7951:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7960:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7963:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7953:6:11"},"nodeType":"YulFunctionCall","src":"7953:12:11"},"nodeType":"YulExpressionStatement","src":"7953:12:11"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"7937:8:11"},{"name":"_1","nodeType":"YulIdentifier","src":"7947:2:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7934:2:11"},"nodeType":"YulFunctionCall","src":"7934:16:11"},"nodeType":"YulIf","src":"7931:36:11"},{"nodeType":"YulAssignment","src":"7976:73:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8019:9:11"},{"name":"offset_1","nodeType":"YulIdentifier","src":"8030:8:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8015:3:11"},"nodeType":"YulFunctionCall","src":"8015:24:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8041:7:11"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"7986:28:11"},"nodeType":"YulFunctionCall","src":"7986:63:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7976:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"8058:49:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8091:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"8102:3:11","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8087:3:11"},"nodeType":"YulFunctionCall","src":"8087:19:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8074:12:11"},"nodeType":"YulFunctionCall","src":"8074:33:11"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"8062:8:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"8136:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8145:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8148:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8138:6:11"},"nodeType":"YulFunctionCall","src":"8138:12:11"},"nodeType":"YulExpressionStatement","src":"8138:12:11"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"8122:8:11"},{"name":"_1","nodeType":"YulIdentifier","src":"8132:2:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8119:2:11"},"nodeType":"YulFunctionCall","src":"8119:16:11"},"nodeType":"YulIf","src":"8116:36:11"},{"nodeType":"YulAssignment","src":"8161:61:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8192:9:11"},{"name":"offset_2","nodeType":"YulIdentifier","src":"8203:8:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8188:3:11"},"nodeType":"YulFunctionCall","src":"8188:24:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8214:7:11"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"8171:16:11"},"nodeType":"YulFunctionCall","src":"8171:51:11"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"8161:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7288:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7299:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7311:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7319:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7327:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7335:6:11","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7343:6:11","type":""}],"src":"7157:1071:11"},{"body":{"nodeType":"YulBlock","src":"8334:76:11","statements":[{"nodeType":"YulAssignment","src":"8344:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8356:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"8367:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8352:3:11"},"nodeType":"YulFunctionCall","src":"8352:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8344:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8386:9:11"},{"name":"value0","nodeType":"YulIdentifier","src":"8397:6:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8379:6:11"},"nodeType":"YulFunctionCall","src":"8379:25:11"},"nodeType":"YulExpressionStatement","src":"8379:25:11"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8303:9:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8314:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8325:4:11","type":""}],"src":"8233:177:11"},{"body":{"nodeType":"YulBlock","src":"8504:320:11","statements":[{"body":{"nodeType":"YulBlock","src":"8550:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8559:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8562:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8552:6:11"},"nodeType":"YulFunctionCall","src":"8552:12:11"},"nodeType":"YulExpressionStatement","src":"8552:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8525:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"8534:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8521:3:11"},"nodeType":"YulFunctionCall","src":"8521:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"8546:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8517:3:11"},"nodeType":"YulFunctionCall","src":"8517:32:11"},"nodeType":"YulIf","src":"8514:52:11"},{"nodeType":"YulVariableDeclaration","src":"8575:37:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8602:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8589:12:11"},"nodeType":"YulFunctionCall","src":"8589:23:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8579:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"8655:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8664:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8667:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8657:6:11"},"nodeType":"YulFunctionCall","src":"8657:12:11"},"nodeType":"YulExpressionStatement","src":"8657:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8627:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"8635:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8624:2:11"},"nodeType":"YulFunctionCall","src":"8624:30:11"},"nodeType":"YulIf","src":"8621:50:11"},{"nodeType":"YulVariableDeclaration","src":"8680:84:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8736:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"8747:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8732:3:11"},"nodeType":"YulFunctionCall","src":"8732:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8756:7:11"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"8706:25:11"},"nodeType":"YulFunctionCall","src":"8706:58:11"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"8684:8:11","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"8694:8:11","type":""}]},{"nodeType":"YulAssignment","src":"8773:18:11","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"8783:8:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8773:6:11"}]},{"nodeType":"YulAssignment","src":"8800:18:11","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"8810:8:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8800:6:11"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8462:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8473:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8485:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8493:6:11","type":""}],"src":"8415:409:11"},{"body":{"nodeType":"YulBlock","src":"8899:110:11","statements":[{"body":{"nodeType":"YulBlock","src":"8945:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8954:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8957:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8947:6:11"},"nodeType":"YulFunctionCall","src":"8947:12:11"},"nodeType":"YulExpressionStatement","src":"8947:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8920:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"8929:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8916:3:11"},"nodeType":"YulFunctionCall","src":"8916:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"8941:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8912:3:11"},"nodeType":"YulFunctionCall","src":"8912:32:11"},"nodeType":"YulIf","src":"8909:52:11"},{"nodeType":"YulAssignment","src":"8970:33:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8993:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8980:12:11"},"nodeType":"YulFunctionCall","src":"8980:23:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8970:6:11"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8865:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8876:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8888:6:11","type":""}],"src":"8829:180:11"},{"body":{"nodeType":"YulBlock","src":"9161:587:11","statements":[{"body":{"nodeType":"YulBlock","src":"9208:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9217:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9220:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9210:6:11"},"nodeType":"YulFunctionCall","src":"9210:12:11"},"nodeType":"YulExpressionStatement","src":"9210:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9182:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"9191:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9178:3:11"},"nodeType":"YulFunctionCall","src":"9178:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"9203:3:11","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9174:3:11"},"nodeType":"YulFunctionCall","src":"9174:33:11"},"nodeType":"YulIf","src":"9171:53:11"},{"nodeType":"YulVariableDeclaration","src":"9233:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9259:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9246:12:11"},"nodeType":"YulFunctionCall","src":"9246:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9237:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9303:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"9278:24:11"},"nodeType":"YulFunctionCall","src":"9278:31:11"},"nodeType":"YulExpressionStatement","src":"9278:31:11"},{"nodeType":"YulAssignment","src":"9318:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"9328:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9318:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"9342:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9374:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"9385:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9370:3:11"},"nodeType":"YulFunctionCall","src":"9370:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9357:12:11"},"nodeType":"YulFunctionCall","src":"9357:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9346:7:11","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9423:7:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"9398:24:11"},"nodeType":"YulFunctionCall","src":"9398:33:11"},"nodeType":"YulExpressionStatement","src":"9398:33:11"},{"nodeType":"YulAssignment","src":"9440:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"9450:7:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9440:6:11"}]},{"nodeType":"YulAssignment","src":"9466:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9493:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"9504:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9489:3:11"},"nodeType":"YulFunctionCall","src":"9489:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9476:12:11"},"nodeType":"YulFunctionCall","src":"9476:32:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9466:6:11"}]},{"nodeType":"YulAssignment","src":"9517:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9544:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"9555:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9540:3:11"},"nodeType":"YulFunctionCall","src":"9540:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9527:12:11"},"nodeType":"YulFunctionCall","src":"9527:32:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9517:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"9568:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9599:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"9610:3:11","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9595:3:11"},"nodeType":"YulFunctionCall","src":"9595:19:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9582:12:11"},"nodeType":"YulFunctionCall","src":"9582:33:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9572:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"9658:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9667:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9670:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9660:6:11"},"nodeType":"YulFunctionCall","src":"9660:12:11"},"nodeType":"YulExpressionStatement","src":"9660:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9630:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"9638:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9627:2:11"},"nodeType":"YulFunctionCall","src":"9627:30:11"},"nodeType":"YulIf","src":"9624:50:11"},{"nodeType":"YulAssignment","src":"9683:59:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9714:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"9725:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9710:3:11"},"nodeType":"YulFunctionCall","src":"9710:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9734:7:11"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"9693:16:11"},"nodeType":"YulFunctionCall","src":"9693:49:11"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"9683:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9095:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9106:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9118:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9126:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9134:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9142:6:11","type":""},{"name":"value4","nodeType":"YulTypedName","src":"9150:6:11","type":""}],"src":"9014:734:11"},{"body":{"nodeType":"YulBlock","src":"9910:188:11","statements":[{"nodeType":"YulAssignment","src":"9920:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9932:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"9943:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9928:3:11"},"nodeType":"YulFunctionCall","src":"9928:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9920:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9962:9:11"},{"name":"value0","nodeType":"YulIdentifier","src":"9973:6:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9955:6:11"},"nodeType":"YulFunctionCall","src":"9955:25:11"},"nodeType":"YulExpressionStatement","src":"9955:25:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10000:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"10011:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9996:3:11"},"nodeType":"YulFunctionCall","src":"9996:18:11"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10020:6:11"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10036:3:11","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"10041:1:11","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10032:3:11"},"nodeType":"YulFunctionCall","src":"10032:11:11"},{"kind":"number","nodeType":"YulLiteral","src":"10045:1:11","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10028:3:11"},"nodeType":"YulFunctionCall","src":"10028:19:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10016:3:11"},"nodeType":"YulFunctionCall","src":"10016:32:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9989:6:11"},"nodeType":"YulFunctionCall","src":"9989:60:11"},"nodeType":"YulExpressionStatement","src":"9989:60:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10069:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"10080:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10065:3:11"},"nodeType":"YulFunctionCall","src":"10065:18:11"},{"name":"value2","nodeType":"YulIdentifier","src":"10085:6:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10058:6:11"},"nodeType":"YulFunctionCall","src":"10058:34:11"},"nodeType":"YulExpressionStatement","src":"10058:34:11"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9863:9:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9874:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9882:6:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9890:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9901:4:11","type":""}],"src":"9753:345:11"},{"body":{"nodeType":"YulBlock","src":"10135:95:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10152:1:11","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10159:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10164:10:11","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10155:3:11"},"nodeType":"YulFunctionCall","src":"10155:20:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10145:6:11"},"nodeType":"YulFunctionCall","src":"10145:31:11"},"nodeType":"YulExpressionStatement","src":"10145:31:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10192:1:11","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10195:4:11","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10185:6:11"},"nodeType":"YulFunctionCall","src":"10185:15:11"},"nodeType":"YulExpressionStatement","src":"10185:15:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10216:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10219:4:11","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10209:6:11"},"nodeType":"YulFunctionCall","src":"10209:15:11"},"nodeType":"YulExpressionStatement","src":"10209:15:11"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"10103:127:11"},{"body":{"nodeType":"YulBlock","src":"10302:206:11","statements":[{"body":{"nodeType":"YulBlock","src":"10348:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10357:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10360:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10350:6:11"},"nodeType":"YulFunctionCall","src":"10350:12:11"},"nodeType":"YulExpressionStatement","src":"10350:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10323:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"10332:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10319:3:11"},"nodeType":"YulFunctionCall","src":"10319:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"10344:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10315:3:11"},"nodeType":"YulFunctionCall","src":"10315:32:11"},"nodeType":"YulIf","src":"10312:52:11"},{"nodeType":"YulVariableDeclaration","src":"10373:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10399:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10386:12:11"},"nodeType":"YulFunctionCall","src":"10386:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10377:5:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"10462:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10471:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10474:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10464:6:11"},"nodeType":"YulFunctionCall","src":"10464:12:11"},"nodeType":"YulExpressionStatement","src":"10464:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10431:5:11"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10452:5:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10445:6:11"},"nodeType":"YulFunctionCall","src":"10445:13:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10438:6:11"},"nodeType":"YulFunctionCall","src":"10438:21:11"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10428:2:11"},"nodeType":"YulFunctionCall","src":"10428:32:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10421:6:11"},"nodeType":"YulFunctionCall","src":"10421:40:11"},"nodeType":"YulIf","src":"10418:60:11"},{"nodeType":"YulAssignment","src":"10487:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"10497:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10487:6:11"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10268:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10279:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10291:6:11","type":""}],"src":"10235:273:11"},{"body":{"nodeType":"YulBlock","src":"10583:177:11","statements":[{"body":{"nodeType":"YulBlock","src":"10629:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10638:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10641:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10631:6:11"},"nodeType":"YulFunctionCall","src":"10631:12:11"},"nodeType":"YulExpressionStatement","src":"10631:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10604:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"10613:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10600:3:11"},"nodeType":"YulFunctionCall","src":"10600:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"10625:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10596:3:11"},"nodeType":"YulFunctionCall","src":"10596:32:11"},"nodeType":"YulIf","src":"10593:52:11"},{"nodeType":"YulVariableDeclaration","src":"10654:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10680:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10667:12:11"},"nodeType":"YulFunctionCall","src":"10667:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10658:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10724:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"10699:24:11"},"nodeType":"YulFunctionCall","src":"10699:31:11"},"nodeType":"YulExpressionStatement","src":"10699:31:11"},{"nodeType":"YulAssignment","src":"10739:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"10749:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10739:6:11"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10549:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10560:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10572:6:11","type":""}],"src":"10513:247:11"},{"body":{"nodeType":"YulBlock","src":"10916:234:11","statements":[{"nodeType":"YulAssignment","src":"10926:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10938:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"10949:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10934:3:11"},"nodeType":"YulFunctionCall","src":"10934:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10926:4:11"}]},{"nodeType":"YulVariableDeclaration","src":"10961:29:11","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10979:3:11","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"10984:1:11","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10975:3:11"},"nodeType":"YulFunctionCall","src":"10975:11:11"},{"kind":"number","nodeType":"YulLiteral","src":"10988:1:11","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10971:3:11"},"nodeType":"YulFunctionCall","src":"10971:19:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10965:2:11","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11006:9:11"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11021:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"11029:2:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11017:3:11"},"nodeType":"YulFunctionCall","src":"11017:15:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10999:6:11"},"nodeType":"YulFunctionCall","src":"10999:34:11"},"nodeType":"YulExpressionStatement","src":"10999:34:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11053:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11064:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11049:3:11"},"nodeType":"YulFunctionCall","src":"11049:18:11"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11073:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"11081:2:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11069:3:11"},"nodeType":"YulFunctionCall","src":"11069:15:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11042:6:11"},"nodeType":"YulFunctionCall","src":"11042:43:11"},"nodeType":"YulExpressionStatement","src":"11042:43:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11105:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11116:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11101:3:11"},"nodeType":"YulFunctionCall","src":"11101:18:11"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11135:6:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11128:6:11"},"nodeType":"YulFunctionCall","src":"11128:14:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11121:6:11"},"nodeType":"YulFunctionCall","src":"11121:22:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11094:6:11"},"nodeType":"YulFunctionCall","src":"11094:50:11"},"nodeType":"YulExpressionStatement","src":"11094:50:11"}]},"name":"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10869:9:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10880:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10888:6:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10896:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10907:4:11","type":""}],"src":"10765:385:11"},{"body":{"nodeType":"YulBlock","src":"11187:95:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11204:1:11","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11211:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"11216:10:11","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11207:3:11"},"nodeType":"YulFunctionCall","src":"11207:20:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11197:6:11"},"nodeType":"YulFunctionCall","src":"11197:31:11"},"nodeType":"YulExpressionStatement","src":"11197:31:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11244:1:11","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11247:4:11","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11237:6:11"},"nodeType":"YulFunctionCall","src":"11237:15:11"},"nodeType":"YulExpressionStatement","src":"11237:15:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11268:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11271:4:11","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11261:6:11"},"nodeType":"YulFunctionCall","src":"11261:15:11"},"nodeType":"YulExpressionStatement","src":"11261:15:11"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"11155:127:11"},{"body":{"nodeType":"YulBlock","src":"11334:88:11","statements":[{"body":{"nodeType":"YulBlock","src":"11365:22:11","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"11367:16:11"},"nodeType":"YulFunctionCall","src":"11367:18:11"},"nodeType":"YulExpressionStatement","src":"11367:18:11"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11350:5:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11361:1:11","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11357:3:11"},"nodeType":"YulFunctionCall","src":"11357:6:11"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11347:2:11"},"nodeType":"YulFunctionCall","src":"11347:17:11"},"nodeType":"YulIf","src":"11344:43:11"},{"nodeType":"YulAssignment","src":"11396:20:11","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11407:5:11"},{"kind":"number","nodeType":"YulLiteral","src":"11414:1:11","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11403:3:11"},"nodeType":"YulFunctionCall","src":"11403:13:11"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"11396:3:11"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11316:5:11","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"11326:3:11","type":""}],"src":"11287:135:11"},{"body":{"nodeType":"YulBlock","src":"11601:172:11","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11618:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11629:2:11","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11611:6:11"},"nodeType":"YulFunctionCall","src":"11611:21:11"},"nodeType":"YulExpressionStatement","src":"11611:21:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11652:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11663:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11648:3:11"},"nodeType":"YulFunctionCall","src":"11648:18:11"},{"kind":"number","nodeType":"YulLiteral","src":"11668:2:11","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11641:6:11"},"nodeType":"YulFunctionCall","src":"11641:30:11"},"nodeType":"YulExpressionStatement","src":"11641:30:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11691:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11702:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11687:3:11"},"nodeType":"YulFunctionCall","src":"11687:18:11"},{"hexValue":"4d6574686f6420616c6c206e6f7420616c6c6f776564","kind":"string","nodeType":"YulLiteral","src":"11707:24:11","type":"","value":"Method all not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11680:6:11"},"nodeType":"YulFunctionCall","src":"11680:52:11"},"nodeType":"YulExpressionStatement","src":"11680:52:11"},{"nodeType":"YulAssignment","src":"11741:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11753:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11764:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11749:3:11"},"nodeType":"YulFunctionCall","src":"11749:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11741:4:11"}]}]},"name":"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11578:9:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11592:4:11","type":""}],"src":"11427:346:11"},{"body":{"nodeType":"YulBlock","src":"11859:170:11","statements":[{"body":{"nodeType":"YulBlock","src":"11905:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11914:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11917:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11907:6:11"},"nodeType":"YulFunctionCall","src":"11907:12:11"},"nodeType":"YulExpressionStatement","src":"11907:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11880:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"11889:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11876:3:11"},"nodeType":"YulFunctionCall","src":"11876:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"11901:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11872:3:11"},"nodeType":"YulFunctionCall","src":"11872:32:11"},"nodeType":"YulIf","src":"11869:52:11"},{"nodeType":"YulVariableDeclaration","src":"11930:29:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11949:9:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11943:5:11"},"nodeType":"YulFunctionCall","src":"11943:16:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11934:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11993:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"11968:24:11"},"nodeType":"YulFunctionCall","src":"11968:31:11"},"nodeType":"YulExpressionStatement","src":"11968:31:11"},{"nodeType":"YulAssignment","src":"12008:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"12018:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12008:6:11"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11825:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11836:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11848:6:11","type":""}],"src":"11778:251:11"},{"body":{"nodeType":"YulBlock","src":"12164:201:11","statements":[{"body":{"nodeType":"YulBlock","src":"12202:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12211:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12214:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12204:6:11"},"nodeType":"YulFunctionCall","src":"12204:12:11"},"nodeType":"YulExpressionStatement","src":"12204:12:11"}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"12180:10:11"},{"name":"endIndex","nodeType":"YulIdentifier","src":"12192:8:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12177:2:11"},"nodeType":"YulFunctionCall","src":"12177:24:11"},"nodeType":"YulIf","src":"12174:44:11"},{"body":{"nodeType":"YulBlock","src":"12251:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12260:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12263:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12253:6:11"},"nodeType":"YulFunctionCall","src":"12253:12:11"},"nodeType":"YulExpressionStatement","src":"12253:12:11"}]},"condition":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"12233:8:11"},{"name":"length","nodeType":"YulIdentifier","src":"12243:6:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12230:2:11"},"nodeType":"YulFunctionCall","src":"12230:20:11"},"nodeType":"YulIf","src":"12227:40:11"},{"nodeType":"YulAssignment","src":"12276:36:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12293:6:11"},{"name":"startIndex","nodeType":"YulIdentifier","src":"12301:10:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12289:3:11"},"nodeType":"YulFunctionCall","src":"12289:23:11"},"variableNames":[{"name":"offsetOut","nodeType":"YulIdentifier","src":"12276:9:11"}]},{"nodeType":"YulAssignment","src":"12321:38:11","value":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"12338:8:11"},{"name":"startIndex","nodeType":"YulIdentifier","src":"12348:10:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12334:3:11"},"nodeType":"YulFunctionCall","src":"12334:25:11"},"variableNames":[{"name":"lengthOut","nodeType":"YulIdentifier","src":"12321:9:11"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"12098:6:11","type":""},{"name":"length","nodeType":"YulTypedName","src":"12106:6:11","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"12114:10:11","type":""},{"name":"endIndex","nodeType":"YulTypedName","src":"12126:8:11","type":""}],"returnVariables":[{"name":"offsetOut","nodeType":"YulTypedName","src":"12139:9:11","type":""},{"name":"lengthOut","nodeType":"YulTypedName","src":"12150:9:11","type":""}],"src":"12034:331:11"},{"body":{"nodeType":"YulBlock","src":"12470:223:11","statements":[{"nodeType":"YulVariableDeclaration","src":"12480:29:11","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"12503:5:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12490:12:11"},"nodeType":"YulFunctionCall","src":"12490:19:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12484:2:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12518:30:11","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12532:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"12537:10:11","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12528:3:11"},"nodeType":"YulFunctionCall","src":"12528:20:11"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"12522:2:11","type":""}]},{"nodeType":"YulAssignment","src":"12557:20:11","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"12570:2:11"},{"name":"_2","nodeType":"YulIdentifier","src":"12574:2:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12566:3:11"},"nodeType":"YulFunctionCall","src":"12566:11:11"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"12557:5:11"}]},{"body":{"nodeType":"YulBlock","src":"12608:79:11","statements":[{"nodeType":"YulAssignment","src":"12622:55:11","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"12639:2:11"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12651:1:11","type":"","value":"3"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12658:1:11","type":"","value":"4"},{"name":"len","nodeType":"YulIdentifier","src":"12661:3:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12654:3:11"},"nodeType":"YulFunctionCall","src":"12654:11:11"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12647:3:11"},"nodeType":"YulFunctionCall","src":"12647:19:11"},{"name":"_2","nodeType":"YulIdentifier","src":"12668:2:11"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12643:3:11"},"nodeType":"YulFunctionCall","src":"12643:28:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12635:3:11"},"nodeType":"YulFunctionCall","src":"12635:37:11"},{"name":"_2","nodeType":"YulIdentifier","src":"12674:2:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12631:3:11"},"nodeType":"YulFunctionCall","src":"12631:46:11"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"12622:5:11"}]}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"12592:3:11"},{"kind":"number","nodeType":"YulLiteral","src":"12597:1:11","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12589:2:11"},"nodeType":"YulFunctionCall","src":"12589:10:11"},"nodeType":"YulIf","src":"12586:101:11"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"12445:5:11","type":""},{"name":"len","nodeType":"YulTypedName","src":"12452:3:11","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"12460:5:11","type":""}],"src":"12370:323:11"},{"body":{"nodeType":"YulBlock","src":"12746:77:11","statements":[{"nodeType":"YulAssignment","src":"12756:16:11","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12767:1:11"},{"name":"y","nodeType":"YulIdentifier","src":"12770:1:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12763:3:11"},"nodeType":"YulFunctionCall","src":"12763:9:11"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"12756:3:11"}]},{"body":{"nodeType":"YulBlock","src":"12795:22:11","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"12797:16:11"},"nodeType":"YulFunctionCall","src":"12797:18:11"},"nodeType":"YulExpressionStatement","src":"12797:18:11"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12787:1:11"},{"name":"sum","nodeType":"YulIdentifier","src":"12790:3:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12784:2:11"},"nodeType":"YulFunctionCall","src":"12784:10:11"},"nodeType":"YulIf","src":"12781:36:11"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"12729:1:11","type":""},{"name":"y","nodeType":"YulTypedName","src":"12732:1:11","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"12738:3:11","type":""}],"src":"12698:125:11"},{"body":{"nodeType":"YulBlock","src":"12951:258:11","statements":[{"body":{"nodeType":"YulBlock","src":"12997:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13006:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13009:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12999:6:11"},"nodeType":"YulFunctionCall","src":"12999:12:11"},"nodeType":"YulExpressionStatement","src":"12999:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12972:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"12981:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12968:3:11"},"nodeType":"YulFunctionCall","src":"12968:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"12993:2:11","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12964:3:11"},"nodeType":"YulFunctionCall","src":"12964:32:11"},"nodeType":"YulIf","src":"12961:52:11"},{"nodeType":"YulAssignment","src":"13022:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13038:9:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13032:5:11"},"nodeType":"YulFunctionCall","src":"13032:16:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13022:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"13057:38:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13080:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"13091:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13076:3:11"},"nodeType":"YulFunctionCall","src":"13076:18:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13070:5:11"},"nodeType":"YulFunctionCall","src":"13070:25:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"13061:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13129:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"13104:24:11"},"nodeType":"YulFunctionCall","src":"13104:31:11"},"nodeType":"YulExpressionStatement","src":"13104:31:11"},{"nodeType":"YulAssignment","src":"13144:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"13154:5:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13144:6:11"}]},{"nodeType":"YulAssignment","src":"13168:35:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13188:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"13199:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13184:3:11"},"nodeType":"YulFunctionCall","src":"13184:18:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13178:5:11"},"nodeType":"YulFunctionCall","src":"13178:25:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"13168:6:11"}]}]},"name":"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12901:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12912:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12924:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12932:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12940:6:11","type":""}],"src":"12828:381:11"},{"body":{"nodeType":"YulBlock","src":"13361:124:11","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13384:3:11"},{"name":"value0","nodeType":"YulIdentifier","src":"13389:6:11"},{"name":"value1","nodeType":"YulIdentifier","src":"13397:6:11"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"13371:12:11"},"nodeType":"YulFunctionCall","src":"13371:33:11"},"nodeType":"YulExpressionStatement","src":"13371:33:11"},{"nodeType":"YulVariableDeclaration","src":"13413:26:11","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13427:3:11"},{"name":"value1","nodeType":"YulIdentifier","src":"13432:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13423:3:11"},"nodeType":"YulFunctionCall","src":"13423:16:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13417:2:11","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"13455:2:11"},{"kind":"number","nodeType":"YulLiteral","src":"13459:1:11","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13448:6:11"},"nodeType":"YulFunctionCall","src":"13448:13:11"},"nodeType":"YulExpressionStatement","src":"13448:13:11"},{"nodeType":"YulAssignment","src":"13470:9:11","value":{"name":"_1","nodeType":"YulIdentifier","src":"13477:2:11"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13470:3:11"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13329:3:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13334:6:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13342:6:11","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13353:3:11","type":""}],"src":"13214:271:11"}]},"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 abi_decode_array_address_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset_1), dataEnd)\n value2 := value2_1\n value3 := value3_1\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 panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\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 value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\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 abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\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 value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\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_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 value1 := calldataload(add(headStart, 32))\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_1 := calldataload(add(headStart, 96))\n if iszero(eq(value_1, and(value_1, 0xff))) { revert(0, 0) }\n value4 := value_1\n }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\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_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let _3 := shl(5, _1)\n let dst := allocate_memory(add(_3, _2))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, _3), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\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_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\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 panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), iszero(iszero(value2)))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"Method all not allowed\")\n tail := add(headStart, 96)\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 calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n {\n if gt(startIndex, endIndex) { revert(0, 0) }\n if gt(endIndex, length) { revert(0, 0) }\n offsetOut := add(offset, startIndex)\n lengthOut := sub(endIndex, startIndex)\n }\n function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n {\n let _1 := calldataload(array)\n let _2 := shl(224, 0xffffffff)\n value := and(_1, _2)\n if lt(len, 4)\n {\n value := and(and(_1, shl(shl(3, sub(4, len)), _2)), _2)\n }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := mload(headStart)\n let value := mload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n value2 := mload(add(headStart, 64))\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}","id":11,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100ec5760003560e01c8063a4e2d6341161008a578063d0ad253511610059578063d0ad2535146102a7578063dd467064146102c7578063f23a6e61146102e7578063fc0c546a1461031357600080fd5b8063a4e2d63414610230578063bc197c8114610247578063c19d93fb14610273578063ce0617ec1461029157600080fd5b80631f9838b5116100c65780631f9838b51461018857806351945447146101c3578063523e3260146101e35780638da5cb5b1461020357600080fd5b806301ffc9a7146100f8578063039721b11461012d578063150b7a021461014f57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004610a56565b61034b565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004610acc565b6103b2565b005b34801561015b57600080fd5b5061016f61016a366004610c07565b61057b565b6040516001600160e01b03199091168152602001610124565b34801561019457600080fd5b506101186101a3366004610c73565b600160209081526000928352604080842090915290825290205460ff1681565b6101d66101d1366004610cee565b6105e3565b6040516101249190610d68565b3480156101ef57600080fd5b5061016f6101fe366004610db6565b6106b4565b34801561020f57600080fd5b506102186107b8565b6040516001600160a01b039091168152602001610124565b34801561023c57600080fd5b506000544210610118565b34801561025357600080fd5b5061016f610262366004610e8b565b63bc197c8160e01b95945050505050565b34801561027f57600080fd5b5060015b604051908152602001610124565b34801561029d57600080fd5b5061028360005481565b3480156102b357600080fd5b5061016f6102c2366004610f39565b61084e565b3480156102d357600080fd5b5061014d6102e2366004610f7b565b61086f565b3480156102f357600080fd5b5061016f610302366004610f94565b63f23a6e6160e01b95945050505050565b34801561031f57600080fd5b50610328610934565b604080519384526001600160a01b03909216602084015290820152606001610124565b6000806001600160e01b031983166301ffc9a760e01b148061037d57506001600160e01b03198316630271189760e51b145b8061039857506001600160e01b03198316636faff5f160e01b145b905080156103a95750600192915050565b50600092915050565b6000544210156103d557604051636315bfbb60e01b815260040160405180910390fd5b60006103df6107b8565b9050336001600160a01b0382161461040a5760405163ea8e4eb560e01b815260040160405180910390fd5b8382811461042b5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156105725784848281811061044857610448610ffd565b905060200201602081019061045d9190611013565b6001600160a01b03841660009081526001602052604081209089898581811061048857610488610ffd565b905060200201602081019061049d9190611035565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106104f9576104f9610ffd565b905060200201602081019061050e9190611035565b87878581811061052057610520610ffd565b90506020020160208101906105359190611013565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a18061056a81611068565b91505061042e565b50505050505050565b60008060008061058961094c565b92509250925046831480156105a657506001600160a01b03821633145b80156105b157508581145b156105cf5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b606083836105f23383836106b4565b6001600160e01b03191663523e326060e01b146106225760405163ea8e4eb560e01b815260040160405180910390fd5b60005442101561064557604051636315bfbb60e01b815260040160405180910390fd5b8585610651828261099f565b61069a5760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b6106a68a8a8a8a6109da565b9a9950505050505050505050565b60008060006106c161094c565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa15801561070f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107339190611081565b9050806001600160a01b0316876001600160a01b0316036107615750630291f19360e51b92506107b1915050565b6001600160a01b038082166000908152600160209081526040808320938b168352929052205460ff16156107a25750630291f19360e51b92506107b1915050565b506001600160e01b0319925050505b9392505050565b6000806000806107c661094c565b9250925092504683146107dd576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108469190611081565b935050505090565b600061085d600482848661109e565b610866916110c8565b90505b92915050565b6108776107b8565b6001600160a01b0316336001600160a01b0316146108a85760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156108cb57604051636315bfbb60e01b815260040160405180910390fd5b6108d9426301e133806110f8565b8111156108f9576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b600080600061094161094c565b925092509250909192565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610993919061110b565b93509350935050909192565b6000806109ac848461084e565b90506001600160e01b0319811663095ea7b360e01b036109d0576000915050610869565b5060019392505050565b60606000856001600160a01b03168585856040516109f9929190611144565b60006040518083038185875af1925050503d8060008114610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b509250905080610a4d57815160208301fd5b50949350505050565b600060208284031215610a6857600080fd5b81356001600160e01b0319811681146107b157600080fd5b60008083601f840112610a9257600080fd5b50813567ffffffffffffffff811115610aaa57600080fd5b6020830191508360208260051b8501011115610ac557600080fd5b9250929050565b60008060008060408587031215610ae257600080fd5b843567ffffffffffffffff80821115610afa57600080fd5b610b0688838901610a80565b90965094506020870135915080821115610b1f57600080fd5b50610b2c87828801610a80565b95989497509550505050565b6001600160a01b0381168114610b4d57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b8f57610b8f610b50565b604052919050565b600082601f830112610ba857600080fd5b813567ffffffffffffffff811115610bc257610bc2610b50565b610bd5601f8201601f1916602001610b66565b818152846020838601011115610bea57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610c1d57600080fd5b8435610c2881610b38565b93506020850135610c3881610b38565b925060408501359150606085013567ffffffffffffffff811115610c5b57600080fd5b610c6787828801610b97565b91505092959194509250565b60008060408385031215610c8657600080fd5b8235610c9181610b38565b91506020830135610ca181610b38565b809150509250929050565b60008083601f840112610cbe57600080fd5b50813567ffffffffffffffff811115610cd657600080fd5b602083019150836020828501011115610ac557600080fd5b600080600080600060808688031215610d0657600080fd5b8535610d1181610b38565b945060208601359350604086013567ffffffffffffffff811115610d3457600080fd5b610d4088828901610cac565b909450925050606086013560ff81168114610d5a57600080fd5b809150509295509295909350565b600060208083528351808285015260005b81811015610d9557858101830151858201604001528201610d79565b506000604082860101526040601f19601f8301168501019250505092915050565b600080600060408486031215610dcb57600080fd5b8335610dd681610b38565b9250602084013567ffffffffffffffff811115610df257600080fd5b610dfe86828701610cac565b9497909650939450505050565b600082601f830112610e1c57600080fd5b8135602067ffffffffffffffff821115610e3857610e38610b50565b8160051b610e47828201610b66565b9283528481018201928281019087851115610e6157600080fd5b83870192505b84831015610e8057823582529183019190830190610e67565b979650505050505050565b600080600080600060a08688031215610ea357600080fd5b8535610eae81610b38565b94506020860135610ebe81610b38565b9350604086013567ffffffffffffffff80821115610edb57600080fd5b610ee789838a01610e0b565b94506060880135915080821115610efd57600080fd5b610f0989838a01610e0b565b93506080880135915080821115610f1f57600080fd5b50610f2c88828901610b97565b9150509295509295909350565b60008060208385031215610f4c57600080fd5b823567ffffffffffffffff811115610f6357600080fd5b610f6f85828601610cac565b90969095509350505050565b600060208284031215610f8d57600080fd5b5035919050565b600080600080600060a08688031215610fac57600080fd5b8535610fb781610b38565b94506020860135610fc781610b38565b93506040860135925060608601359150608086013567ffffffffffffffff811115610ff157600080fd5b610f2c88828901610b97565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561102557600080fd5b813580151581146107b157600080fd5b60006020828403121561104757600080fd5b81356107b181610b38565b634e487b7160e01b600052601160045260246000fd5b60006001820161107a5761107a611052565b5060010190565b60006020828403121561109357600080fd5b81516107b181610b38565b600080858511156110ae57600080fd5b838611156110bb57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156110f05780818660040360031b1b83161692505b505092915050565b8082018082111561086957610869611052565b60008060006060848603121561112057600080fd5b83519250602084015161113281610b38565b80925050604084015190509250925092565b818382376000910190815291905056fea264697066735822122062a000d968f4f9e334ac56f8fdc909890fab65dffc1717506fc748f45a7b83ba64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA4E2D634 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xD0AD2535 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x230 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x247 JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1F9838B5 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x1E3 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xF3 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0xA56 JUMP JUMPDEST PUSH2 0x34B 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 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0xACC JUMP JUMPDEST PUSH2 0x3B2 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x16A CALLDATASIZE PUSH1 0x4 PUSH2 0xC07 JUMP JUMPDEST PUSH2 0x57B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x1A3 CALLDATASIZE PUSH1 0x4 PUSH2 0xC73 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x1D6 PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0xCEE JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0xD68 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x1FE CALLDATASIZE PUSH1 0x4 PUSH2 0xDB6 JUMP JUMPDEST PUSH2 0x6B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x218 PUSH2 0x7B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x118 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x253 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x262 CALLDATASIZE PUSH1 0x4 PUSH2 0xE8B JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x283 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF39 JUMP JUMPDEST PUSH2 0x84E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14D PUSH2 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH2 0xF7B JUMP JUMPDEST PUSH2 0x86F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x302 CALLDATASIZE PUSH1 0x4 PUSH2 0xF94 JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x328 PUSH2 0x934 JUMP JUMPDEST 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 0x124 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x37D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x398 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3A9 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3DF PUSH2 0x7B8 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x40A JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x42B JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x572 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x448 JUMPI PUSH2 0x448 PUSH2 0xFFD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x45D SWAP2 SWAP1 PUSH2 0x1013 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x488 JUMPI PUSH2 0x488 PUSH2 0xFFD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x49D SWAP2 SWAP1 PUSH2 0x1035 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x4F9 JUMPI PUSH2 0x4F9 PUSH2 0xFFD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x50E SWAP2 SWAP1 PUSH2 0x1035 JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x520 JUMPI PUSH2 0x520 PUSH2 0xFFD JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x535 SWAP2 SWAP1 PUSH2 0x1013 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x56A DUP2 PUSH2 0x1068 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x42E JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x589 PUSH2 0x94C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x5A6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x5B1 JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x5CF JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP4 PUSH2 0x5F2 CALLER DUP4 DUP4 PUSH2 0x6B4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x523E3260 PUSH1 0xE0 SHL EQ PUSH2 0x622 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x645 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP6 PUSH2 0x651 DUP3 DUP3 PUSH2 0x99F JUMP JUMPDEST PUSH2 0x69A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6A6 DUP11 DUP11 DUP11 DUP11 PUSH2 0x9DA JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x6C1 PUSH2 0x94C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0x70F 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 0x733 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x761 JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL SWAP3 POP PUSH2 0x7B1 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x7A2 JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL SWAP3 POP PUSH2 0x7B1 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x7C6 PUSH2 0x94C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x7DD JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x822 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 0x846 SWAP2 SWAP1 PUSH2 0x1081 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x85D PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x109E JUMP JUMPDEST PUSH2 0x866 SWAP2 PUSH2 0x10C8 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x877 PUSH2 0x7B8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8A8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x8CB JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8D9 TIMESTAMP PUSH4 0x1E13380 PUSH2 0x10F8 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x941 PUSH2 0x94C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x993 SWAP2 SWAP1 PUSH2 0x110B JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9AC DUP5 DUP5 PUSH2 0x84E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0x9D0 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x869 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9F9 SWAP3 SWAP2 SWAP1 PUSH2 0x1144 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 0xA36 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 0xA3B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0xA4D JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xA92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xAC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xAFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB06 DUP9 DUP4 DUP10 ADD PUSH2 0xA80 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xB1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB2C DUP8 DUP3 DUP9 ADD PUSH2 0xA80 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB8F JUMPI PUSH2 0xB8F PUSH2 0xB50 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xBA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBC2 JUMPI PUSH2 0xBC2 PUSH2 0xB50 JUMP JUMPDEST PUSH2 0xBD5 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xB66 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xBEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xC28 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xC38 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC67 DUP8 DUP3 DUP9 ADD PUSH2 0xB97 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xC91 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xCA1 DUP2 PUSH2 0xB38 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xAC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xD06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xD11 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD40 DUP9 DUP3 DUP10 ADD PUSH2 0xCAC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xD5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD95 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xD79 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xDCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xDD6 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDFE DUP7 DUP3 DUP8 ADD PUSH2 0xCAC JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xE38 JUMPI PUSH2 0xE38 PUSH2 0xB50 JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0xE47 DUP3 DUP3 ADD PUSH2 0xB66 JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0xE61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0xE80 JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0xE67 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xEA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xEAE DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xEBE DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE7 DUP10 DUP4 DUP11 ADD PUSH2 0xE0B JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF09 DUP10 DUP4 DUP11 ADD PUSH2 0xE0B JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF2C DUP9 DUP3 DUP10 ADD PUSH2 0xB97 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF6F DUP6 DUP3 DUP7 ADD PUSH2 0xCAC JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xFAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xFB7 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xFC7 DUP2 PUSH2 0xB38 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF2C DUP9 DUP3 DUP10 ADD PUSH2 0xB97 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1025 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1047 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7B1 DUP2 PUSH2 0xB38 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x107A JUMPI PUSH2 0x107A PUSH2 0x1052 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1093 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7B1 DUP2 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x10AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x10BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x10F0 JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x869 JUMPI PUSH2 0x869 PUSH2 0x1052 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x1132 DUP2 PUSH2 0xB38 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0xA000D9 PUSH9 0xF4F9E334AC56F8FDC9 MULMOD DUP10 0xF 0xAB PUSH6 0xDFFC1717506F 0xC7 BASEFEE DELEGATECALL GAS PUSH28 0x83BA64736F6C63430008110033000000000000000000000000000000 ","sourceMap":"741:7455:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5241:393;;;;;;;;;;-1:-1:-1;5241:393:6;;;;;:::i;:::-;;:::i;:::-;;;470:14:11;;463:22;445:41;;433:2;418:18;5241:393:6;;;;;;;;2654:528;;;;;;;;;;-1:-1:-1;2654:528:6;;;;;:::i;:::-;;:::i;:::-;;5779:526;;;;;;;;;;-1:-1:-1;5779:526:6;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3559:33:11;;;3541:52;;3529:2;3514:18;5779:526:6;3397:202:11;1023:63:6;;;;;;;;;;-1:-1:-1;1023:63:6;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:320;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4569:535::-;;;;;;;;;;-1:-1:-1;4569:535:6;;;;;:::i;:::-;;:::i;4188:310::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6396:32:11;;;6378:51;;6366:2;6351:18;4188:310:6;6232:203:11;3573:100:6;;;;;;;;;;-1:-1:-1;3614:4:6;3637:11;3651:15;-1:-1:-1;3573:100:6;;6708:244;;;;;;;;;;-1:-1:-1;6708:244:6;;;;;:::i;:::-;-1:-1:-1;;;6708:244:6;;;;;;;;8120:74;;;;;;;;;;-1:-1:-1;8186:1:6;8120:74;;;8379:25:11;;;8367:2;8352:18;8120:74:6;8233:177:11;929:26:6;;;;;;;;;;;;;;;;7996:118;;;;;;;;;;-1:-1:-1;7996:118:6;;;;;:::i;:::-;;:::i;3245:249::-;;;;;;;;;;-1:-1:-1;3245:249:6;;;;;:::i;:::-;;:::i;6395:216::-;;;;;;;;;;-1:-1:-1;6395:216:6;;;;;:::i;:::-;-1:-1:-1;;;6395:216:6;;;;;;;;3805:220;;;;;;;;;;;;;:::i;:::-;;;;9955:25:11;;;-1:-1:-1;;;;;10016:32:11;;;10011:2;9996:18;;9989:60;10065:18;;;10058:34;9943:2;9928:18;3805:220:6;9753:345:11;5241:393:6;5351:4;;-1:-1:-1;;;;;;5393:40:6;;-1:-1:-1;;;5393:40:6;;:105;;-1:-1:-1;;;;;;;5449:49:6;;-1:-1:-1;;;5449:49:6;5393:105;:169;;;-1:-1:-1;;;;;;;5514:48:6;;-1:-1:-1;;;5514:48:6;5393:169;5371:191;;5577:14;5573:31;;;-1:-1:-1;5600:4:6;;5241:393;-1:-1:-1;;5241:393:6:o;5573:31::-;-1:-1:-1;5622:5:6;;5241:393;-1:-1:-1;;5241:393:6:o;2654:528::-;3614:4;3637:11;3651:15;-1:-1:-1;1826:38:6;;;1849:15;;-1:-1:-1;;;1849:15:6;;;;;;;;;;;1826:38;2790:14:::1;2807:7;:5;:7::i;:::-;2790:24:::0;-1:-1:-1;2828:10:6::1;-1:-1:-1::0;;;;;2828:20:6;::::1;;2824:48;;2857:15;;-1:-1:-1::0;;;2857:15:6::1;;;;;;;;;;;2824:48;2900:7:::0;2929:29;;::::1;2925:56;;2967:14;;-1:-1:-1::0;;;2967:14:6::1;;;;;;;;;;;2925:56;2997:9;2992:184;3016:6;3012:1;:10;2992:184;;;3077:12;;3090:1;3077:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3043:19:6;::::1;;::::0;;;:11:::1;:19;::::0;;;;;3063:7;;3071:1;3063:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3043:31:6::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;3043:31:6;:49;;-1:-1:-1;;3043:49:6::1;::::0;::::1;;::::0;;;::::1;::::0;;3111:54:::1;3129:6:::0;3137:7;;3145:1;3137:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3149:12;;3162:1;3149:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3111:54;::::0;;-1:-1:-1;;;;;11017:15:11;;;10999:34;;11069:15;;;;11064:2;11049:18;;11042:43;11128:14;11121:22;11101:18;;;11094:50;10949:2;10934:18;3111:54:6::1;;;;;;;3024:3:::0;::::1;::::0;::::1;:::i;:::-;;;;2992:184;;;;2780:402;;2654:528:::0;;;;:::o;5779:526::-;5930:6;5962:15;5991:21;6026:15;6054:25;:23;:25::i;:::-;5948:131;;;;;;6118:13;6107:7;:24;:67;;;;-1:-1:-1;;;;;;6147:27:6;;6164:10;6147:27;6107:67;:109;;;;;6201:15;6190:7;:26;6107:109;6090:160;;;6234:16;;-1:-1:-1;;;6234:16:6;;;;;;;;;;;6090:160;-1:-1:-1;;;;6268:30:6;5779:526;-1:-1:-1;;;;;;;5779:526:6:o;2271:320::-;2476:12;2424:4;;1639:34;1653:10;1665:7;;1639:13;:34::i;:::-;-1:-1:-1;;;;;1639:48:6;;1677:10;1639:48;;;1635:76;;1696:15;;-1:-1:-1;;;1696:15:6;;;;;;;;;;;1635:76;3614:4;3637:11;3651:15;-1:-1:-1;1826:38:6::1;;;1849:15;;-1:-1:-1::0;;;1849:15:6::1;;;;;;;;;;;1826:38;2461:4:::2;;1955:20;1969:5;;1955:13;:20::i;:::-;1947:55;;;::::0;-1:-1:-1;;;1947:55:6;;11629:2:11;1947:55:6::2;::::0;::::2;11611:21:11::0;11668:2;11648:18;;;11641:30;-1:-1:-1;;;11687:18:11;;;11680:52;11749:18;;1947:55:6::2;;;;;;;;2562:22:::3;2568:2;2572:5;2579:4;;2562:5;:22::i;:::-;2555:29:::0;2271:320;-1:-1:-1;;;;;;;;;;2271:320:6:o;4569:535::-;4653:17;4710:21;4745:15;4773:25;:23;:25::i;:::-;4825:39;;-1:-1:-1;;;4825:39:6;;;;;8379:25:11;;;4682:116:6;;-1:-1:-1;4682:116:6;-1:-1:-1;4808:14:6;;-1:-1:-1;;;;;;4825:30:6;;;;;8352:18:11;;4825:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4808:56;;4922:6;-1:-1:-1;;;;;4912:16:6;:6;-1:-1:-1;;;;;4912:16:6;;4908:39;;-1:-1:-1;;;;4930:17:6;-1:-1:-1;4930:17:6;;-1:-1:-1;;4930:17:6;4908:39;-1:-1:-1;;;;;5023:19:6;;;;;;;:11;:19;;;;;;;;:27;;;;;;;;;;;;5019:50;;;-1:-1:-1;;;;5052:17:6;-1:-1:-1;5052:17:6;;-1:-1:-1;;5052:17:6;5019:50;-1:-1:-1;;;;;;;5080:17:6;-1:-1:-1;;;4569:535:6;;;;;;:::o;4188:310::-;4226:7;4259:15;4288:21;4323:15;4351:25;:23;:25::i;:::-;4245:131;;;;;;4402:13;4391:7;:24;4387:47;;4432:1;4417:17;;;;;4188:310;:::o;4387:47::-;4452:39;;-1:-1:-1;;;4452:39:6;;;;;8379:25:11;;;-1:-1:-1;;;;;4452:30:6;;;;;8352:18:11;;4452:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4445:46;;;;;4188:310;:::o;7996:118::-;8065:6;8097:9;8104:1;8065:6;8097:5;;:9;:::i;:::-;8090:17;;;:::i;:::-;8083:24;;7996:118;;;;;:::o;3245:249::-;1445:7;:5;:7::i;:::-;-1:-1:-1;;;;;1431:21:6;:10;-1:-1:-1;;;;;1431:21:6;;1427:49;;1461:15;;-1:-1:-1;;;1461:15:6;;;;;;;;;;;1427:49;3614:4;3637:11;3651:15;-1:-1:-1;1826:38:6::1;;;1849:15;;-1:-1:-1::0;;;1849:15:6::1;;;;;;;;;;;1826:38;3342:26:::2;:15;3360:8;3342:26;:::i;:::-;3327:12;:41;3323:86;;;3389:20;;-1:-1:-1::0;;;3389:20:6::2;;;;;;;;;;;3323:86;3420:11;:26:::0;;;3462:25:::2;::::0;8379::11;;;3462::6::2;::::0;8367:2:11;8352:18;3462:25:6::2;;;;;;;3245:249:::0;:::o;3805:220::-;3882:15;3911:21;3946:15;3993:25;:23;:25::i;:::-;3986:32;;;;;;3805:220;;;:::o;90:406:10:-;263:15;;;273:4;263:15;;;;;;;;;167:7;;;;;;;;263:15;;;;;;;;;;;-1:-1:-1;263:15:10;241:37;;410:4;404;397;389:6;385:17;374:9;362:53;453:6;442:47;;;;;;;;;;;;:::i;:::-;435:54;;;;;;;90:406;;;:::o;7731:259:6:-;7794:4;7810:16;7829:23;7846:5;;7829:16;:23::i;:::-;7810:42;-1:-1:-1;;;;;;;7900:23:6;;-1:-1:-1;;;7900:23:6;7896:66;;7946:5;7939:12;;;;;7896:66;-1:-1:-1;7979:4:6;;7731:259;-1:-1:-1;;;7731:259:6:o;6997:345::-;7108:19;7139:12;7181:2;-1:-1:-1;;;;;7181:7:6;7196:5;7203:4;;7181:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7161:47:6;-1:-1:-1;7161:47:6;-1:-1:-1;7161:47:6;7219:117;;7304:6;7298:13;7293:2;7285:6;7281:15;7274:38;7219:117;7129:213;6997:345;;;;;;:::o;14:286:11:-;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:11;;209:43;;199:71;;266:1;263;256:12;497:367;560:8;570:6;624:3;617:4;609:6;605:17;601:27;591:55;;642:1;639;632:12;591:55;-1:-1:-1;665:20:11;;708:18;697:30;;694:50;;;740:1;737;730:12;694:50;777:4;769:6;765:17;753:29;;837:3;830:4;820:6;817:1;813:14;805:6;801:27;797:38;794:47;791:67;;;854:1;851;844:12;791:67;497:367;;;;;:::o;869:770::-;988:6;996;1004;1012;1065:2;1053:9;1044:7;1040:23;1036:32;1033:52;;;1081:1;1078;1071:12;1033:52;1121:9;1108:23;1150:18;1191:2;1183:6;1180:14;1177:34;;;1207:1;1204;1197:12;1177:34;1246:70;1308:7;1299:6;1288:9;1284:22;1246:70;:::i;:::-;1335:8;;-1:-1:-1;1220:96:11;-1:-1:-1;1423:2:11;1408:18;;1395:32;;-1:-1:-1;1439:16:11;;;1436:36;;;1468:1;1465;1458:12;1436:36;;1507:72;1571:7;1560:8;1549:9;1545:24;1507:72;:::i;:::-;869:770;;;;-1:-1:-1;1598:8:11;-1:-1:-1;;;;869:770:11:o;1644:131::-;-1:-1:-1;;;;;1719:31:11;;1709:42;;1699:70;;1765:1;1762;1755:12;1699:70;1644:131;:::o;1780:127::-;1841:10;1836:3;1832:20;1829:1;1822:31;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;1912:275;1983:2;1977:9;2048:2;2029:13;;-1:-1:-1;;2025:27:11;2013:40;;2083:18;2068:34;;2104:22;;;2065:62;2062:88;;;2130:18;;:::i;:::-;2166:2;2159:22;1912:275;;-1:-1:-1;1912:275:11:o;2192:530::-;2234:5;2287:3;2280:4;2272:6;2268:17;2264:27;2254:55;;2305:1;2302;2295:12;2254:55;2341:6;2328:20;2367:18;2363:2;2360:26;2357:52;;;2389:18;;:::i;:::-;2433:55;2476:2;2457:13;;-1:-1:-1;;2453:27:11;2482:4;2449:38;2433:55;:::i;:::-;2513:2;2504:7;2497:19;2559:3;2552:4;2547:2;2539:6;2535:15;2531:26;2528:35;2525:55;;;2576:1;2573;2566:12;2525:55;2641:2;2634:4;2626:6;2622:17;2615:4;2606:7;2602:18;2589:55;2689:1;2664:16;;;2682:4;2660:27;2653:38;;;;2668:7;2192:530;-1:-1:-1;;;2192:530:11:o;2727:665::-;2822:6;2830;2838;2846;2899:3;2887:9;2878:7;2874:23;2870:33;2867:53;;;2916:1;2913;2906:12;2867:53;2955:9;2942:23;2974:31;2999:5;2974:31;:::i;:::-;3024:5;-1:-1:-1;3081:2:11;3066:18;;3053:32;3094:33;3053:32;3094:33;:::i;:::-;3146:7;-1:-1:-1;3200:2:11;3185:18;;3172:32;;-1:-1:-1;3255:2:11;3240:18;;3227:32;3282:18;3271:30;;3268:50;;;3314:1;3311;3304:12;3268:50;3337:49;3378:7;3369:6;3358:9;3354:22;3337:49;:::i;:::-;3327:59;;;2727:665;;;;;;;:::o;3604:388::-;3672:6;3680;3733:2;3721:9;3712:7;3708:23;3704:32;3701:52;;;3749:1;3746;3739:12;3701:52;3788:9;3775:23;3807:31;3832:5;3807:31;:::i;:::-;3857:5;-1:-1:-1;3914:2:11;3899:18;;3886:32;3927:33;3886:32;3927:33;:::i;:::-;3979:7;3969:17;;;3604:388;;;;;:::o;3997:347::-;4048:8;4058:6;4112:3;4105:4;4097:6;4093:17;4089:27;4079:55;;4130:1;4127;4120:12;4079:55;-1:-1:-1;4153:20:11;;4196:18;4185:30;;4182:50;;;4228:1;4225;4218:12;4182:50;4265:4;4257:6;4253:17;4241:29;;4317:3;4310:4;4301:6;4293;4289:19;4285:30;4282:39;4279:59;;;4334:1;4331;4324:12;4349:778;4444:6;4452;4460;4468;4476;4529:3;4517:9;4508:7;4504:23;4500:33;4497:53;;;4546:1;4543;4536:12;4497:53;4585:9;4572:23;4604:31;4629:5;4604:31;:::i;:::-;4654:5;-1:-1:-1;4706:2:11;4691:18;;4678:32;;-1:-1:-1;4761:2:11;4746:18;;4733:32;4788:18;4777:30;;4774:50;;;4820:1;4817;4810:12;4774:50;4859:58;4909:7;4900:6;4889:9;4885:22;4859:58;:::i;:::-;4936:8;;-1:-1:-1;4833:84:11;-1:-1:-1;;5023:2:11;5008:18;;4995:32;5071:4;5058:18;;5046:31;;5036:59;;5091:1;5088;5081:12;5036:59;5114:7;5104:17;;;4349:778;;;;;;;;:::o;5132:546::-;5242:4;5271:2;5300;5289:9;5282:21;5332:6;5326:13;5375:6;5370:2;5359:9;5355:18;5348:34;5400:1;5410:140;5424:6;5421:1;5418:13;5410:140;;;5519:14;;;5515:23;;5509:30;5485:17;;;5504:2;5481:26;5474:66;5439:10;;5410:140;;;5414:3;5599:1;5594:2;5585:6;5574:9;5570:22;5566:31;5559:42;5669:2;5662;5658:7;5653:2;5645:6;5641:15;5637:29;5626:9;5622:45;5618:54;5610:62;;;;5132:546;;;;:::o;5683:544::-;5762:6;5770;5778;5831:2;5819:9;5810:7;5806:23;5802:32;5799:52;;;5847:1;5844;5837:12;5799:52;5886:9;5873:23;5905:31;5930:5;5905:31;:::i;:::-;5955:5;-1:-1:-1;6011:2:11;5996:18;;5983:32;6038:18;6027:30;;6024:50;;;6070:1;6067;6060:12;6024:50;6109:58;6159:7;6150:6;6139:9;6135:22;6109:58;:::i;:::-;5683:544;;6186:8;;-1:-1:-1;6083:84:11;;-1:-1:-1;;;;5683:544:11:o;6440:712::-;6494:5;6547:3;6540:4;6532:6;6528:17;6524:27;6514:55;;6565:1;6562;6555:12;6514:55;6601:6;6588:20;6627:4;6650:18;6646:2;6643:26;6640:52;;;6672:18;;:::i;:::-;6718:2;6715:1;6711:10;6741:28;6765:2;6761;6757:11;6741:28;:::i;:::-;6803:15;;;6873;;;6869:24;;;6834:12;;;;6905:15;;;6902:35;;;6933:1;6930;6923:12;6902:35;6969:2;6961:6;6957:15;6946:26;;6981:142;6997:6;6992:3;6989:15;6981:142;;;7063:17;;7051:30;;7014:12;;;;7101;;;;6981:142;;;7141:5;6440:712;-1:-1:-1;;;;;;;6440:712:11:o;7157:1071::-;7311:6;7319;7327;7335;7343;7396:3;7384:9;7375:7;7371:23;7367:33;7364:53;;;7413:1;7410;7403:12;7364:53;7452:9;7439:23;7471:31;7496:5;7471:31;:::i;:::-;7521:5;-1:-1:-1;7578:2:11;7563:18;;7550:32;7591:33;7550:32;7591:33;:::i;:::-;7643:7;-1:-1:-1;7701:2:11;7686:18;;7673:32;7724:18;7754:14;;;7751:34;;;7781:1;7778;7771:12;7751:34;7804:61;7857:7;7848:6;7837:9;7833:22;7804:61;:::i;:::-;7794:71;;7918:2;7907:9;7903:18;7890:32;7874:48;;7947:2;7937:8;7934:16;7931:36;;;7963:1;7960;7953:12;7931:36;7986:63;8041:7;8030:8;8019:9;8015:24;7986:63;:::i;:::-;7976:73;;8102:3;8091:9;8087:19;8074:33;8058:49;;8132:2;8122:8;8119:16;8116:36;;;8148:1;8145;8138:12;8116:36;;8171:51;8214:7;8203:8;8192:9;8188:24;8171:51;:::i;:::-;8161:61;;;7157:1071;;;;;;;;:::o;8415:409::-;8485:6;8493;8546:2;8534:9;8525:7;8521:23;8517:32;8514:52;;;8562:1;8559;8552:12;8514:52;8602:9;8589:23;8635:18;8627:6;8624:30;8621:50;;;8667:1;8664;8657:12;8621:50;8706:58;8756:7;8747:6;8736:9;8732:22;8706:58;:::i;:::-;8783:8;;8680:84;;-1:-1:-1;8415:409:11;-1:-1:-1;;;;8415:409:11:o;8829:180::-;8888:6;8941:2;8929:9;8920:7;8916:23;8912:32;8909:52;;;8957:1;8954;8947:12;8909:52;-1:-1:-1;8980:23:11;;8829:180;-1:-1:-1;8829:180:11:o;9014:734::-;9118:6;9126;9134;9142;9150;9203:3;9191:9;9182:7;9178:23;9174:33;9171:53;;;9220:1;9217;9210:12;9171:53;9259:9;9246:23;9278:31;9303:5;9278:31;:::i;:::-;9328:5;-1:-1:-1;9385:2:11;9370:18;;9357:32;9398:33;9357:32;9398:33;:::i;:::-;9450:7;-1:-1:-1;9504:2:11;9489:18;;9476:32;;-1:-1:-1;9555:2:11;9540:18;;9527:32;;-1:-1:-1;9610:3:11;9595:19;;9582:33;9638:18;9627:30;;9624:50;;;9670:1;9667;9660:12;9624:50;9693:49;9734:7;9725:6;9714:9;9710:22;9693:49;:::i;10103:127::-;10164:10;10159:3;10155:20;10152:1;10145:31;10195:4;10192:1;10185:15;10219:4;10216:1;10209:15;10235:273;10291:6;10344:2;10332:9;10323:7;10319:23;10315:32;10312:52;;;10360:1;10357;10350:12;10312:52;10399:9;10386:23;10452:5;10445:13;10438:21;10431:5;10428:32;10418:60;;10474:1;10471;10464:12;10513:247;10572:6;10625:2;10613:9;10604:7;10600:23;10596:32;10593:52;;;10641:1;10638;10631:12;10593:52;10680:9;10667:23;10699:31;10724:5;10699:31;:::i;11155:127::-;11216:10;11211:3;11207:20;11204:1;11197:31;11247:4;11244:1;11237:15;11271:4;11268:1;11261:15;11287:135;11326:3;11347:17;;;11344:43;;11367:18;;:::i;:::-;-1:-1:-1;11414:1:11;11403:13;;11287:135::o;11778:251::-;11848:6;11901:2;11889:9;11880:7;11876:23;11872:32;11869:52;;;11917:1;11914;11907:12;11869:52;11949:9;11943:16;11968:31;11993:5;11968:31;:::i;12034:331::-;12139:9;12150;12192:8;12180:10;12177:24;12174:44;;;12214:1;12211;12204:12;12174:44;12243:6;12233:8;12230:20;12227:40;;;12263:1;12260;12253:12;12227:40;-1:-1:-1;;12289:23:11;;;12334:25;;;;;-1:-1:-1;12034:331:11:o;12370:323::-;-1:-1:-1;;;;;;12490:19:11;;12566:11;;;;12597:1;12589:10;;12586:101;;;12674:2;12668;12661:3;12658:1;12654:11;12651:1;12647:19;12643:28;12639:2;12635:37;12631:46;12622:55;;12586:101;;;12370:323;;;;:::o;12698:125::-;12763:9;;;12784:10;;;12781:36;;;12797:18;;:::i;12828:381::-;12924:6;12932;12940;12993:2;12981:9;12972:7;12968:23;12964:32;12961:52;;;13009:1;13006;12999:12;12961:52;13038:9;13032:16;13022:26;;13091:2;13080:9;13076:18;13070:25;13104:31;13129:5;13104:31;:::i;:::-;13154:5;13144:15;;;13199:2;13188:9;13184:18;13178:25;13168:35;;12828:381;;;;;:::o;13214:271::-;13397:6;13389;13384:3;13371:33;13353:3;13423:16;;13448:13;;;13423:16;13214:271;-1:-1:-1;13214:271:11:o"},"gasEstimates":{"creation":{"codeDepositCost":"898000","executionCost":"935","totalCost":"898935"},"external":{"execute(address,uint256,bytes,uint8)":"infinite","isLocked()":"2315","isValidSigner(address,bytes)":"infinite","lock(uint256)":"infinite","lockedUntil()":"2384","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"infinite","onERC1155Received(address,address,uint256,uint256,bytes)":"infinite","onERC721Received(address,address,uint256,bytes)":"infinite","owner()":"infinite","parseFirst4Bytes(bytes)":"787","permissions(address,address)":"infinite","setPermissions(address[],bool[])":"infinite","state()":"248","supportsInterface(bytes4)":"538","token()":"infinite"},"internal":{"_call(address,uint256,bytes calldata)":"infinite","_callStatic(address,bytes calldata)":"infinite","allowedMethod(bytes calldata)":"infinite"}},"methodIdentifiers":{"execute(address,uint256,bytes,uint8)":"51945447","isLocked()":"a4e2d634","isValidSigner(address,bytes)":"523e3260","lock(uint256)":"dd467064","lockedUntil()":"ce0617ec","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","owner()":"8da5cb5b","parseFirst4Bytes(bytes)":"d0ad2535","permissions(address,address)":"1f9838b5","setPermissions(address[],bool[])":"039721b1","state()":"c19d93fb","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccountLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxLockTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipCycle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockedUntil\",\"type\":\"uint256\"}],\"name\":\"LockUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"OverrideUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasPermission\",\"type\":\"bool\"}],\"name\":\"PermissionUpdated\",\"type\":\"event\"},{\"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\"},{\"inputs\":[],\"name\":\"isLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":[{\"internalType\":\"uint256\",\"name\":\"_lockedUntil\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockedUntil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"receivedTokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"parseFirst4Bytes\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"permissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"callers\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"_permissions\",\"type\":\"bool[]\"}],\"name\":\"setPermissions\",\"outputs\":[],\"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\":{\"kind\":\"dev\",\"methods\":{\"execute(address,uint256,bytes,uint8)\":{\"details\":\"executes a low-level call against an account if the caller is authorized to make calls\"},\"isLocked()\":{\"details\":\"returns the current lock status of the account as a boolean\"},\"isValidSigner(address,bytes)\":{\"details\":\"Returns the authorization status for a given caller\"},\"lock(uint256)\":{\"details\":\"locks the account until a certain timestamp\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Allows ERC-1155 token batches to be received. This function can be overriden.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Allows ERC-1155 tokens to be received. This function can be overriden.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden.\"},\"owner()\":{\"details\":\"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account.\"},\"setPermissions(address[],bool[])\":{\"details\":\"grants a given caller execution permissions\"},\"state()\":{\"details\":\"Returns a value that SHOULD be modified each time the account changes state.\",\"returns\":{\"_0\":\"The current account state\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if a given interfaceId is supported by this account. This method can be extended by an override.\"},\"token()\":{\"details\":\"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account.\"}},\"stateVariables\":{\"lockedUntil\":{\"details\":\"timestamp at which this account will be unlocked\"},\"permissions\":{\"details\":\"mapping from owner => caller => has permissions\"}},\"title\":\"A smart contract account owned by a single ERC721 token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Account.sol\":\"Account\"},\"evmVersion\":\"london\",\"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 v4.4.1 (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n *\\n * _Available since v4.1._\\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 _data\\n */\\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\nimport \\\"./interfaces/IERC6551Account.sol\\\";\\nimport \\\"./interfaces/IERC6551Executable.sol\\\";\\nimport \\\"./lib/ERC6551AccountLib.sol\\\";\\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/token/ERC1155/IERC1155Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/interfaces/IERC1271.sol\\\";\\n\\nerror NotAuthorized();\\nerror InvalidInput();\\nerror AccountLocked();\\nerror ExceedsMaxLockTime();\\nerror UntrustedImplementation();\\nerror OwnershipCycle();\\n\\n/**\\n * @title A smart contract account owned by a single ERC721 token\\n */\\ncontract Account is\\n IERC165,\\n IERC6551Account,\\n IERC6551Executable,\\n IERC721Receiver,\\n IERC1155Receiver\\n{\\n /// @dev timestamp at which this account will be unlocked\\n uint256 public lockedUntil;\\n\\n /// @dev mapping from owner => caller => has permissions\\n mapping(address => mapping(address => bool)) public permissions;\\n\\n event OverrideUpdated(\\n address owner,\\n bytes4 selector,\\n address implementation\\n );\\n\\n event PermissionUpdated(address owner, address caller, bool hasPermission);\\n\\n event LockUpdated(uint256 lockedUntil);\\n\\n /// @dev reverts if caller is not the owner of the account\\n modifier onlyOwner() {\\n if (msg.sender != owner()) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if caller is not authorized to execute on this account\\n modifier onlyValidSigner(bytes calldata context) {\\n if (isValidSigner(msg.sender, context) != 0x523e3260) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if this account is currently locked\\n modifier onlyUnlocked() {\\n if (isLocked()) revert AccountLocked();\\n _;\\n }\\n\\n modifier onlyAllowedMethod(bytes calldata _data) {\\n require(allowedMethod(_data), \\\"Method all not allowed\\\");\\n _;\\n }\\n\\n constructor() {}\\n\\n /// @dev allows eth transfers by default, but allows account owner to override\\n receive() external payable {\\n }\\n\\n /// @dev executes a low-level call against an account if the caller is authorized to make calls\\n function execute(\\n address to,\\n uint256 value,\\n bytes calldata data,\\n uint8 operation\\n ) external payable onlyValidSigner(data) onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) {\\n // emit TransactionExecuted(to, value, data);\\n\\n return _call(to, value, data);\\n }\\n\\n /// @dev grants a given caller execution permissions\\n function setPermissions(\\n address[] calldata callers,\\n bool[] calldata _permissions\\n ) external onlyUnlocked {\\n address _owner = owner();\\n if (msg.sender != _owner) revert NotAuthorized();\\n\\n uint256 length = callers.length;\\n\\n if (_permissions.length != length) revert InvalidInput();\\n\\n for (uint256 i = 0; i < length; i++) {\\n permissions[_owner][callers[i]] = _permissions[i];\\n emit PermissionUpdated(_owner, callers[i], _permissions[i]);\\n }\\n }\\n\\n /// @dev locks the account until a certain timestamp\\n function lock(uint256 _lockedUntil) external onlyOwner onlyUnlocked {\\n if (_lockedUntil > block.timestamp + 365 days)\\n revert ExceedsMaxLockTime();\\n\\n lockedUntil = _lockedUntil;\\n\\n emit LockUpdated(_lockedUntil);\\n }\\n\\n /// @dev returns the current lock status of the account as a boolean\\n function isLocked() public view returns (bool) {\\n return lockedUntil > block.timestamp;\\n }\\n\\n /// @dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\\n /// owns this account.\\n function token()\\n external\\n view\\n returns (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n )\\n {\\n return ERC6551AccountLib.token();\\n }\\n\\n /// @dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\\n /// of the token has full permissions on the account.\\n function owner() public view returns (address) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (chainId != block.chainid) return address(0);\\n\\n return IERC721(tokenContract).ownerOf(tokenId);\\n }\\n\\n /// @dev Returns the authorization status for a given caller\\n function isValidSigner(address signer, bytes calldata context) public view returns (bytes4 magicValue) {\\n (\\n ,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n address _owner = IERC721(tokenContract).ownerOf(tokenId);\\n\\n // authorize token owner\\n if (signer == _owner) return 0x523e3260;\\n\\n // authorize caller if owner has granted permissions\\n if (permissions[_owner][signer]) return 0x523e3260;\\n\\n return 0xffffffff;\\n }\\n\\n /// @dev Returns true if a given interfaceId is supported by this account. This method can be\\n /// extended by an override.\\n function supportsInterface(bytes4 interfaceId)\\n public\\n pure \\n override\\n returns (bool)\\n {\\n bool defaultSupport = interfaceId == type(IERC165).interfaceId ||\\n interfaceId == type(IERC1155Receiver).interfaceId ||\\n interfaceId == type(IERC6551Account).interfaceId;\\n\\n if (defaultSupport) return true;\\n\\n return false;\\n }\\n\\n /// @dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\\n /// This function can be overriden.\\n function onERC721Received(\\n address,\\n address,\\n uint256 receivedTokenId,\\n bytes memory\\n ) public view override returns (bytes4) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (\\n chainId == block.chainid &&\\n tokenContract == msg.sender &&\\n tokenId == receivedTokenId\\n ) revert OwnershipCycle();\\n\\n return this.onERC721Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 tokens to be received. This function can be overriden.\\n function onERC1155Received(\\n address,\\n address,\\n uint256,\\n uint256,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 token batches to be received. This function can be overriden.\\n function onERC1155BatchReceived(\\n address,\\n address,\\n uint256[] memory,\\n uint256[] memory,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155BatchReceived.selector;\\n }\\n\\n /// @dev Executes a low-level call\\n function _call(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) internal returns (bytes memory result) {\\n bool success;\\n (success, result) = to.call{value: value}(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n /// @dev Executes a low-level static call\\n function _callStatic(address to, bytes calldata data)\\n internal\\n view\\n returns (bytes memory result)\\n {\\n bool success;\\n (success, result) = to.staticcall(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n function allowedMethod(bytes calldata _data) internal returns (bool) {\\n bytes4 signature = parseFirst4Bytes(_data);\\n // approve > 0x095ea7b3\\n\\n if (signature == 0x095ea7b3) {\\n return false;\\n }\\n\\n return true;\\n }\\n\\n function parseFirst4Bytes(bytes calldata _data) public pure returns (bytes4) {\\n return bytes4(_data[:4]);\\n }\\n\\n function state() external view returns (uint256) {\\n return 1;\\n }\\n}\\n\",\"keccak256\":\"0xb2a849cad275dabbb3ebec311ad7bfa62da9a9c5310f0e41dacaa5079110c247\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\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 chain 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\\n\",\"keccak256\":\"0x9972b9769e138d0f5855d5f0990dc9942977088e6fc5a9b1e289431f8e213339\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IERC6551Executable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\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\":\"0x4b24c8509ccf2fc6fd9744df0c994809133522991951dc7c467120b04f683051\",\"license\":\"UNLICENSED\"},\"contracts/lib/ERC6551AccountLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nlibrary ERC6551AccountLib {\\n function token()\\n internal\\n view\\n returns (\\n uint256,\\n address,\\n uint256\\n )\\n {\\n bytes memory footer = new bytes(0x60);\\n\\n assembly {\\n // copy 0x60 bytes from end of footer\\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\\n }\\n\\n return abi.decode(footer, (uint256, address, uint256));\\n }\\n\\n function salt() internal view returns (uint256) {\\n bytes memory footer = new bytes(0x20);\\n\\n assembly {\\n // copy 0x20 bytes from beginning of footer\\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\\n }\\n\\n return abi.decode(footer, (uint256));\\n }\\n}\\n\",\"keccak256\":\"0xf7a8eb3b4fb63068eb8ed2a1a129e4676af842541f43c1a1dc96a9f295060c45\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":314,"contract":"contracts/Account.sol:Account","label":"lockedUntil","offset":0,"slot":"0","type":"t_uint256"},{"astId":321,"contract":"contracts/Account.sol:Account","label":"permissions","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ChargedParticlesAccount.sol":{"ChargedParticlesAccount":{"abi":[{"inputs":[],"name":"AccountLocked","type":"error"},{"inputs":[],"name":"ExceedsMaxLockTime","type":"error"},{"inputs":[],"name":"InvalidInput","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"OwnershipCycle","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockedUntil","type":"uint256"}],"name":"LockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"OverrideUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"hasPermission","type":"bool"}],"name":"PermissionUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"nftTokenAddress","type":"address"},{"internalType":"uint256","name":"nftTokenId","type":"uint256"},{"internalType":"uint256","name":"nftTokenAmount","type":"uint256"}],"name":"breakCovalentBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftTokenAddress","type":"address"},{"internalType":"uint256","name":"nftTokenId","type":"uint256"},{"internalType":"uint256","name":"nftTokenAmount","type":"uint256"}],"name":"covalentBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"assetToken","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"dischargeParticle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"assetToken","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"energizeParticle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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"},{"inputs":[],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"uint256","name":"_lockedUntil","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"receivedTokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"parseFirst4Bytes","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"permissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"callers","type":"address[]"},{"internalType":"bool[]","name":"_permissions","type":"bool[]"}],"name":"setPermissions","outputs":[],"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":{"kind":"dev","methods":{"execute(address,uint256,bytes,uint8)":{"details":"executes a low-level call against an account if the caller is authorized to make calls"},"isLocked()":{"details":"returns the current lock status of the account as a boolean"},"isValidSigner(address,bytes)":{"details":"Returns the authorization status for a given caller"},"lock(uint256)":{"details":"locks the account until a certain timestamp"},"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Allows ERC-1155 token batches to be received. This function can be overriden."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Allows ERC-1155 tokens to be received. This function can be overriden."},"onERC721Received(address,address,uint256,bytes)":{"details":"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden."},"owner()":{"details":"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account."},"setPermissions(address[],bool[])":{"details":"grants a given caller execution permissions"},"state()":{"details":"Returns a value that SHOULD be modified each time the account changes state.","returns":{"_0":"The current account state"}},"supportsInterface(bytes4)":{"details":"Returns true if a given interfaceId is supported by this account. This method can be extended by an override."},"token()":{"details":"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_401":{"entryPoint":null,"id":401,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50611509806100206000396000f3fe6080604052600436106101185760003560e01c8063a65e78f1116100a0578063ce0617ec11610064578063ce0617ec1461033d578063d0ad253514610353578063dd46706414610373578063f23a6e6114610393578063fc0c546a146103bf57600080fd5b8063a65e78f114610293578063a737a299146102b3578063bc197c81146102d3578063c19d93fb146102ff578063ca1cc2201461031d57600080fd5b806351945447116100e757806351945447146101ef578063523e32601461020f5780636b764e1b1461022f5780638da5cb5b1461024f578063a4e2d6341461027c57600080fd5b806301ffc9a714610124578063039721b114610159578063150b7a021461017b5780631f9838b5146101b457600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5061014461013f366004610cc7565b6103f7565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d3d565b61045e565b005b34801561018757600080fd5b5061019b610196366004610e78565b610627565b6040516001600160e01b03199091168152602001610150565b3480156101c057600080fd5b506101446101cf366004610ee4565b600160209081526000928352604080842090915290825290205460ff1681565b6102026101fd366004610f5f565b61068f565b6040516101509190610fd9565b34801561021b57600080fd5b5061019b61022a366004611027565b610760565b34801561023b57600080fd5b5061017961024a36600461107c565b610864565b34801561025b57600080fd5b506102646108d2565b6040516001600160a01b039091168152602001610150565b34801561028857600080fd5b506000544210610144565b34801561029f57600080fd5b506101796102ae3660046110c2565b610968565b3480156102bf57600080fd5b506101796102ce3660046110ee565b6109e4565b3480156102df57600080fd5b5061019b6102ee3660046111a3565b63bc197c8160e01b95945050505050565b34801561030b57600080fd5b5060015b604051908152602001610150565b34801561032957600080fd5b50610179610338366004611251565b610a46565b34801561034957600080fd5b5061030f60005481565b34801561035f57600080fd5b5061019b61036e366004611292565b610abf565b34801561037f57600080fd5b5061017961038e3660046112d4565b610ae0565b34801561039f57600080fd5b5061019b6103ae3660046112ed565b63f23a6e6160e01b95945050505050565b3480156103cb57600080fd5b506103d4610ba5565b604080519384526001600160a01b03909216602084015290820152606001610150565b6000806001600160e01b031983166301ffc9a760e01b148061042957506001600160e01b03198316630271189760e51b145b8061044457506001600160e01b03198316636faff5f160e01b145b905080156104555750600192915050565b50600092915050565b60005442101561048157604051636315bfbb60e01b815260040160405180910390fd5b600061048b6108d2565b9050336001600160a01b038216146104b65760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104d75760405163b4fa3fb360e01b815260040160405180910390fd5b60005b8181101561061e578484828181106104f4576104f4611356565b9050602002016020810190610509919061137a565b6001600160a01b03841660009081526001602052604081209089898581811061053457610534611356565b90506020020160208101906105499190611397565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106105a5576105a5611356565b90506020020160208101906105ba9190611397565b8787858181106105cc576105cc611356565b90506020020160208101906105e1919061137a565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a180610616816113ca565b9150506104da565b50505050505050565b600080600080610635610bbd565b925092509250468314801561065257506001600160a01b03821633145b801561065d57508581145b1561067b5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6060838361069e338383610760565b6001600160e01b03191663523e326060e01b146106ce5760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156106f157604051636315bfbb60e01b815260040160405180910390fd5b85856106fd8282610c10565b6107465760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b6107528a8a8a8a610c4b565b9a9950505050505050505050565b600080600061076d610bbd565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa1580156107bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df91906113e3565b9050806001600160a01b0316876001600160a01b03160361080d5750630291f19360e51b925061085d915050565b6001600160a01b038082166000908152600160209081526040808320938b168352929052205460ff161561084e5750630291f19360e51b925061085d915050565b506001600160e01b0319925050505b9392505050565b604051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156108b457600080fd5b505af11580156108c8573d6000803e3d6000fd5b5050505050505050565b6000806000806108e0610bbd565b9250925092504683146108f7576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906113e3565b935050505090565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af11580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190611400565b505050565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038416906342842e0e90606401600060405180830381600087803b158015610a3257600080fd5b505af115801561061e573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab99190611400565b50505050565b6000610ace600482848661141d565b610ad791611447565b90505b92915050565b610ae86108d2565b6001600160a01b0316336001600160a01b031614610b195760405163ea8e4eb560e01b815260040160405180910390fd5b600054421015610b3c57604051636315bfbb60e01b815260040160405180910390fd5b610b4a426301e13380611477565b811115610b6a576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b6000806000610bb2610bbd565b925092509250909192565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610c04919061148a565b93509350935050909192565b600080610c1d8484610abf565b90506001600160e01b0319811663095ea7b360e01b03610c41576000915050610ada565b5060019392505050565b60606000856001600160a01b0316858585604051610c6a9291906114c3565b60006040518083038185875af1925050503d8060008114610ca7576040519150601f19603f3d011682016040523d82523d6000602084013e610cac565b606091505b509250905080610cbe57815160208301fd5b50949350505050565b600060208284031215610cd957600080fd5b81356001600160e01b03198116811461085d57600080fd5b60008083601f840112610d0357600080fd5b50813567ffffffffffffffff811115610d1b57600080fd5b6020830191508360208260051b8501011115610d3657600080fd5b9250929050565b60008060008060408587031215610d5357600080fd5b843567ffffffffffffffff80821115610d6b57600080fd5b610d7788838901610cf1565b90965094506020870135915080821115610d9057600080fd5b50610d9d87828801610cf1565b95989497509550505050565b6001600160a01b0381168114610dbe57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e0057610e00610dc1565b604052919050565b600082601f830112610e1957600080fd5b813567ffffffffffffffff811115610e3357610e33610dc1565b610e46601f8201601f1916602001610dd7565b818152846020838601011115610e5b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e8e57600080fd5b8435610e9981610da9565b93506020850135610ea981610da9565b925060408501359150606085013567ffffffffffffffff811115610ecc57600080fd5b610ed887828801610e08565b91505092959194509250565b60008060408385031215610ef757600080fd5b8235610f0281610da9565b91506020830135610f1281610da9565b809150509250929050565b60008083601f840112610f2f57600080fd5b50813567ffffffffffffffff811115610f4757600080fd5b602083019150836020828501011115610d3657600080fd5b600080600080600060808688031215610f7757600080fd5b8535610f8281610da9565b945060208601359350604086013567ffffffffffffffff811115610fa557600080fd5b610fb188828901610f1d565b909450925050606086013560ff81168114610fcb57600080fd5b809150509295509295909350565b600060208083528351808285015260005b8181101561100657858101830151858201604001528201610fea565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060006040848603121561103c57600080fd5b833561104781610da9565b9250602084013567ffffffffffffffff81111561106357600080fd5b61106f86828701610f1d565b9497909650939450505050565b6000806000806080858703121561109257600080fd5b843561109d81610da9565b935060208501356110ad81610da9565b93969395505050506040820135916060013590565b600080604083850312156110d557600080fd5b82356110e081610da9565b946020939093013593505050565b60008060006060848603121561110357600080fd5b833561110e81610da9565b95602085013595506040909401359392505050565b600082601f83011261113457600080fd5b8135602067ffffffffffffffff82111561115057611150610dc1565b8160051b61115f828201610dd7565b928352848101820192828101908785111561117957600080fd5b83870192505b848310156111985782358252918301919083019061117f565b979650505050505050565b600080600080600060a086880312156111bb57600080fd5b85356111c681610da9565b945060208601356111d681610da9565b9350604086013567ffffffffffffffff808211156111f357600080fd5b6111ff89838a01611123565b9450606088013591508082111561121557600080fd5b61122189838a01611123565b9350608088013591508082111561123757600080fd5b5061124488828901610e08565b9150509295509295909350565b60008060006060848603121561126657600080fd5b833561127181610da9565b9250602084013561128181610da9565b929592945050506040919091013590565b600080602083850312156112a557600080fd5b823567ffffffffffffffff8111156112bc57600080fd5b6112c885828601610f1d565b90969095509350505050565b6000602082840312156112e657600080fd5b5035919050565b600080600080600060a0868803121561130557600080fd5b853561131081610da9565b9450602086013561132081610da9565b93506040860135925060608601359150608086013567ffffffffffffffff81111561134a57600080fd5b61124488828901610e08565b634e487b7160e01b600052603260045260246000fd5b8015158114610dbe57600080fd5b60006020828403121561138c57600080fd5b813561085d8161136c565b6000602082840312156113a957600080fd5b813561085d81610da9565b634e487b7160e01b600052601160045260246000fd5b6000600182016113dc576113dc6113b4565b5060010190565b6000602082840312156113f557600080fd5b815161085d81610da9565b60006020828403121561141257600080fd5b815161085d8161136c565b6000808585111561142d57600080fd5b8386111561143a57600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561146f5780818660040360031b1b83161692505b505092915050565b80820180821115610ada57610ada6113b4565b60008060006060848603121561149f57600080fd5b8351925060208401516114b181610da9565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220e030a8aebc0c7189e7cb5b473a0cf379bfbc7e164cde1f79e1fbd2c296e8e56a64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1509 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x118 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA65E78F1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xCE0617EC GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x353 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x373 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA65E78F1 EQ PUSH2 0x293 JUMPI DUP1 PUSH4 0xA737A299 EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x2FF JUMPI DUP1 PUSH4 0xCA1CC220 EQ PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x51945447 GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x6B764E1B EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x11F JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x144 PUSH2 0x13F CALLDATASIZE PUSH1 0x4 PUSH2 0xCC7 JUMP JUMPDEST PUSH2 0x3F7 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 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x174 CALLDATASIZE PUSH1 0x4 PUSH2 0xD3D JUMP JUMPDEST PUSH2 0x45E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19B PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xE78 JUMP JUMPDEST PUSH2 0x627 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x150 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x144 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0xEE4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x202 PUSH2 0x1FD CALLDATASIZE PUSH1 0x4 PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x68F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x150 SWAP2 SWAP1 PUSH2 0xFD9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19B PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x760 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x107C JUMP JUMPDEST PUSH2 0x864 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x264 PUSH2 0x8D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x150 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x144 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x2AE CALLDATASIZE PUSH1 0x4 PUSH2 0x10C2 JUMP JUMPDEST PUSH2 0x968 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x2CE CALLDATASIZE PUSH1 0x4 PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x9E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19B PUSH2 0x2EE CALLDATASIZE PUSH1 0x4 PUSH2 0x11A3 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x150 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0x1251 JUMP JUMPDEST PUSH2 0xA46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30F PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19B PUSH2 0x36E CALLDATASIZE PUSH1 0x4 PUSH2 0x1292 JUMP JUMPDEST PUSH2 0xABF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x38E CALLDATASIZE PUSH1 0x4 PUSH2 0x12D4 JUMP JUMPDEST PUSH2 0xAE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19B PUSH2 0x3AE CALLDATASIZE PUSH1 0x4 PUSH2 0x12ED JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D4 PUSH2 0xBA5 JUMP JUMPDEST 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 0x150 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x429 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x444 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x455 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x48B PUSH2 0x8D2 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x4B6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x4D7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x61E JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x4F4 JUMPI PUSH2 0x4F4 PUSH2 0x1356 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x509 SWAP2 SWAP1 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x534 JUMPI PUSH2 0x534 PUSH2 0x1356 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x549 SWAP2 SWAP1 PUSH2 0x1397 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x5A5 JUMPI PUSH2 0x5A5 PUSH2 0x1356 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x5BA SWAP2 SWAP1 PUSH2 0x1397 JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x5CC JUMPI PUSH2 0x5CC PUSH2 0x1356 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x5E1 SWAP2 SWAP1 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x616 DUP2 PUSH2 0x13CA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4DA JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x635 PUSH2 0xBBD JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x652 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x65D JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x67B JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP4 PUSH2 0x69E CALLER DUP4 DUP4 PUSH2 0x760 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x523E3260 PUSH1 0xE0 SHL EQ PUSH2 0x6CE JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP6 PUSH2 0x6FD DUP3 DUP3 PUSH2 0xC10 JUMP JUMPDEST PUSH2 0x746 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x752 DUP11 DUP11 DUP11 DUP11 PUSH2 0xC4B JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x76D PUSH2 0xBBD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0x7BB 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 0x7DF SWAP2 SWAP1 PUSH2 0x13E3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x80D JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL SWAP3 POP PUSH2 0x85D SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x84E JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL SWAP3 POP PUSH2 0x85D SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x8E0 PUSH2 0xBBD JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x8F7 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x93C 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 0x960 SWAP2 SWAP1 PUSH2 0x13E3 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9BB 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 0x9DF SWAP2 SWAP1 PUSH2 0x1400 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x61E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA95 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 0xAB9 SWAP2 SWAP1 PUSH2 0x1400 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xACE PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x141D JUMP JUMPDEST PUSH2 0xAD7 SWAP2 PUSH2 0x1447 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAE8 PUSH2 0x8D2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xB19 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB4A TIMESTAMP PUSH4 0x1E13380 PUSH2 0x1477 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xB6A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xBB2 PUSH2 0xBBD JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xC04 SWAP2 SWAP1 PUSH2 0x148A JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC1D DUP5 DUP5 PUSH2 0xABF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0xC41 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xADA JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xC6A SWAP3 SWAP2 SWAP1 PUSH2 0x14C3 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 0xCA7 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 0xCAC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0xCBE JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xD03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xD36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD77 DUP9 DUP4 DUP10 ADD PUSH2 0xCF1 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xD90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD9D DUP8 DUP3 DUP9 ADD PUSH2 0xCF1 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xE00 JUMPI PUSH2 0xE00 PUSH2 0xDC1 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE33 JUMPI PUSH2 0xE33 PUSH2 0xDC1 JUMP JUMPDEST PUSH2 0xE46 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xDD7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xE5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xE99 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xEA9 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xECC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED8 DUP8 DUP3 DUP9 ADD PUSH2 0xE08 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF02 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xF12 DUP2 PUSH2 0xDA9 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xF2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xD36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xF82 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFB1 DUP9 DUP3 DUP10 ADD PUSH2 0xF1D JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xFCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1006 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xFEA JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x103C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1047 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x106F DUP7 DUP3 DUP8 ADD PUSH2 0xF1D JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1092 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x109D DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x10AD DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x10E0 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x110E DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1150 JUMPI PUSH2 0x1150 PUSH2 0xDC1 JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0x115F DUP3 DUP3 ADD PUSH2 0xDD7 JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x1179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x1198 JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0x117F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x11BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x11C6 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x11D6 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x11F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11FF DUP10 DUP4 DUP11 ADD PUSH2 0x1123 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1221 DUP10 DUP4 DUP11 ADD PUSH2 0x1123 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1244 DUP9 DUP3 DUP10 ADD PUSH2 0xE08 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1271 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1281 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12C8 DUP6 DUP3 DUP7 ADD PUSH2 0xF1D JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1310 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1320 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x134A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1244 DUP9 DUP3 DUP10 ADD PUSH2 0xE08 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x138C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x85D DUP2 PUSH2 0x136C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x85D DUP2 PUSH2 0xDA9 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x13DC JUMPI PUSH2 0x13DC PUSH2 0x13B4 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x85D DUP2 PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x85D DUP2 PUSH2 0x136C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x142D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x143A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x146F JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xADA JUMPI PUSH2 0xADA PUSH2 0x13B4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x149F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x14B1 DUP2 PUSH2 0xDA9 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 ADDRESS 0xA8 0xAE 0xBC 0xC PUSH18 0x89E7CB5B473A0CF379BFBC7E164CDE1F79E1 0xFB 0xD2 0xC2 SWAP7 0xE8 0xE5 PUSH11 0x64736F6C63430008110033 ","sourceMap":"206:995:7:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_406":{"entryPoint":null,"id":406,"parameterSlots":0,"returnSlots":0},"@_call_806":{"entryPoint":3147,"id":806,"parameterSlots":4,"returnSlots":1},"@allowedMethod_857":{"entryPoint":3088,"id":857,"parameterSlots":2,"returnSlots":1},"@breakCovalentBond_935":{"entryPoint":2148,"id":935,"parameterSlots":4,"returnSlots":0},"@covalentBond_911":{"entryPoint":2532,"id":911,"parameterSlots":3,"returnSlots":0},"@dischargeParticle_974":{"entryPoint":2630,"id":974,"parameterSlots":3,"returnSlots":0},"@energizeParticle_956":{"entryPoint":2408,"id":956,"parameterSlots":2,"returnSlots":0},"@execute_435":{"entryPoint":1679,"id":435,"parameterSlots":5,"returnSlots":1},"@isLocked_549":{"entryPoint":null,"id":549,"parameterSlots":0,"returnSlots":1},"@isValidSigner_642":{"entryPoint":1888,"id":642,"parameterSlots":3,"returnSlots":1},"@lock_537":{"entryPoint":2784,"id":537,"parameterSlots":1,"returnSlots":0},"@lockedUntil_314":{"entryPoint":null,"id":314,"parameterSlots":0,"returnSlots":0},"@onERC1155BatchReceived_774":{"entryPoint":null,"id":774,"parameterSlots":5,"returnSlots":1},"@onERC1155Received_750":{"entryPoint":null,"id":750,"parameterSlots":5,"returnSlots":1},"@onERC721Received_728":{"entryPoint":1575,"id":728,"parameterSlots":4,"returnSlots":1},"@owner_598":{"entryPoint":2258,"id":598,"parameterSlots":0,"returnSlots":1},"@parseFirst4Bytes_872":{"entryPoint":2751,"id":872,"parameterSlots":2,"returnSlots":1},"@permissions_321":{"entryPoint":null,"id":321,"parameterSlots":0,"returnSlots":0},"@setPermissions_508":{"entryPoint":1118,"id":508,"parameterSlots":4,"returnSlots":0},"@state_880":{"entryPoint":null,"id":880,"parameterSlots":0,"returnSlots":1},"@supportsInterface_681":{"entryPoint":1015,"id":681,"parameterSlots":1,"returnSlots":1},"@token_1059":{"entryPoint":3005,"id":1059,"parameterSlots":0,"returnSlots":3},"@token_564":{"entryPoint":2981,"id":564,"parameterSlots":0,"returnSlots":3},"abi_decode_array_address_dyn_calldata":{"entryPoint":3313,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":4387,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":3592,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3869,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":5015,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":5091,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3812,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr":{"entryPoint":4515,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4689,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":3704,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256":{"entryPoint":4220,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr":{"entryPoint":4845,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_bytes_calldata_ptr":{"entryPoint":4135,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4290,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint8":{"entryPoint":3935,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_uint256t_uint256":{"entryPoint":4334,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr":{"entryPoint":3389,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":4986,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":5120,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3271,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":4754,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":4820,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory":{"entryPoint":5258,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":5315,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_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":4057,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__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},"allocate_memory":{"entryPoint":3543,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":5149,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":5239,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":5191,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":5066,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":5044,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4950,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3521,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3497,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":4972,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:16186:11","statements":[{"nodeType":"YulBlock","src":"6:3:11","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:11","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:11"},"nodeType":"YulFunctionCall","src":"131:12:11"},"nodeType":"YulExpressionStatement","src":"131:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:11"},"nodeType":"YulFunctionCall","src":"100:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:11"},"nodeType":"YulFunctionCall","src":"96:32:11"},"nodeType":"YulIf","src":"93:52:11"},{"nodeType":"YulVariableDeclaration","src":"154:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:11"},"nodeType":"YulFunctionCall","src":"167:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:11"},"nodeType":"YulFunctionCall","src":"256:12:11"},"nodeType":"YulExpressionStatement","src":"256:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:11"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:11","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:11"},"nodeType":"YulFunctionCall","src":"230:20:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:11"},"nodeType":"YulFunctionCall","src":"219:32:11"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:11"},"nodeType":"YulFunctionCall","src":"209:43:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:11"},"nodeType":"YulFunctionCall","src":"202:51:11"},"nodeType":"YulIf","src":"199:71:11"},{"nodeType":"YulAssignment","src":"279:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:11"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:11","type":""}],"src":"14:286:11"},{"body":{"nodeType":"YulBlock","src":"400:92:11","statements":[{"nodeType":"YulAssignment","src":"410:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:11"},"nodeType":"YulFunctionCall","src":"418:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:11"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:11"},"nodeType":"YulFunctionCall","src":"470:14:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:11"},"nodeType":"YulFunctionCall","src":"463:22:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:11"},"nodeType":"YulFunctionCall","src":"445:41:11"},"nodeType":"YulExpressionStatement","src":"445:41:11"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:11","type":""}],"src":"305:187:11"},{"body":{"nodeType":"YulBlock","src":"581:283:11","statements":[{"body":{"nodeType":"YulBlock","src":"630:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"639:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"642:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"632:6:11"},"nodeType":"YulFunctionCall","src":"632:12:11"},"nodeType":"YulExpressionStatement","src":"632:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"609:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"617:4:11","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"605:3:11"},"nodeType":"YulFunctionCall","src":"605:17:11"},{"name":"end","nodeType":"YulIdentifier","src":"624:3:11"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"601:3:11"},"nodeType":"YulFunctionCall","src":"601:27:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"594:6:11"},"nodeType":"YulFunctionCall","src":"594:35:11"},"nodeType":"YulIf","src":"591:55:11"},{"nodeType":"YulAssignment","src":"655:30:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"678:6:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"665:12:11"},"nodeType":"YulFunctionCall","src":"665:20:11"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"655:6:11"}]},{"body":{"nodeType":"YulBlock","src":"728:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"737:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"740:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"730:6:11"},"nodeType":"YulFunctionCall","src":"730:12:11"},"nodeType":"YulExpressionStatement","src":"730:12:11"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"700:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"708:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"697:2:11"},"nodeType":"YulFunctionCall","src":"697:30:11"},"nodeType":"YulIf","src":"694:50:11"},{"nodeType":"YulAssignment","src":"753:29:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"769:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"777:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:11"},"nodeType":"YulFunctionCall","src":"765:17:11"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"753:8:11"}]},{"body":{"nodeType":"YulBlock","src":"842:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"851:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"854:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"844:6:11"},"nodeType":"YulFunctionCall","src":"844:12:11"},"nodeType":"YulExpressionStatement","src":"844:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"805:6:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"817:1:11","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"820:6:11"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"813:3:11"},"nodeType":"YulFunctionCall","src":"813:14:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"801:3:11"},"nodeType":"YulFunctionCall","src":"801:27:11"},{"kind":"number","nodeType":"YulLiteral","src":"830:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"797:3:11"},"nodeType":"YulFunctionCall","src":"797:38:11"},{"name":"end","nodeType":"YulIdentifier","src":"837:3:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"794:2:11"},"nodeType":"YulFunctionCall","src":"794:47:11"},"nodeType":"YulIf","src":"791:67:11"}]},"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"544:6:11","type":""},{"name":"end","nodeType":"YulTypedName","src":"552:3:11","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"560:8:11","type":""},{"name":"length","nodeType":"YulTypedName","src":"570:6:11","type":""}],"src":"497:367:11"},{"body":{"nodeType":"YulBlock","src":"1023:616:11","statements":[{"body":{"nodeType":"YulBlock","src":"1069:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1078:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1081:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1071:6:11"},"nodeType":"YulFunctionCall","src":"1071:12:11"},"nodeType":"YulExpressionStatement","src":"1071:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1044:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"1053:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1040:3:11"},"nodeType":"YulFunctionCall","src":"1040:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"1065:2:11","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1036:3:11"},"nodeType":"YulFunctionCall","src":"1036:32:11"},"nodeType":"YulIf","src":"1033:52:11"},{"nodeType":"YulVariableDeclaration","src":"1094:37:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1108:12:11"},"nodeType":"YulFunctionCall","src":"1108:23:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1098:6:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1140:28:11","value":{"kind":"number","nodeType":"YulLiteral","src":"1150:18:11","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1144:2:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"1195:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1204:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1207:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1197:6:11"},"nodeType":"YulFunctionCall","src":"1197:12:11"},"nodeType":"YulExpressionStatement","src":"1197:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1183:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"1191:2:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1180:2:11"},"nodeType":"YulFunctionCall","src":"1180:14:11"},"nodeType":"YulIf","src":"1177:34:11"},{"nodeType":"YulVariableDeclaration","src":"1220:96:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1288:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"1299:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1284:3:11"},"nodeType":"YulFunctionCall","src":"1284:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1308:7:11"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1246:37:11"},"nodeType":"YulFunctionCall","src":"1246:70:11"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"1224:8:11","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"1234:8:11","type":""}]},{"nodeType":"YulAssignment","src":"1325:18:11","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"1335:8:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1325:6:11"}]},{"nodeType":"YulAssignment","src":"1352:18:11","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1362:8:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1352:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"1379:48:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1412:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"1423:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1408:3:11"},"nodeType":"YulFunctionCall","src":"1408:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1395:12:11"},"nodeType":"YulFunctionCall","src":"1395:32:11"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"1456:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1465:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1468:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1458:6:11"},"nodeType":"YulFunctionCall","src":"1458:12:11"},"nodeType":"YulExpressionStatement","src":"1458:12:11"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1442:8:11"},{"name":"_1","nodeType":"YulIdentifier","src":"1452:2:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1439:2:11"},"nodeType":"YulFunctionCall","src":"1439:16:11"},"nodeType":"YulIf","src":"1436:36:11"},{"nodeType":"YulVariableDeclaration","src":"1481:98:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1549:9:11"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1560:8:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1545:3:11"},"nodeType":"YulFunctionCall","src":"1545:24:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1571:7:11"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1507:37:11"},"nodeType":"YulFunctionCall","src":"1507:72:11"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"1485:8:11","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"1495:8:11","type":""}]},{"nodeType":"YulAssignment","src":"1588:18:11","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1598:8:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1588:6:11"}]},{"nodeType":"YulAssignment","src":"1615:18:11","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1625:8:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1615:6:11"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"965:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"976:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"988:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"996:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1004:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1012:6:11","type":""}],"src":"869:770:11"},{"body":{"nodeType":"YulBlock","src":"1689:86:11","statements":[{"body":{"nodeType":"YulBlock","src":"1753:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1762:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1765:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1755:6:11"},"nodeType":"YulFunctionCall","src":"1755:12:11"},"nodeType":"YulExpressionStatement","src":"1755:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1712:5:11"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1723:5:11"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1738:3:11","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1743:1:11","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1734:3:11"},"nodeType":"YulFunctionCall","src":"1734:11:11"},{"kind":"number","nodeType":"YulLiteral","src":"1747:1:11","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1730:3:11"},"nodeType":"YulFunctionCall","src":"1730:19:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1719:3:11"},"nodeType":"YulFunctionCall","src":"1719:31:11"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1709:2:11"},"nodeType":"YulFunctionCall","src":"1709:42:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1702:6:11"},"nodeType":"YulFunctionCall","src":"1702:50:11"},"nodeType":"YulIf","src":"1699:70:11"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1678:5:11","type":""}],"src":"1644:131:11"},{"body":{"nodeType":"YulBlock","src":"1812:95:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1829:1:11","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1836:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1841:10:11","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1832:3:11"},"nodeType":"YulFunctionCall","src":"1832:20:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1822:6:11"},"nodeType":"YulFunctionCall","src":"1822:31:11"},"nodeType":"YulExpressionStatement","src":"1822:31:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1869:1:11","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1872:4:11","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1862:6:11"},"nodeType":"YulFunctionCall","src":"1862:15:11"},"nodeType":"YulExpressionStatement","src":"1862:15:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1893:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1896:4:11","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1886:6:11"},"nodeType":"YulFunctionCall","src":"1886:15:11"},"nodeType":"YulExpressionStatement","src":"1886:15:11"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1780:127:11"},{"body":{"nodeType":"YulBlock","src":"1957:230:11","statements":[{"nodeType":"YulAssignment","src":"1967:19:11","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1983:2:11","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1977:5:11"},"nodeType":"YulFunctionCall","src":"1977:9:11"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1967:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"1995:58:11","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2017:6:11"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2033:4:11"},{"kind":"number","nodeType":"YulLiteral","src":"2039:2:11","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2029:3:11"},"nodeType":"YulFunctionCall","src":"2029:13:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2048:2:11","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2044:3:11"},"nodeType":"YulFunctionCall","src":"2044:7:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2025:3:11"},"nodeType":"YulFunctionCall","src":"2025:27:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2013:3:11"},"nodeType":"YulFunctionCall","src":"2013:40:11"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1999:10:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"2128:22:11","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2130:16:11"},"nodeType":"YulFunctionCall","src":"2130:18:11"},"nodeType":"YulExpressionStatement","src":"2130:18:11"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2071:10:11"},{"kind":"number","nodeType":"YulLiteral","src":"2083:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2068:2:11"},"nodeType":"YulFunctionCall","src":"2068:34:11"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2107:10:11"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2119:6:11"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2104:2:11"},"nodeType":"YulFunctionCall","src":"2104:22:11"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2065:2:11"},"nodeType":"YulFunctionCall","src":"2065:62:11"},"nodeType":"YulIf","src":"2062:88:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2166:2:11","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2170:10:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2159:6:11"},"nodeType":"YulFunctionCall","src":"2159:22:11"},"nodeType":"YulExpressionStatement","src":"2159:22:11"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1937:4:11","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1946:6:11","type":""}],"src":"1912:275:11"},{"body":{"nodeType":"YulBlock","src":"2244:478:11","statements":[{"body":{"nodeType":"YulBlock","src":"2293:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2302:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2305:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2295:6:11"},"nodeType":"YulFunctionCall","src":"2295:12:11"},"nodeType":"YulExpressionStatement","src":"2295:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2272:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"2280:4:11","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2268:3:11"},"nodeType":"YulFunctionCall","src":"2268:17:11"},{"name":"end","nodeType":"YulIdentifier","src":"2287:3:11"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2264:3:11"},"nodeType":"YulFunctionCall","src":"2264:27:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2257:6:11"},"nodeType":"YulFunctionCall","src":"2257:35:11"},"nodeType":"YulIf","src":"2254:55:11"},{"nodeType":"YulVariableDeclaration","src":"2318:30:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2341:6:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2328:12:11"},"nodeType":"YulFunctionCall","src":"2328:20:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2322:2:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"2387:22:11","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2389:16:11"},"nodeType":"YulFunctionCall","src":"2389:18:11"},"nodeType":"YulExpressionStatement","src":"2389:18:11"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2363:2:11"},{"kind":"number","nodeType":"YulLiteral","src":"2367:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2360:2:11"},"nodeType":"YulFunctionCall","src":"2360:26:11"},"nodeType":"YulIf","src":"2357:52:11"},{"nodeType":"YulVariableDeclaration","src":"2418:70:11","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2461:2:11"},{"kind":"number","nodeType":"YulLiteral","src":"2465:4:11","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2457:3:11"},"nodeType":"YulFunctionCall","src":"2457:13:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2476:2:11","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2472:3:11"},"nodeType":"YulFunctionCall","src":"2472:7:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2453:3:11"},"nodeType":"YulFunctionCall","src":"2453:27:11"},{"kind":"number","nodeType":"YulLiteral","src":"2482:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2449:3:11"},"nodeType":"YulFunctionCall","src":"2449:38:11"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2433:15:11"},"nodeType":"YulFunctionCall","src":"2433:55:11"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"2422:7:11","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2504:7:11"},{"name":"_1","nodeType":"YulIdentifier","src":"2513:2:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2497:6:11"},"nodeType":"YulFunctionCall","src":"2497:19:11"},"nodeType":"YulExpressionStatement","src":"2497:19:11"},{"body":{"nodeType":"YulBlock","src":"2564:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2573:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2576:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2566:6:11"},"nodeType":"YulFunctionCall","src":"2566:12:11"},"nodeType":"YulExpressionStatement","src":"2566:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2539:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"2547:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2535:3:11"},"nodeType":"YulFunctionCall","src":"2535:15:11"},{"kind":"number","nodeType":"YulLiteral","src":"2552:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2531:3:11"},"nodeType":"YulFunctionCall","src":"2531:26:11"},{"name":"end","nodeType":"YulIdentifier","src":"2559:3:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2528:2:11"},"nodeType":"YulFunctionCall","src":"2528:35:11"},"nodeType":"YulIf","src":"2525:55:11"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2606:7:11"},{"kind":"number","nodeType":"YulLiteral","src":"2615:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2602:3:11"},"nodeType":"YulFunctionCall","src":"2602:18:11"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2626:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"2634:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2622:3:11"},"nodeType":"YulFunctionCall","src":"2622:17:11"},{"name":"_1","nodeType":"YulIdentifier","src":"2641:2:11"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2589:12:11"},"nodeType":"YulFunctionCall","src":"2589:55:11"},"nodeType":"YulExpressionStatement","src":"2589:55:11"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2668:7:11"},{"name":"_1","nodeType":"YulIdentifier","src":"2677:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2664:3:11"},"nodeType":"YulFunctionCall","src":"2664:16:11"},{"kind":"number","nodeType":"YulLiteral","src":"2682:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2660:3:11"},"nodeType":"YulFunctionCall","src":"2660:27:11"},{"kind":"number","nodeType":"YulLiteral","src":"2689:1:11","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2653:6:11"},"nodeType":"YulFunctionCall","src":"2653:38:11"},"nodeType":"YulExpressionStatement","src":"2653:38:11"},{"nodeType":"YulAssignment","src":"2700:16:11","value":{"name":"array_1","nodeType":"YulIdentifier","src":"2709:7:11"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2700:5:11"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2218:6:11","type":""},{"name":"end","nodeType":"YulTypedName","src":"2226:3:11","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2234:5:11","type":""}],"src":"2192:530:11"},{"body":{"nodeType":"YulBlock","src":"2857:535:11","statements":[{"body":{"nodeType":"YulBlock","src":"2904:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2916:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2906:6:11"},"nodeType":"YulFunctionCall","src":"2906:12:11"},"nodeType":"YulExpressionStatement","src":"2906:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2878:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"2887:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2874:3:11"},"nodeType":"YulFunctionCall","src":"2874:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"2899:3:11","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2870:3:11"},"nodeType":"YulFunctionCall","src":"2870:33:11"},"nodeType":"YulIf","src":"2867:53:11"},{"nodeType":"YulVariableDeclaration","src":"2929:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2942:12:11"},"nodeType":"YulFunctionCall","src":"2942:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2933:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2999:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2974:24:11"},"nodeType":"YulFunctionCall","src":"2974:31:11"},"nodeType":"YulExpressionStatement","src":"2974:31:11"},{"nodeType":"YulAssignment","src":"3014:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"3024:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3014:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"3038:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3070:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"3081:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3066:3:11"},"nodeType":"YulFunctionCall","src":"3066:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3053:12:11"},"nodeType":"YulFunctionCall","src":"3053:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3042:7:11","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3119:7:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3094:24:11"},"nodeType":"YulFunctionCall","src":"3094:33:11"},"nodeType":"YulExpressionStatement","src":"3094:33:11"},{"nodeType":"YulAssignment","src":"3136:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3146:7:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3136:6:11"}]},{"nodeType":"YulAssignment","src":"3162:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"3200:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3185:3:11"},"nodeType":"YulFunctionCall","src":"3185:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3172:12:11"},"nodeType":"YulFunctionCall","src":"3172:32:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3162:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"3213:46:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3244:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"3255:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3240:3:11"},"nodeType":"YulFunctionCall","src":"3240:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3227:12:11"},"nodeType":"YulFunctionCall","src":"3227:32:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3217:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"3302:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3311:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3314:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3304:6:11"},"nodeType":"YulFunctionCall","src":"3304:12:11"},"nodeType":"YulExpressionStatement","src":"3304:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3274:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"3282:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3271:2:11"},"nodeType":"YulFunctionCall","src":"3271:30:11"},"nodeType":"YulIf","src":"3268:50:11"},{"nodeType":"YulAssignment","src":"3327:59:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3358:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"3369:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3354:3:11"},"nodeType":"YulFunctionCall","src":"3354:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3378:7:11"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"3337:16:11"},"nodeType":"YulFunctionCall","src":"3337:49:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3327:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2799:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2810:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2822:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2830:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2838:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2846:6:11","type":""}],"src":"2727:665:11"},{"body":{"nodeType":"YulBlock","src":"3496:103:11","statements":[{"nodeType":"YulAssignment","src":"3506:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3518:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"3529:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3514:3:11"},"nodeType":"YulFunctionCall","src":"3514:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3506:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:11"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3563:6:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3575:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3580:10:11","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3571:3:11"},"nodeType":"YulFunctionCall","src":"3571:20:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3559:3:11"},"nodeType":"YulFunctionCall","src":"3559:33:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3541:6:11"},"nodeType":"YulFunctionCall","src":"3541:52:11"},"nodeType":"YulExpressionStatement","src":"3541:52:11"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3465:9:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3476:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3487:4:11","type":""}],"src":"3397:202:11"},{"body":{"nodeType":"YulBlock","src":"3691:301:11","statements":[{"body":{"nodeType":"YulBlock","src":"3737:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3746:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3749:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3739:6:11"},"nodeType":"YulFunctionCall","src":"3739:12:11"},"nodeType":"YulExpressionStatement","src":"3739:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3712:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"3721:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:11"},"nodeType":"YulFunctionCall","src":"3708:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"3733:2:11","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3704:3:11"},"nodeType":"YulFunctionCall","src":"3704:32:11"},"nodeType":"YulIf","src":"3701:52:11"},{"nodeType":"YulVariableDeclaration","src":"3762:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3788:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3775:12:11"},"nodeType":"YulFunctionCall","src":"3775:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3766:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3832:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3807:24:11"},"nodeType":"YulFunctionCall","src":"3807:31:11"},"nodeType":"YulExpressionStatement","src":"3807:31:11"},{"nodeType":"YulAssignment","src":"3847:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"3857:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3847:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"3871:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3903:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"3914:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3899:3:11"},"nodeType":"YulFunctionCall","src":"3899:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3886:12:11"},"nodeType":"YulFunctionCall","src":"3886:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3875:7:11","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3952:7:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3927:24:11"},"nodeType":"YulFunctionCall","src":"3927:33:11"},"nodeType":"YulExpressionStatement","src":"3927:33:11"},{"nodeType":"YulAssignment","src":"3969:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3979:7:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3969:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3649:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3660:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3672:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3680:6:11","type":""}],"src":"3604:388:11"},{"body":{"nodeType":"YulBlock","src":"4069:275:11","statements":[{"body":{"nodeType":"YulBlock","src":"4118:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4127:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4130:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4120:6:11"},"nodeType":"YulFunctionCall","src":"4120:12:11"},"nodeType":"YulExpressionStatement","src":"4120:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4097:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"4105:4:11","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4093:3:11"},"nodeType":"YulFunctionCall","src":"4093:17:11"},{"name":"end","nodeType":"YulIdentifier","src":"4112:3:11"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4089:3:11"},"nodeType":"YulFunctionCall","src":"4089:27:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4082:6:11"},"nodeType":"YulFunctionCall","src":"4082:35:11"},"nodeType":"YulIf","src":"4079:55:11"},{"nodeType":"YulAssignment","src":"4143:30:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4166:6:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4153:12:11"},"nodeType":"YulFunctionCall","src":"4153:20:11"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4143:6:11"}]},{"body":{"nodeType":"YulBlock","src":"4216:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4225:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4228:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4218:6:11"},"nodeType":"YulFunctionCall","src":"4218:12:11"},"nodeType":"YulExpressionStatement","src":"4218:12:11"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4188:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"4196:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4185:2:11"},"nodeType":"YulFunctionCall","src":"4185:30:11"},"nodeType":"YulIf","src":"4182:50:11"},{"nodeType":"YulAssignment","src":"4241:29:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4257:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"4265:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4253:3:11"},"nodeType":"YulFunctionCall","src":"4253:17:11"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"4241:8:11"}]},{"body":{"nodeType":"YulBlock","src":"4322:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4331:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4334:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4324:6:11"},"nodeType":"YulFunctionCall","src":"4324:12:11"},"nodeType":"YulExpressionStatement","src":"4324:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4293:6:11"},{"name":"length","nodeType":"YulIdentifier","src":"4301:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4289:3:11"},"nodeType":"YulFunctionCall","src":"4289:19:11"},{"kind":"number","nodeType":"YulLiteral","src":"4310:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4285:3:11"},"nodeType":"YulFunctionCall","src":"4285:30:11"},{"name":"end","nodeType":"YulIdentifier","src":"4317:3:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4282:2:11"},"nodeType":"YulFunctionCall","src":"4282:39:11"},"nodeType":"YulIf","src":"4279:59:11"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4032:6:11","type":""},{"name":"end","nodeType":"YulTypedName","src":"4040:3:11","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"4048:8:11","type":""},{"name":"length","nodeType":"YulTypedName","src":"4058:6:11","type":""}],"src":"3997:347:11"},{"body":{"nodeType":"YulBlock","src":"4487:640:11","statements":[{"body":{"nodeType":"YulBlock","src":"4534:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4543:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4546:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4536:6:11"},"nodeType":"YulFunctionCall","src":"4536:12:11"},"nodeType":"YulExpressionStatement","src":"4536:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4508:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"4517:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4504:3:11"},"nodeType":"YulFunctionCall","src":"4504:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"4529:3:11","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4500:3:11"},"nodeType":"YulFunctionCall","src":"4500:33:11"},"nodeType":"YulIf","src":"4497:53:11"},{"nodeType":"YulVariableDeclaration","src":"4559:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4585:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4572:12:11"},"nodeType":"YulFunctionCall","src":"4572:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4563:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4629:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4604:24:11"},"nodeType":"YulFunctionCall","src":"4604:31:11"},"nodeType":"YulExpressionStatement","src":"4604:31:11"},{"nodeType":"YulAssignment","src":"4644:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"4654:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4644:6:11"}]},{"nodeType":"YulAssignment","src":"4668:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4695:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"4706:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4691:3:11"},"nodeType":"YulFunctionCall","src":"4691:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4678:12:11"},"nodeType":"YulFunctionCall","src":"4678:32:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4668:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"4719:46:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4750:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"4761:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4746:3:11"},"nodeType":"YulFunctionCall","src":"4746:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4733:12:11"},"nodeType":"YulFunctionCall","src":"4733:32:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4723:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"4808:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4817:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4820:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4810:6:11"},"nodeType":"YulFunctionCall","src":"4810:12:11"},"nodeType":"YulExpressionStatement","src":"4810:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4780:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"4788:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4777:2:11"},"nodeType":"YulFunctionCall","src":"4777:30:11"},"nodeType":"YulIf","src":"4774:50:11"},{"nodeType":"YulVariableDeclaration","src":"4833:84:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4889:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"4900:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4885:3:11"},"nodeType":"YulFunctionCall","src":"4885:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4909:7:11"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"4859:25:11"},"nodeType":"YulFunctionCall","src":"4859:58:11"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"4837:8:11","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"4847:8:11","type":""}]},{"nodeType":"YulAssignment","src":"4926:18:11","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"4936:8:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4926:6:11"}]},{"nodeType":"YulAssignment","src":"4953:18:11","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"4963:8:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4953:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"4980:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5012:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"5023:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5008:3:11"},"nodeType":"YulFunctionCall","src":"5008:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4995:12:11"},"nodeType":"YulFunctionCall","src":"4995:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4984:7:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"5079:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5088:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5091:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5081:6:11"},"nodeType":"YulFunctionCall","src":"5081:12:11"},"nodeType":"YulExpressionStatement","src":"5081:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5049:7:11"},{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"5062:7:11"},{"kind":"number","nodeType":"YulLiteral","src":"5071:4:11","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5058:3:11"},"nodeType":"YulFunctionCall","src":"5058:18:11"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5046:2:11"},"nodeType":"YulFunctionCall","src":"5046:31:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5039:6:11"},"nodeType":"YulFunctionCall","src":"5039:39:11"},"nodeType":"YulIf","src":"5036:59:11"},{"nodeType":"YulAssignment","src":"5104:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"5114:7:11"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5104:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4421:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4432:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4444:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4452:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4460:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4468:6:11","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4476:6:11","type":""}],"src":"4349:778:11"},{"body":{"nodeType":"YulBlock","src":"5251:427:11","statements":[{"nodeType":"YulVariableDeclaration","src":"5261:12:11","value":{"kind":"number","nodeType":"YulLiteral","src":"5271:2:11","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5265:2:11","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5289:9:11"},{"name":"_1","nodeType":"YulIdentifier","src":"5300:2:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5282:6:11"},"nodeType":"YulFunctionCall","src":"5282:21:11"},"nodeType":"YulExpressionStatement","src":"5282:21:11"},{"nodeType":"YulVariableDeclaration","src":"5312:27:11","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5332:6:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5326:5:11"},"nodeType":"YulFunctionCall","src":"5326:13:11"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5316:6:11","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5359:9:11"},{"name":"_1","nodeType":"YulIdentifier","src":"5370:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5355:3:11"},"nodeType":"YulFunctionCall","src":"5355:18:11"},{"name":"length","nodeType":"YulIdentifier","src":"5375:6:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5348:6:11"},"nodeType":"YulFunctionCall","src":"5348:34:11"},"nodeType":"YulExpressionStatement","src":"5348:34:11"},{"nodeType":"YulVariableDeclaration","src":"5391:10:11","value":{"kind":"number","nodeType":"YulLiteral","src":"5400:1:11","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5395:1:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"5460:90:11","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5489:9:11"},{"name":"i","nodeType":"YulIdentifier","src":"5500:1:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5485:3:11"},"nodeType":"YulFunctionCall","src":"5485:17:11"},{"kind":"number","nodeType":"YulLiteral","src":"5504:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5481:3:11"},"nodeType":"YulFunctionCall","src":"5481:26:11"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5523:6:11"},{"name":"i","nodeType":"YulIdentifier","src":"5531:1:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5519:3:11"},"nodeType":"YulFunctionCall","src":"5519:14:11"},{"name":"_1","nodeType":"YulIdentifier","src":"5535:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5515:3:11"},"nodeType":"YulFunctionCall","src":"5515:23:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5509:5:11"},"nodeType":"YulFunctionCall","src":"5509:30:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5474:6:11"},"nodeType":"YulFunctionCall","src":"5474:66:11"},"nodeType":"YulExpressionStatement","src":"5474:66:11"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5421:1:11"},{"name":"length","nodeType":"YulIdentifier","src":"5424:6:11"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5418:2:11"},"nodeType":"YulFunctionCall","src":"5418:13:11"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5432:19:11","statements":[{"nodeType":"YulAssignment","src":"5434:15:11","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5443:1:11"},{"name":"_1","nodeType":"YulIdentifier","src":"5446:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5439:3:11"},"nodeType":"YulFunctionCall","src":"5439:10:11"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5434:1:11"}]}]},"pre":{"nodeType":"YulBlock","src":"5414:3:11","statements":[]},"src":"5410:140:11"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5574:9:11"},{"name":"length","nodeType":"YulIdentifier","src":"5585:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5570:3:11"},"nodeType":"YulFunctionCall","src":"5570:22:11"},{"kind":"number","nodeType":"YulLiteral","src":"5594:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5566:3:11"},"nodeType":"YulFunctionCall","src":"5566:31:11"},{"kind":"number","nodeType":"YulLiteral","src":"5599:1:11","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5559:6:11"},"nodeType":"YulFunctionCall","src":"5559:42:11"},"nodeType":"YulExpressionStatement","src":"5559:42:11"},{"nodeType":"YulAssignment","src":"5610:62:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5626:9:11"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5645:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"5653:2:11","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5641:3:11"},"nodeType":"YulFunctionCall","src":"5641:15:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5662:2:11","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5658:3:11"},"nodeType":"YulFunctionCall","src":"5658:7:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5637:3:11"},"nodeType":"YulFunctionCall","src":"5637:29:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5622:3:11"},"nodeType":"YulFunctionCall","src":"5622:45:11"},{"kind":"number","nodeType":"YulLiteral","src":"5669:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5618:3:11"},"nodeType":"YulFunctionCall","src":"5618:54:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5610:4:11"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5220:9:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5231:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5242:4:11","type":""}],"src":"5132:546:11"},{"body":{"nodeType":"YulBlock","src":"5789:438:11","statements":[{"body":{"nodeType":"YulBlock","src":"5835:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5844:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5847:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5837:6:11"},"nodeType":"YulFunctionCall","src":"5837:12:11"},"nodeType":"YulExpressionStatement","src":"5837:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5810:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"5819:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5806:3:11"},"nodeType":"YulFunctionCall","src":"5806:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"5831:2:11","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5802:3:11"},"nodeType":"YulFunctionCall","src":"5802:32:11"},"nodeType":"YulIf","src":"5799:52:11"},{"nodeType":"YulVariableDeclaration","src":"5860:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5886:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5873:12:11"},"nodeType":"YulFunctionCall","src":"5873:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5864:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5930:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"5905:24:11"},"nodeType":"YulFunctionCall","src":"5905:31:11"},"nodeType":"YulExpressionStatement","src":"5905:31:11"},{"nodeType":"YulAssignment","src":"5945:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"5955:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5945:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"5969:46:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6000:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"6011:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5996:3:11"},"nodeType":"YulFunctionCall","src":"5996:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5983:12:11"},"nodeType":"YulFunctionCall","src":"5983:32:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5973:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"6058:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6067:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6070:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6060:6:11"},"nodeType":"YulFunctionCall","src":"6060:12:11"},"nodeType":"YulExpressionStatement","src":"6060:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6030:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"6038:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6027:2:11"},"nodeType":"YulFunctionCall","src":"6027:30:11"},"nodeType":"YulIf","src":"6024:50:11"},{"nodeType":"YulVariableDeclaration","src":"6083:84:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6139:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"6150:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6135:3:11"},"nodeType":"YulFunctionCall","src":"6135:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6159:7:11"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"6109:25:11"},"nodeType":"YulFunctionCall","src":"6109:58:11"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"6087:8:11","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"6097:8:11","type":""}]},{"nodeType":"YulAssignment","src":"6176:18:11","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"6186:8:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6176:6:11"}]},{"nodeType":"YulAssignment","src":"6203:18:11","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"6213:8:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6203:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5739:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5750:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5762:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5770:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5778:6:11","type":""}],"src":"5683:544:11"},{"body":{"nodeType":"YulBlock","src":"6353:404:11","statements":[{"body":{"nodeType":"YulBlock","src":"6400:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6409:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6412:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6402:6:11"},"nodeType":"YulFunctionCall","src":"6402:12:11"},"nodeType":"YulExpressionStatement","src":"6402:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6374:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"6383:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6370:3:11"},"nodeType":"YulFunctionCall","src":"6370:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"6395:3:11","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6366:3:11"},"nodeType":"YulFunctionCall","src":"6366:33:11"},"nodeType":"YulIf","src":"6363:53:11"},{"nodeType":"YulVariableDeclaration","src":"6425:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6451:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6438:12:11"},"nodeType":"YulFunctionCall","src":"6438:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6429:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6495:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"6470:24:11"},"nodeType":"YulFunctionCall","src":"6470:31:11"},"nodeType":"YulExpressionStatement","src":"6470:31:11"},{"nodeType":"YulAssignment","src":"6510:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"6520:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6510:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"6534:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6566:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"6577:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6562:3:11"},"nodeType":"YulFunctionCall","src":"6562:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6549:12:11"},"nodeType":"YulFunctionCall","src":"6549:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"6538:7:11","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"6615:7:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"6590:24:11"},"nodeType":"YulFunctionCall","src":"6590:33:11"},"nodeType":"YulExpressionStatement","src":"6590:33:11"},{"nodeType":"YulAssignment","src":"6632:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"6642:7:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6632:6:11"}]},{"nodeType":"YulAssignment","src":"6658:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6685:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"6696:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6681:3:11"},"nodeType":"YulFunctionCall","src":"6681:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6668:12:11"},"nodeType":"YulFunctionCall","src":"6668:32:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6658:6:11"}]},{"nodeType":"YulAssignment","src":"6709:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6736:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"6747:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6732:3:11"},"nodeType":"YulFunctionCall","src":"6732:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6719:12:11"},"nodeType":"YulFunctionCall","src":"6719:32:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"6709:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6295:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6306:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6318:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6326:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6334:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6342:6:11","type":""}],"src":"6232:525:11"},{"body":{"nodeType":"YulBlock","src":"6863:102:11","statements":[{"nodeType":"YulAssignment","src":"6873:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6885:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"6896:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6881:3:11"},"nodeType":"YulFunctionCall","src":"6881:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6873:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6915:9:11"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6930:6:11"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6946:3:11","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6951:1:11","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6942:3:11"},"nodeType":"YulFunctionCall","src":"6942:11:11"},{"kind":"number","nodeType":"YulLiteral","src":"6955:1:11","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6938:3:11"},"nodeType":"YulFunctionCall","src":"6938:19:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6926:3:11"},"nodeType":"YulFunctionCall","src":"6926:32:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6908:6:11"},"nodeType":"YulFunctionCall","src":"6908:51:11"},"nodeType":"YulExpressionStatement","src":"6908:51:11"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6832:9:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6843:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6854:4:11","type":""}],"src":"6762:203:11"},{"body":{"nodeType":"YulBlock","src":"7057:228:11","statements":[{"body":{"nodeType":"YulBlock","src":"7103:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7112:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7115:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7105:6:11"},"nodeType":"YulFunctionCall","src":"7105:12:11"},"nodeType":"YulExpressionStatement","src":"7105:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7078:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"7087:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7074:3:11"},"nodeType":"YulFunctionCall","src":"7074:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"7099:2:11","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7070:3:11"},"nodeType":"YulFunctionCall","src":"7070:32:11"},"nodeType":"YulIf","src":"7067:52:11"},{"nodeType":"YulVariableDeclaration","src":"7128:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7154:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7141:12:11"},"nodeType":"YulFunctionCall","src":"7141:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7132:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7198:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"7173:24:11"},"nodeType":"YulFunctionCall","src":"7173:31:11"},"nodeType":"YulExpressionStatement","src":"7173:31:11"},{"nodeType":"YulAssignment","src":"7213:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"7223:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7213:6:11"}]},{"nodeType":"YulAssignment","src":"7237:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7264:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"7275:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7260:3:11"},"nodeType":"YulFunctionCall","src":"7260:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7247:12:11"},"nodeType":"YulFunctionCall","src":"7247:32:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7237:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7015:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7026:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7038:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7046:6:11","type":""}],"src":"6970:315:11"},{"body":{"nodeType":"YulBlock","src":"7394:279:11","statements":[{"body":{"nodeType":"YulBlock","src":"7440:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7449:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7452:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7442:6:11"},"nodeType":"YulFunctionCall","src":"7442:12:11"},"nodeType":"YulExpressionStatement","src":"7442:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7415:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"7424:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7411:3:11"},"nodeType":"YulFunctionCall","src":"7411:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"7436:2:11","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7407:3:11"},"nodeType":"YulFunctionCall","src":"7407:32:11"},"nodeType":"YulIf","src":"7404:52:11"},{"nodeType":"YulVariableDeclaration","src":"7465:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7491:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7478:12:11"},"nodeType":"YulFunctionCall","src":"7478:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7469:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7535:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"7510:24:11"},"nodeType":"YulFunctionCall","src":"7510:31:11"},"nodeType":"YulExpressionStatement","src":"7510:31:11"},{"nodeType":"YulAssignment","src":"7550:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"7560:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7550:6:11"}]},{"nodeType":"YulAssignment","src":"7574:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7601:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"7612:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7597:3:11"},"nodeType":"YulFunctionCall","src":"7597:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7584:12:11"},"nodeType":"YulFunctionCall","src":"7584:32:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"7574:6:11"}]},{"nodeType":"YulAssignment","src":"7625:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7652:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"7663:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7648:3:11"},"nodeType":"YulFunctionCall","src":"7648:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7635:12:11"},"nodeType":"YulFunctionCall","src":"7635:32:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7625:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7344:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7355:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7367:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7375:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7383:6:11","type":""}],"src":"7290:383:11"},{"body":{"nodeType":"YulBlock","src":"7742:648:11","statements":[{"body":{"nodeType":"YulBlock","src":"7791:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7800:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7803:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7793:6:11"},"nodeType":"YulFunctionCall","src":"7793:12:11"},"nodeType":"YulExpressionStatement","src":"7793:12:11"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7770:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"7778:4:11","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7766:3:11"},"nodeType":"YulFunctionCall","src":"7766:17:11"},{"name":"end","nodeType":"YulIdentifier","src":"7785:3:11"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7762:3:11"},"nodeType":"YulFunctionCall","src":"7762:27:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7755:6:11"},"nodeType":"YulFunctionCall","src":"7755:35:11"},"nodeType":"YulIf","src":"7752:55:11"},{"nodeType":"YulVariableDeclaration","src":"7816:30:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7839:6:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7826:12:11"},"nodeType":"YulFunctionCall","src":"7826:20:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7820:2:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7855:14:11","value":{"kind":"number","nodeType":"YulLiteral","src":"7865:4:11","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7859:2:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"7908:22:11","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7910:16:11"},"nodeType":"YulFunctionCall","src":"7910:18:11"},"nodeType":"YulExpressionStatement","src":"7910:18:11"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7884:2:11"},{"kind":"number","nodeType":"YulLiteral","src":"7888:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7881:2:11"},"nodeType":"YulFunctionCall","src":"7881:26:11"},"nodeType":"YulIf","src":"7878:52:11"},{"nodeType":"YulVariableDeclaration","src":"7939:20:11","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7953:1:11","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"7956:2:11"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7949:3:11"},"nodeType":"YulFunctionCall","src":"7949:10:11"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"7943:2:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7968:39:11","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7999:2:11"},{"name":"_2","nodeType":"YulIdentifier","src":"8003:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7995:3:11"},"nodeType":"YulFunctionCall","src":"7995:11:11"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"7979:15:11"},"nodeType":"YulFunctionCall","src":"7979:28:11"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"7972:3:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8016:16:11","value":{"name":"dst","nodeType":"YulIdentifier","src":"8029:3:11"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"8020:5:11","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8048:3:11"},{"name":"_1","nodeType":"YulIdentifier","src":"8053:2:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8041:6:11"},"nodeType":"YulFunctionCall","src":"8041:15:11"},"nodeType":"YulExpressionStatement","src":"8041:15:11"},{"nodeType":"YulAssignment","src":"8065:19:11","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8076:3:11"},{"name":"_2","nodeType":"YulIdentifier","src":"8081:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8072:3:11"},"nodeType":"YulFunctionCall","src":"8072:12:11"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"8065:3:11"}]},{"nodeType":"YulVariableDeclaration","src":"8093:38:11","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8115:6:11"},{"name":"_3","nodeType":"YulIdentifier","src":"8123:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8111:3:11"},"nodeType":"YulFunctionCall","src":"8111:15:11"},{"name":"_2","nodeType":"YulIdentifier","src":"8128:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8107:3:11"},"nodeType":"YulFunctionCall","src":"8107:24:11"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"8097:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"8159:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8168:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8171:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8161:6:11"},"nodeType":"YulFunctionCall","src":"8161:12:11"},"nodeType":"YulExpressionStatement","src":"8161:12:11"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"8146:6:11"},{"name":"end","nodeType":"YulIdentifier","src":"8154:3:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8143:2:11"},"nodeType":"YulFunctionCall","src":"8143:15:11"},"nodeType":"YulIf","src":"8140:35:11"},{"nodeType":"YulVariableDeclaration","src":"8184:26:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8199:6:11"},{"name":"_2","nodeType":"YulIdentifier","src":"8207:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8195:3:11"},"nodeType":"YulFunctionCall","src":"8195:15:11"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"8188:3:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"8275:86:11","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8296:3:11"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8314:3:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8301:12:11"},"nodeType":"YulFunctionCall","src":"8301:17:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8289:6:11"},"nodeType":"YulFunctionCall","src":"8289:30:11"},"nodeType":"YulExpressionStatement","src":"8289:30:11"},{"nodeType":"YulAssignment","src":"8332:19:11","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8343:3:11"},{"name":"_2","nodeType":"YulIdentifier","src":"8348:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8339:3:11"},"nodeType":"YulFunctionCall","src":"8339:12:11"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"8332:3:11"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8230:3:11"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"8235:6:11"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8227:2:11"},"nodeType":"YulFunctionCall","src":"8227:15:11"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8243:23:11","statements":[{"nodeType":"YulAssignment","src":"8245:19:11","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8256:3:11"},{"name":"_2","nodeType":"YulIdentifier","src":"8261:2:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8252:3:11"},"nodeType":"YulFunctionCall","src":"8252:12:11"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"8245:3:11"}]}]},"pre":{"nodeType":"YulBlock","src":"8223:3:11","statements":[]},"src":"8219:142:11"},{"nodeType":"YulAssignment","src":"8370:14:11","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"8379:5:11"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8370:5:11"}]}]},"name":"abi_decode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7716:6:11","type":""},{"name":"end","nodeType":"YulTypedName","src":"7724:3:11","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"7732:5:11","type":""}],"src":"7678:712:11"},{"body":{"nodeType":"YulBlock","src":"8592:874:11","statements":[{"body":{"nodeType":"YulBlock","src":"8639:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8648:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8651:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8641:6:11"},"nodeType":"YulFunctionCall","src":"8641:12:11"},"nodeType":"YulExpressionStatement","src":"8641:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8613:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"8622:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8609:3:11"},"nodeType":"YulFunctionCall","src":"8609:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"8634:3:11","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8605:3:11"},"nodeType":"YulFunctionCall","src":"8605:33:11"},"nodeType":"YulIf","src":"8602:53:11"},{"nodeType":"YulVariableDeclaration","src":"8664:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8690:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8677:12:11"},"nodeType":"YulFunctionCall","src":"8677:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8668:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8734:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"8709:24:11"},"nodeType":"YulFunctionCall","src":"8709:31:11"},"nodeType":"YulExpressionStatement","src":"8709:31:11"},{"nodeType":"YulAssignment","src":"8749:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"8759:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8749:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"8773:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8805:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"8816:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8801:3:11"},"nodeType":"YulFunctionCall","src":"8801:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8788:12:11"},"nodeType":"YulFunctionCall","src":"8788:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8777:7:11","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8854:7:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"8829:24:11"},"nodeType":"YulFunctionCall","src":"8829:33:11"},"nodeType":"YulExpressionStatement","src":"8829:33:11"},{"nodeType":"YulAssignment","src":"8871:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"8881:7:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8871:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"8897:46:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8928:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"8939:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8924:3:11"},"nodeType":"YulFunctionCall","src":"8924:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8911:12:11"},"nodeType":"YulFunctionCall","src":"8911:32:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8901:6:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8952:28:11","value":{"kind":"number","nodeType":"YulLiteral","src":"8962:18:11","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8956:2:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"9007:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9016:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9019:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9009:6:11"},"nodeType":"YulFunctionCall","src":"9009:12:11"},"nodeType":"YulExpressionStatement","src":"9009:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8995:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"9003:2:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8992:2:11"},"nodeType":"YulFunctionCall","src":"8992:14:11"},"nodeType":"YulIf","src":"8989:34:11"},{"nodeType":"YulAssignment","src":"9032:71:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9075:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"9086:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9071:3:11"},"nodeType":"YulFunctionCall","src":"9071:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9095:7:11"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"9042:28:11"},"nodeType":"YulFunctionCall","src":"9042:61:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9032:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"9112:48:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9145:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"9156:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9141:3:11"},"nodeType":"YulFunctionCall","src":"9141:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9128:12:11"},"nodeType":"YulFunctionCall","src":"9128:32:11"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"9116:8:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"9189:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9198:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9201:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9191:6:11"},"nodeType":"YulFunctionCall","src":"9191:12:11"},"nodeType":"YulExpressionStatement","src":"9191:12:11"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"9175:8:11"},{"name":"_1","nodeType":"YulIdentifier","src":"9185:2:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9172:2:11"},"nodeType":"YulFunctionCall","src":"9172:16:11"},"nodeType":"YulIf","src":"9169:36:11"},{"nodeType":"YulAssignment","src":"9214:73:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9257:9:11"},{"name":"offset_1","nodeType":"YulIdentifier","src":"9268:8:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9253:3:11"},"nodeType":"YulFunctionCall","src":"9253:24:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9279:7:11"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"9224:28:11"},"nodeType":"YulFunctionCall","src":"9224:63:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9214:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"9296:49:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9329:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"9340:3:11","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9325:3:11"},"nodeType":"YulFunctionCall","src":"9325:19:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9312:12:11"},"nodeType":"YulFunctionCall","src":"9312:33:11"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"9300:8:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"9374:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9383:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9386:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9376:6:11"},"nodeType":"YulFunctionCall","src":"9376:12:11"},"nodeType":"YulExpressionStatement","src":"9376:12:11"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"9360:8:11"},{"name":"_1","nodeType":"YulIdentifier","src":"9370:2:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9357:2:11"},"nodeType":"YulFunctionCall","src":"9357:16:11"},"nodeType":"YulIf","src":"9354:36:11"},{"nodeType":"YulAssignment","src":"9399:61:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9430:9:11"},{"name":"offset_2","nodeType":"YulIdentifier","src":"9441:8:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9426:3:11"},"nodeType":"YulFunctionCall","src":"9426:24:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9452:7:11"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"9409:16:11"},"nodeType":"YulFunctionCall","src":"9409:51:11"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"9399:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8526:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8537:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8549:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8557:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8565:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8573:6:11","type":""},{"name":"value4","nodeType":"YulTypedName","src":"8581:6:11","type":""}],"src":"8395:1071:11"},{"body":{"nodeType":"YulBlock","src":"9572:76:11","statements":[{"nodeType":"YulAssignment","src":"9582:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9594:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"9605:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9590:3:11"},"nodeType":"YulFunctionCall","src":"9590:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9582:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9624:9:11"},{"name":"value0","nodeType":"YulIdentifier","src":"9635:6:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9617:6:11"},"nodeType":"YulFunctionCall","src":"9617:25:11"},"nodeType":"YulExpressionStatement","src":"9617:25:11"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9541:9:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9552:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9563:4:11","type":""}],"src":"9471:177:11"},{"body":{"nodeType":"YulBlock","src":"9757:352:11","statements":[{"body":{"nodeType":"YulBlock","src":"9803:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9812:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9815:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9805:6:11"},"nodeType":"YulFunctionCall","src":"9805:12:11"},"nodeType":"YulExpressionStatement","src":"9805:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9778:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"9787:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9774:3:11"},"nodeType":"YulFunctionCall","src":"9774:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"9799:2:11","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9770:3:11"},"nodeType":"YulFunctionCall","src":"9770:32:11"},"nodeType":"YulIf","src":"9767:52:11"},{"nodeType":"YulVariableDeclaration","src":"9828:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9854:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9841:12:11"},"nodeType":"YulFunctionCall","src":"9841:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9832:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9898:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"9873:24:11"},"nodeType":"YulFunctionCall","src":"9873:31:11"},"nodeType":"YulExpressionStatement","src":"9873:31:11"},{"nodeType":"YulAssignment","src":"9913:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"9923:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9913:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"9937:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9969:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"9980:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9965:3:11"},"nodeType":"YulFunctionCall","src":"9965:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9952:12:11"},"nodeType":"YulFunctionCall","src":"9952:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9941:7:11","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"10018:7:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"9993:24:11"},"nodeType":"YulFunctionCall","src":"9993:33:11"},"nodeType":"YulExpressionStatement","src":"9993:33:11"},{"nodeType":"YulAssignment","src":"10035:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"10045:7:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10035:6:11"}]},{"nodeType":"YulAssignment","src":"10061:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10088:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"10099:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10084:3:11"},"nodeType":"YulFunctionCall","src":"10084:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10071:12:11"},"nodeType":"YulFunctionCall","src":"10071:32:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"10061:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9707:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9718:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9730:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9738:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9746:6:11","type":""}],"src":"9653:456:11"},{"body":{"nodeType":"YulBlock","src":"10203:320:11","statements":[{"body":{"nodeType":"YulBlock","src":"10249:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10258:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10261:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10251:6:11"},"nodeType":"YulFunctionCall","src":"10251:12:11"},"nodeType":"YulExpressionStatement","src":"10251:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10224:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"10233:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10220:3:11"},"nodeType":"YulFunctionCall","src":"10220:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"10245:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10216:3:11"},"nodeType":"YulFunctionCall","src":"10216:32:11"},"nodeType":"YulIf","src":"10213:52:11"},{"nodeType":"YulVariableDeclaration","src":"10274:37:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10301:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10288:12:11"},"nodeType":"YulFunctionCall","src":"10288:23:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10278:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"10354:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10363:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10366:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10356:6:11"},"nodeType":"YulFunctionCall","src":"10356:12:11"},"nodeType":"YulExpressionStatement","src":"10356:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10326:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"10334:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10323:2:11"},"nodeType":"YulFunctionCall","src":"10323:30:11"},"nodeType":"YulIf","src":"10320:50:11"},{"nodeType":"YulVariableDeclaration","src":"10379:84:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10435:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"10446:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10431:3:11"},"nodeType":"YulFunctionCall","src":"10431:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10455:7:11"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"10405:25:11"},"nodeType":"YulFunctionCall","src":"10405:58:11"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"10383:8:11","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"10393:8:11","type":""}]},{"nodeType":"YulAssignment","src":"10472:18:11","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"10482:8:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10472:6:11"}]},{"nodeType":"YulAssignment","src":"10499:18:11","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"10509:8:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10499:6:11"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10161:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10172:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10184:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10192:6:11","type":""}],"src":"10114:409:11"},{"body":{"nodeType":"YulBlock","src":"10598:110:11","statements":[{"body":{"nodeType":"YulBlock","src":"10644:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10653:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10656:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10646:6:11"},"nodeType":"YulFunctionCall","src":"10646:12:11"},"nodeType":"YulExpressionStatement","src":"10646:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10619:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"10628:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10615:3:11"},"nodeType":"YulFunctionCall","src":"10615:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"10640:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10611:3:11"},"nodeType":"YulFunctionCall","src":"10611:32:11"},"nodeType":"YulIf","src":"10608:52:11"},{"nodeType":"YulAssignment","src":"10669:33:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10692:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10679:12:11"},"nodeType":"YulFunctionCall","src":"10679:23:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10669:6:11"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10564:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10575:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10587:6:11","type":""}],"src":"10528:180:11"},{"body":{"nodeType":"YulBlock","src":"10860:587:11","statements":[{"body":{"nodeType":"YulBlock","src":"10907:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10916:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10919:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10909:6:11"},"nodeType":"YulFunctionCall","src":"10909:12:11"},"nodeType":"YulExpressionStatement","src":"10909:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10881:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"10890:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10877:3:11"},"nodeType":"YulFunctionCall","src":"10877:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"10902:3:11","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10873:3:11"},"nodeType":"YulFunctionCall","src":"10873:33:11"},"nodeType":"YulIf","src":"10870:53:11"},{"nodeType":"YulVariableDeclaration","src":"10932:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10958:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10945:12:11"},"nodeType":"YulFunctionCall","src":"10945:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10936:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11002:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"10977:24:11"},"nodeType":"YulFunctionCall","src":"10977:31:11"},"nodeType":"YulExpressionStatement","src":"10977:31:11"},{"nodeType":"YulAssignment","src":"11017:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"11027:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11017:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"11041:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11073:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11084:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11069:3:11"},"nodeType":"YulFunctionCall","src":"11069:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11056:12:11"},"nodeType":"YulFunctionCall","src":"11056:32:11"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"11045:7:11","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"11122:7:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"11097:24:11"},"nodeType":"YulFunctionCall","src":"11097:33:11"},"nodeType":"YulExpressionStatement","src":"11097:33:11"},{"nodeType":"YulAssignment","src":"11139:17:11","value":{"name":"value_1","nodeType":"YulIdentifier","src":"11149:7:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"11139:6:11"}]},{"nodeType":"YulAssignment","src":"11165:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11192:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11203:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11188:3:11"},"nodeType":"YulFunctionCall","src":"11188:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11175:12:11"},"nodeType":"YulFunctionCall","src":"11175:32:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"11165:6:11"}]},{"nodeType":"YulAssignment","src":"11216:42:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11243:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11254:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11239:3:11"},"nodeType":"YulFunctionCall","src":"11239:18:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11226:12:11"},"nodeType":"YulFunctionCall","src":"11226:32:11"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"11216:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"11267:47:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11298:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11309:3:11","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11294:3:11"},"nodeType":"YulFunctionCall","src":"11294:19:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11281:12:11"},"nodeType":"YulFunctionCall","src":"11281:33:11"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"11271:6:11","type":""}]},{"body":{"nodeType":"YulBlock","src":"11357:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11366:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11369:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11359:6:11"},"nodeType":"YulFunctionCall","src":"11359:12:11"},"nodeType":"YulExpressionStatement","src":"11359:12:11"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11329:6:11"},{"kind":"number","nodeType":"YulLiteral","src":"11337:18:11","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11326:2:11"},"nodeType":"YulFunctionCall","src":"11326:30:11"},"nodeType":"YulIf","src":"11323:50:11"},{"nodeType":"YulAssignment","src":"11382:59:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11413:9:11"},{"name":"offset","nodeType":"YulIdentifier","src":"11424:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11409:3:11"},"nodeType":"YulFunctionCall","src":"11409:22:11"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"11433:7:11"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"11392:16:11"},"nodeType":"YulFunctionCall","src":"11392:49:11"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"11382:6:11"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10794:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10805:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10817:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10825:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10833:6:11","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10841:6:11","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10849:6:11","type":""}],"src":"10713:734:11"},{"body":{"nodeType":"YulBlock","src":"11609:188:11","statements":[{"nodeType":"YulAssignment","src":"11619:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11631:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11642:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11627:3:11"},"nodeType":"YulFunctionCall","src":"11627:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11619:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11661:9:11"},{"name":"value0","nodeType":"YulIdentifier","src":"11672:6:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11654:6:11"},"nodeType":"YulFunctionCall","src":"11654:25:11"},"nodeType":"YulExpressionStatement","src":"11654:25:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11699:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11710:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11695:3:11"},"nodeType":"YulFunctionCall","src":"11695:18:11"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11719:6:11"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11735:3:11","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"11740:1:11","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11731:3:11"},"nodeType":"YulFunctionCall","src":"11731:11:11"},{"kind":"number","nodeType":"YulLiteral","src":"11744:1:11","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11727:3:11"},"nodeType":"YulFunctionCall","src":"11727:19:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11715:3:11"},"nodeType":"YulFunctionCall","src":"11715:32:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11688:6:11"},"nodeType":"YulFunctionCall","src":"11688:60:11"},"nodeType":"YulExpressionStatement","src":"11688:60:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11768:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"11779:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11764:3:11"},"nodeType":"YulFunctionCall","src":"11764:18:11"},{"name":"value2","nodeType":"YulIdentifier","src":"11784:6:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11757:6:11"},"nodeType":"YulFunctionCall","src":"11757:34:11"},"nodeType":"YulExpressionStatement","src":"11757:34:11"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11562:9:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11573:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11581:6:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11589:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11600:4:11","type":""}],"src":"11452:345:11"},{"body":{"nodeType":"YulBlock","src":"11834:95:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11851:1:11","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11858:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"11863:10:11","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11854:3:11"},"nodeType":"YulFunctionCall","src":"11854:20:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11844:6:11"},"nodeType":"YulFunctionCall","src":"11844:31:11"},"nodeType":"YulExpressionStatement","src":"11844:31:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11891:1:11","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11894:4:11","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11884:6:11"},"nodeType":"YulFunctionCall","src":"11884:15:11"},"nodeType":"YulExpressionStatement","src":"11884:15:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11915:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11918:4:11","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11908:6:11"},"nodeType":"YulFunctionCall","src":"11908:15:11"},"nodeType":"YulExpressionStatement","src":"11908:15:11"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"11802:127:11"},{"body":{"nodeType":"YulBlock","src":"11976:76:11","statements":[{"body":{"nodeType":"YulBlock","src":"12030:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12039:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12042:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12032:6:11"},"nodeType":"YulFunctionCall","src":"12032:12:11"},"nodeType":"YulExpressionStatement","src":"12032:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11999:5:11"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12020:5:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12013:6:11"},"nodeType":"YulFunctionCall","src":"12013:13:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12006:6:11"},"nodeType":"YulFunctionCall","src":"12006:21:11"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11996:2:11"},"nodeType":"YulFunctionCall","src":"11996:32:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11989:6:11"},"nodeType":"YulFunctionCall","src":"11989:40:11"},"nodeType":"YulIf","src":"11986:60:11"}]},"name":"validator_revert_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11965:5:11","type":""}],"src":"11934:118:11"},{"body":{"nodeType":"YulBlock","src":"12124:174:11","statements":[{"body":{"nodeType":"YulBlock","src":"12170:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12179:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12182:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12172:6:11"},"nodeType":"YulFunctionCall","src":"12172:12:11"},"nodeType":"YulExpressionStatement","src":"12172:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12145:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"12154:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12141:3:11"},"nodeType":"YulFunctionCall","src":"12141:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"12166:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12137:3:11"},"nodeType":"YulFunctionCall","src":"12137:32:11"},"nodeType":"YulIf","src":"12134:52:11"},{"nodeType":"YulVariableDeclaration","src":"12195:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12221:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12208:12:11"},"nodeType":"YulFunctionCall","src":"12208:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"12199:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12262:5:11"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"12240:21:11"},"nodeType":"YulFunctionCall","src":"12240:28:11"},"nodeType":"YulExpressionStatement","src":"12240:28:11"},{"nodeType":"YulAssignment","src":"12277:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"12287:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12277:6:11"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12090:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12101:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12113:6:11","type":""}],"src":"12057:241:11"},{"body":{"nodeType":"YulBlock","src":"12373:177:11","statements":[{"body":{"nodeType":"YulBlock","src":"12419:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12428:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12431:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12421:6:11"},"nodeType":"YulFunctionCall","src":"12421:12:11"},"nodeType":"YulExpressionStatement","src":"12421:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12394:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"12403:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12390:3:11"},"nodeType":"YulFunctionCall","src":"12390:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"12415:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12386:3:11"},"nodeType":"YulFunctionCall","src":"12386:32:11"},"nodeType":"YulIf","src":"12383:52:11"},{"nodeType":"YulVariableDeclaration","src":"12444:36:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12470:9:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12457:12:11"},"nodeType":"YulFunctionCall","src":"12457:23:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"12448:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12514:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"12489:24:11"},"nodeType":"YulFunctionCall","src":"12489:31:11"},"nodeType":"YulExpressionStatement","src":"12489:31:11"},{"nodeType":"YulAssignment","src":"12529:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"12539:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12529:6:11"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12339:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12350:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12362:6:11","type":""}],"src":"12303:247:11"},{"body":{"nodeType":"YulBlock","src":"12706:234:11","statements":[{"nodeType":"YulAssignment","src":"12716:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12728:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"12739:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12724:3:11"},"nodeType":"YulFunctionCall","src":"12724:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12716:4:11"}]},{"nodeType":"YulVariableDeclaration","src":"12751:29:11","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12769:3:11","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"12774:1:11","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12765:3:11"},"nodeType":"YulFunctionCall","src":"12765:11:11"},{"kind":"number","nodeType":"YulLiteral","src":"12778:1:11","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12761:3:11"},"nodeType":"YulFunctionCall","src":"12761:19:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12755:2:11","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12796:9:11"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12811:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"12819:2:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12807:3:11"},"nodeType":"YulFunctionCall","src":"12807:15:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12789:6:11"},"nodeType":"YulFunctionCall","src":"12789:34:11"},"nodeType":"YulExpressionStatement","src":"12789:34:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12843:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"12854:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12839:3:11"},"nodeType":"YulFunctionCall","src":"12839:18:11"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12863:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"12871:2:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12859:3:11"},"nodeType":"YulFunctionCall","src":"12859:15:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12832:6:11"},"nodeType":"YulFunctionCall","src":"12832:43:11"},"nodeType":"YulExpressionStatement","src":"12832:43:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12895:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"12906:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12891:3:11"},"nodeType":"YulFunctionCall","src":"12891:18:11"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12925:6:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12918:6:11"},"nodeType":"YulFunctionCall","src":"12918:14:11"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12911:6:11"},"nodeType":"YulFunctionCall","src":"12911:22:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12884:6:11"},"nodeType":"YulFunctionCall","src":"12884:50:11"},"nodeType":"YulExpressionStatement","src":"12884:50:11"}]},"name":"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12659:9:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12670:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12678:6:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12686:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12697:4:11","type":""}],"src":"12555:385:11"},{"body":{"nodeType":"YulBlock","src":"12977:95:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12994:1:11","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13001:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"13006:10:11","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12997:3:11"},"nodeType":"YulFunctionCall","src":"12997:20:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12987:6:11"},"nodeType":"YulFunctionCall","src":"12987:31:11"},"nodeType":"YulExpressionStatement","src":"12987:31:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13034:1:11","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"13037:4:11","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13027:6:11"},"nodeType":"YulFunctionCall","src":"13027:15:11"},"nodeType":"YulExpressionStatement","src":"13027:15:11"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13058:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13061:4:11","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13051:6:11"},"nodeType":"YulFunctionCall","src":"13051:15:11"},"nodeType":"YulExpressionStatement","src":"13051:15:11"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"12945:127:11"},{"body":{"nodeType":"YulBlock","src":"13124:88:11","statements":[{"body":{"nodeType":"YulBlock","src":"13155:22:11","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"13157:16:11"},"nodeType":"YulFunctionCall","src":"13157:18:11"},"nodeType":"YulExpressionStatement","src":"13157:18:11"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13140:5:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13151:1:11","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"13147:3:11"},"nodeType":"YulFunctionCall","src":"13147:6:11"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"13137:2:11"},"nodeType":"YulFunctionCall","src":"13137:17:11"},"nodeType":"YulIf","src":"13134:43:11"},{"nodeType":"YulAssignment","src":"13186:20:11","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13197:5:11"},{"kind":"number","nodeType":"YulLiteral","src":"13204:1:11","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13193:3:11"},"nodeType":"YulFunctionCall","src":"13193:13:11"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13186:3:11"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13106:5:11","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13116:3:11","type":""}],"src":"13077:135:11"},{"body":{"nodeType":"YulBlock","src":"13391:172:11","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13408:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"13419:2:11","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13401:6:11"},"nodeType":"YulFunctionCall","src":"13401:21:11"},"nodeType":"YulExpressionStatement","src":"13401:21:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13442:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"13453:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13438:3:11"},"nodeType":"YulFunctionCall","src":"13438:18:11"},{"kind":"number","nodeType":"YulLiteral","src":"13458:2:11","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13431:6:11"},"nodeType":"YulFunctionCall","src":"13431:30:11"},"nodeType":"YulExpressionStatement","src":"13431:30:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13481:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"13492:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13477:3:11"},"nodeType":"YulFunctionCall","src":"13477:18:11"},{"hexValue":"4d6574686f6420616c6c206e6f7420616c6c6f776564","kind":"string","nodeType":"YulLiteral","src":"13497:24:11","type":"","value":"Method all not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13470:6:11"},"nodeType":"YulFunctionCall","src":"13470:52:11"},"nodeType":"YulExpressionStatement","src":"13470:52:11"},{"nodeType":"YulAssignment","src":"13531:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13543:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"13554:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13539:3:11"},"nodeType":"YulFunctionCall","src":"13539:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13531:4:11"}]}]},"name":"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13368:9:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13382:4:11","type":""}],"src":"13217:346:11"},{"body":{"nodeType":"YulBlock","src":"13649:170:11","statements":[{"body":{"nodeType":"YulBlock","src":"13695:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13704:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13707:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13697:6:11"},"nodeType":"YulFunctionCall","src":"13697:12:11"},"nodeType":"YulExpressionStatement","src":"13697:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13670:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"13679:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13666:3:11"},"nodeType":"YulFunctionCall","src":"13666:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"13691:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13662:3:11"},"nodeType":"YulFunctionCall","src":"13662:32:11"},"nodeType":"YulIf","src":"13659:52:11"},{"nodeType":"YulVariableDeclaration","src":"13720:29:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13739:9:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13733:5:11"},"nodeType":"YulFunctionCall","src":"13733:16:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"13724:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13783:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"13758:24:11"},"nodeType":"YulFunctionCall","src":"13758:31:11"},"nodeType":"YulExpressionStatement","src":"13758:31:11"},{"nodeType":"YulAssignment","src":"13798:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"13808:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13798:6:11"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13615:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13626:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13638:6:11","type":""}],"src":"13568:251:11"},{"body":{"nodeType":"YulBlock","src":"13981:218:11","statements":[{"nodeType":"YulAssignment","src":"13991:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14003:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"14014:2:11","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13999:3:11"},"nodeType":"YulFunctionCall","src":"13999:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13991:4:11"}]},{"nodeType":"YulVariableDeclaration","src":"14026:29:11","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14044:3:11","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"14049:1:11","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14040:3:11"},"nodeType":"YulFunctionCall","src":"14040:11:11"},{"kind":"number","nodeType":"YulLiteral","src":"14053:1:11","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14036:3:11"},"nodeType":"YulFunctionCall","src":"14036:19:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"14030:2:11","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14071:9:11"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14086:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"14094:2:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14082:3:11"},"nodeType":"YulFunctionCall","src":"14082:15:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14064:6:11"},"nodeType":"YulFunctionCall","src":"14064:34:11"},"nodeType":"YulExpressionStatement","src":"14064:34:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14118:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"14129:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14114:3:11"},"nodeType":"YulFunctionCall","src":"14114:18:11"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"14138:6:11"},{"name":"_1","nodeType":"YulIdentifier","src":"14146:2:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14134:3:11"},"nodeType":"YulFunctionCall","src":"14134:15:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14107:6:11"},"nodeType":"YulFunctionCall","src":"14107:43:11"},"nodeType":"YulExpressionStatement","src":"14107:43:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14170:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"14181:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14166:3:11"},"nodeType":"YulFunctionCall","src":"14166:18:11"},{"name":"value2","nodeType":"YulIdentifier","src":"14186:6:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14159:6:11"},"nodeType":"YulFunctionCall","src":"14159:34:11"},"nodeType":"YulExpressionStatement","src":"14159:34:11"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13934:9:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"13945:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13953:6:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13961:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13972:4:11","type":""}],"src":"13824:375:11"},{"body":{"nodeType":"YulBlock","src":"14282:167:11","statements":[{"body":{"nodeType":"YulBlock","src":"14328:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14337:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14340:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14330:6:11"},"nodeType":"YulFunctionCall","src":"14330:12:11"},"nodeType":"YulExpressionStatement","src":"14330:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"14303:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"14312:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14299:3:11"},"nodeType":"YulFunctionCall","src":"14299:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"14324:2:11","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14295:3:11"},"nodeType":"YulFunctionCall","src":"14295:32:11"},"nodeType":"YulIf","src":"14292:52:11"},{"nodeType":"YulVariableDeclaration","src":"14353:29:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14372:9:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14366:5:11"},"nodeType":"YulFunctionCall","src":"14366:16:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"14357:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14413:5:11"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"14391:21:11"},"nodeType":"YulFunctionCall","src":"14391:28:11"},"nodeType":"YulExpressionStatement","src":"14391:28:11"},{"nodeType":"YulAssignment","src":"14428:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"14438:5:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"14428:6:11"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14248:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"14259:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"14271:6:11","type":""}],"src":"14204:245:11"},{"body":{"nodeType":"YulBlock","src":"14583:145:11","statements":[{"nodeType":"YulAssignment","src":"14593:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14605:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"14616:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14601:3:11"},"nodeType":"YulFunctionCall","src":"14601:18:11"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14593:4:11"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14635:9:11"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14650:6:11"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14666:3:11","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"14671:1:11","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14662:3:11"},"nodeType":"YulFunctionCall","src":"14662:11:11"},{"kind":"number","nodeType":"YulLiteral","src":"14675:1:11","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14658:3:11"},"nodeType":"YulFunctionCall","src":"14658:19:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14646:3:11"},"nodeType":"YulFunctionCall","src":"14646:32:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14628:6:11"},"nodeType":"YulFunctionCall","src":"14628:51:11"},"nodeType":"YulExpressionStatement","src":"14628:51:11"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14699:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"14710:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14695:3:11"},"nodeType":"YulFunctionCall","src":"14695:18:11"},{"name":"value1","nodeType":"YulIdentifier","src":"14715:6:11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14688:6:11"},"nodeType":"YulFunctionCall","src":"14688:34:11"},"nodeType":"YulExpressionStatement","src":"14688:34:11"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14544:9:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14555:6:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14563:6:11","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14574:4:11","type":""}],"src":"14454:274:11"},{"body":{"nodeType":"YulBlock","src":"14863:201:11","statements":[{"body":{"nodeType":"YulBlock","src":"14901:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14910:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14913:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14903:6:11"},"nodeType":"YulFunctionCall","src":"14903:12:11"},"nodeType":"YulExpressionStatement","src":"14903:12:11"}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14879:10:11"},{"name":"endIndex","nodeType":"YulIdentifier","src":"14891:8:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14876:2:11"},"nodeType":"YulFunctionCall","src":"14876:24:11"},"nodeType":"YulIf","src":"14873:44:11"},{"body":{"nodeType":"YulBlock","src":"14950:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14959:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14962:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14952:6:11"},"nodeType":"YulFunctionCall","src":"14952:12:11"},"nodeType":"YulExpressionStatement","src":"14952:12:11"}]},"condition":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"14932:8:11"},{"name":"length","nodeType":"YulIdentifier","src":"14942:6:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14929:2:11"},"nodeType":"YulFunctionCall","src":"14929:20:11"},"nodeType":"YulIf","src":"14926:40:11"},{"nodeType":"YulAssignment","src":"14975:36:11","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14992:6:11"},{"name":"startIndex","nodeType":"YulIdentifier","src":"15000:10:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14988:3:11"},"nodeType":"YulFunctionCall","src":"14988:23:11"},"variableNames":[{"name":"offsetOut","nodeType":"YulIdentifier","src":"14975:9:11"}]},{"nodeType":"YulAssignment","src":"15020:38:11","value":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"15037:8:11"},{"name":"startIndex","nodeType":"YulIdentifier","src":"15047:10:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15033:3:11"},"nodeType":"YulFunctionCall","src":"15033:25:11"},"variableNames":[{"name":"lengthOut","nodeType":"YulIdentifier","src":"15020:9:11"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"14797:6:11","type":""},{"name":"length","nodeType":"YulTypedName","src":"14805:6:11","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"14813:10:11","type":""},{"name":"endIndex","nodeType":"YulTypedName","src":"14825:8:11","type":""}],"returnVariables":[{"name":"offsetOut","nodeType":"YulTypedName","src":"14838:9:11","type":""},{"name":"lengthOut","nodeType":"YulTypedName","src":"14849:9:11","type":""}],"src":"14733:331:11"},{"body":{"nodeType":"YulBlock","src":"15169:223:11","statements":[{"nodeType":"YulVariableDeclaration","src":"15179:29:11","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"15202:5:11"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"15189:12:11"},"nodeType":"YulFunctionCall","src":"15189:19:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15183:2:11","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15217:30:11","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15231:3:11","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"15236:10:11","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15227:3:11"},"nodeType":"YulFunctionCall","src":"15227:20:11"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"15221:2:11","type":""}]},{"nodeType":"YulAssignment","src":"15256:20:11","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"15269:2:11"},{"name":"_2","nodeType":"YulIdentifier","src":"15273:2:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15265:3:11"},"nodeType":"YulFunctionCall","src":"15265:11:11"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"15256:5:11"}]},{"body":{"nodeType":"YulBlock","src":"15307:79:11","statements":[{"nodeType":"YulAssignment","src":"15321:55:11","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"15338:2:11"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15350:1:11","type":"","value":"3"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15357:1:11","type":"","value":"4"},{"name":"len","nodeType":"YulIdentifier","src":"15360:3:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15353:3:11"},"nodeType":"YulFunctionCall","src":"15353:11:11"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15346:3:11"},"nodeType":"YulFunctionCall","src":"15346:19:11"},{"name":"_2","nodeType":"YulIdentifier","src":"15367:2:11"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15342:3:11"},"nodeType":"YulFunctionCall","src":"15342:28:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15334:3:11"},"nodeType":"YulFunctionCall","src":"15334:37:11"},{"name":"_2","nodeType":"YulIdentifier","src":"15373:2:11"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15330:3:11"},"nodeType":"YulFunctionCall","src":"15330:46:11"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"15321:5:11"}]}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"15291:3:11"},{"kind":"number","nodeType":"YulLiteral","src":"15296:1:11","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15288:2:11"},"nodeType":"YulFunctionCall","src":"15288:10:11"},"nodeType":"YulIf","src":"15285:101:11"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"15144:5:11","type":""},{"name":"len","nodeType":"YulTypedName","src":"15151:3:11","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"15159:5:11","type":""}],"src":"15069:323:11"},{"body":{"nodeType":"YulBlock","src":"15445:77:11","statements":[{"nodeType":"YulAssignment","src":"15455:16:11","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15466:1:11"},{"name":"y","nodeType":"YulIdentifier","src":"15469:1:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15462:3:11"},"nodeType":"YulFunctionCall","src":"15462:9:11"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"15455:3:11"}]},{"body":{"nodeType":"YulBlock","src":"15494:22:11","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"15496:16:11"},"nodeType":"YulFunctionCall","src":"15496:18:11"},"nodeType":"YulExpressionStatement","src":"15496:18:11"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15486:1:11"},{"name":"sum","nodeType":"YulIdentifier","src":"15489:3:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15483:2:11"},"nodeType":"YulFunctionCall","src":"15483:10:11"},"nodeType":"YulIf","src":"15480:36:11"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15428:1:11","type":""},{"name":"y","nodeType":"YulTypedName","src":"15431:1:11","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"15437:3:11","type":""}],"src":"15397:125:11"},{"body":{"nodeType":"YulBlock","src":"15650:258:11","statements":[{"body":{"nodeType":"YulBlock","src":"15696:16:11","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15705:1:11","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15708:1:11","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15698:6:11"},"nodeType":"YulFunctionCall","src":"15698:12:11"},"nodeType":"YulExpressionStatement","src":"15698:12:11"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"15671:7:11"},{"name":"headStart","nodeType":"YulIdentifier","src":"15680:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15667:3:11"},"nodeType":"YulFunctionCall","src":"15667:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"15692:2:11","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"15663:3:11"},"nodeType":"YulFunctionCall","src":"15663:32:11"},"nodeType":"YulIf","src":"15660:52:11"},{"nodeType":"YulAssignment","src":"15721:26:11","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15737:9:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15731:5:11"},"nodeType":"YulFunctionCall","src":"15731:16:11"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"15721:6:11"}]},{"nodeType":"YulVariableDeclaration","src":"15756:38:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15779:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"15790:2:11","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15775:3:11"},"nodeType":"YulFunctionCall","src":"15775:18:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15769:5:11"},"nodeType":"YulFunctionCall","src":"15769:25:11"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"15760:5:11","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15828:5:11"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"15803:24:11"},"nodeType":"YulFunctionCall","src":"15803:31:11"},"nodeType":"YulExpressionStatement","src":"15803:31:11"},{"nodeType":"YulAssignment","src":"15843:15:11","value":{"name":"value","nodeType":"YulIdentifier","src":"15853:5:11"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"15843:6:11"}]},{"nodeType":"YulAssignment","src":"15867:35:11","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15887:9:11"},{"kind":"number","nodeType":"YulLiteral","src":"15898:2:11","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15883:3:11"},"nodeType":"YulFunctionCall","src":"15883:18:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15877:5:11"},"nodeType":"YulFunctionCall","src":"15877:25:11"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"15867:6:11"}]}]},"name":"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15600:9:11","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"15611:7:11","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"15623:6:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15631:6:11","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15639:6:11","type":""}],"src":"15527:381:11"},{"body":{"nodeType":"YulBlock","src":"16060:124:11","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16083:3:11"},{"name":"value0","nodeType":"YulIdentifier","src":"16088:6:11"},{"name":"value1","nodeType":"YulIdentifier","src":"16096:6:11"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"16070:12:11"},"nodeType":"YulFunctionCall","src":"16070:33:11"},"nodeType":"YulExpressionStatement","src":"16070:33:11"},{"nodeType":"YulVariableDeclaration","src":"16112:26:11","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16126:3:11"},{"name":"value1","nodeType":"YulIdentifier","src":"16131:6:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16122:3:11"},"nodeType":"YulFunctionCall","src":"16122:16:11"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"16116:2:11","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"16154:2:11"},{"kind":"number","nodeType":"YulLiteral","src":"16158:1:11","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16147:6:11"},"nodeType":"YulFunctionCall","src":"16147:13:11"},"nodeType":"YulExpressionStatement","src":"16147:13:11"},{"nodeType":"YulAssignment","src":"16169:9:11","value":{"name":"_1","nodeType":"YulIdentifier","src":"16176:2:11"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16169:3:11"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16028:3:11","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16033:6:11","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16041:6:11","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16052:3:11","type":""}],"src":"15913:271:11"}]},"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 abi_decode_array_address_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset_1), dataEnd)\n value2 := value2_1\n value3 := value3_1\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 panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\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 value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\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 abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\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 value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\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_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 value1 := calldataload(add(headStart, 32))\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_1 := calldataload(add(headStart, 96))\n if iszero(eq(value_1, and(value_1, 0xff))) { revert(0, 0) }\n value4 := value_1\n }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\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_decode_tuple_t_addresst_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\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 value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let _3 := shl(5, _1)\n let dst := allocate_memory(add(_3, _2))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, _3), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\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_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { 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 value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\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 panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function validator_revert_bool(value)\n {\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), iszero(iszero(value2)))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"Method all not allowed\")\n tail := add(headStart, 96)\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_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n {\n if gt(startIndex, endIndex) { revert(0, 0) }\n if gt(endIndex, length) { revert(0, 0) }\n offsetOut := add(offset, startIndex)\n lengthOut := sub(endIndex, startIndex)\n }\n function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n {\n let _1 := calldataload(array)\n let _2 := shl(224, 0xffffffff)\n value := and(_1, _2)\n if lt(len, 4)\n {\n value := and(and(_1, shl(shl(3, sub(4, len)), _2)), _2)\n }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := mload(headStart)\n let value := mload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n value2 := mload(add(headStart, 64))\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}","id":11,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106101185760003560e01c8063a65e78f1116100a0578063ce0617ec11610064578063ce0617ec1461033d578063d0ad253514610353578063dd46706414610373578063f23a6e6114610393578063fc0c546a146103bf57600080fd5b8063a65e78f114610293578063a737a299146102b3578063bc197c81146102d3578063c19d93fb146102ff578063ca1cc2201461031d57600080fd5b806351945447116100e757806351945447146101ef578063523e32601461020f5780636b764e1b1461022f5780638da5cb5b1461024f578063a4e2d6341461027c57600080fd5b806301ffc9a714610124578063039721b114610159578063150b7a021461017b5780631f9838b5146101b457600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5061014461013f366004610cc7565b6103f7565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d3d565b61045e565b005b34801561018757600080fd5b5061019b610196366004610e78565b610627565b6040516001600160e01b03199091168152602001610150565b3480156101c057600080fd5b506101446101cf366004610ee4565b600160209081526000928352604080842090915290825290205460ff1681565b6102026101fd366004610f5f565b61068f565b6040516101509190610fd9565b34801561021b57600080fd5b5061019b61022a366004611027565b610760565b34801561023b57600080fd5b5061017961024a36600461107c565b610864565b34801561025b57600080fd5b506102646108d2565b6040516001600160a01b039091168152602001610150565b34801561028857600080fd5b506000544210610144565b34801561029f57600080fd5b506101796102ae3660046110c2565b610968565b3480156102bf57600080fd5b506101796102ce3660046110ee565b6109e4565b3480156102df57600080fd5b5061019b6102ee3660046111a3565b63bc197c8160e01b95945050505050565b34801561030b57600080fd5b5060015b604051908152602001610150565b34801561032957600080fd5b50610179610338366004611251565b610a46565b34801561034957600080fd5b5061030f60005481565b34801561035f57600080fd5b5061019b61036e366004611292565b610abf565b34801561037f57600080fd5b5061017961038e3660046112d4565b610ae0565b34801561039f57600080fd5b5061019b6103ae3660046112ed565b63f23a6e6160e01b95945050505050565b3480156103cb57600080fd5b506103d4610ba5565b604080519384526001600160a01b03909216602084015290820152606001610150565b6000806001600160e01b031983166301ffc9a760e01b148061042957506001600160e01b03198316630271189760e51b145b8061044457506001600160e01b03198316636faff5f160e01b145b905080156104555750600192915050565b50600092915050565b60005442101561048157604051636315bfbb60e01b815260040160405180910390fd5b600061048b6108d2565b9050336001600160a01b038216146104b65760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104d75760405163b4fa3fb360e01b815260040160405180910390fd5b60005b8181101561061e578484828181106104f4576104f4611356565b9050602002016020810190610509919061137a565b6001600160a01b03841660009081526001602052604081209089898581811061053457610534611356565b90506020020160208101906105499190611397565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106105a5576105a5611356565b90506020020160208101906105ba9190611397565b8787858181106105cc576105cc611356565b90506020020160208101906105e1919061137a565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a180610616816113ca565b9150506104da565b50505050505050565b600080600080610635610bbd565b925092509250468314801561065257506001600160a01b03821633145b801561065d57508581145b1561067b5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6060838361069e338383610760565b6001600160e01b03191663523e326060e01b146106ce5760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156106f157604051636315bfbb60e01b815260040160405180910390fd5b85856106fd8282610c10565b6107465760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b6107528a8a8a8a610c4b565b9a9950505050505050505050565b600080600061076d610bbd565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa1580156107bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df91906113e3565b9050806001600160a01b0316876001600160a01b03160361080d5750630291f19360e51b925061085d915050565b6001600160a01b038082166000908152600160209081526040808320938b168352929052205460ff161561084e5750630291f19360e51b925061085d915050565b506001600160e01b0319925050505b9392505050565b604051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156108b457600080fd5b505af11580156108c8573d6000803e3d6000fd5b5050505050505050565b6000806000806108e0610bbd565b9250925092504683146108f7576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906113e3565b935050505090565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af11580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190611400565b505050565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038416906342842e0e90606401600060405180830381600087803b158015610a3257600080fd5b505af115801561061e573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab99190611400565b50505050565b6000610ace600482848661141d565b610ad791611447565b90505b92915050565b610ae86108d2565b6001600160a01b0316336001600160a01b031614610b195760405163ea8e4eb560e01b815260040160405180910390fd5b600054421015610b3c57604051636315bfbb60e01b815260040160405180910390fd5b610b4a426301e13380611477565b811115610b6a576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b6000806000610bb2610bbd565b925092509250909192565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610c04919061148a565b93509350935050909192565b600080610c1d8484610abf565b90506001600160e01b0319811663095ea7b360e01b03610c41576000915050610ada565b5060019392505050565b60606000856001600160a01b0316858585604051610c6a9291906114c3565b60006040518083038185875af1925050503d8060008114610ca7576040519150601f19603f3d011682016040523d82523d6000602084013e610cac565b606091505b509250905080610cbe57815160208301fd5b50949350505050565b600060208284031215610cd957600080fd5b81356001600160e01b03198116811461085d57600080fd5b60008083601f840112610d0357600080fd5b50813567ffffffffffffffff811115610d1b57600080fd5b6020830191508360208260051b8501011115610d3657600080fd5b9250929050565b60008060008060408587031215610d5357600080fd5b843567ffffffffffffffff80821115610d6b57600080fd5b610d7788838901610cf1565b90965094506020870135915080821115610d9057600080fd5b50610d9d87828801610cf1565b95989497509550505050565b6001600160a01b0381168114610dbe57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e0057610e00610dc1565b604052919050565b600082601f830112610e1957600080fd5b813567ffffffffffffffff811115610e3357610e33610dc1565b610e46601f8201601f1916602001610dd7565b818152846020838601011115610e5b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e8e57600080fd5b8435610e9981610da9565b93506020850135610ea981610da9565b925060408501359150606085013567ffffffffffffffff811115610ecc57600080fd5b610ed887828801610e08565b91505092959194509250565b60008060408385031215610ef757600080fd5b8235610f0281610da9565b91506020830135610f1281610da9565b809150509250929050565b60008083601f840112610f2f57600080fd5b50813567ffffffffffffffff811115610f4757600080fd5b602083019150836020828501011115610d3657600080fd5b600080600080600060808688031215610f7757600080fd5b8535610f8281610da9565b945060208601359350604086013567ffffffffffffffff811115610fa557600080fd5b610fb188828901610f1d565b909450925050606086013560ff81168114610fcb57600080fd5b809150509295509295909350565b600060208083528351808285015260005b8181101561100657858101830151858201604001528201610fea565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060006040848603121561103c57600080fd5b833561104781610da9565b9250602084013567ffffffffffffffff81111561106357600080fd5b61106f86828701610f1d565b9497909650939450505050565b6000806000806080858703121561109257600080fd5b843561109d81610da9565b935060208501356110ad81610da9565b93969395505050506040820135916060013590565b600080604083850312156110d557600080fd5b82356110e081610da9565b946020939093013593505050565b60008060006060848603121561110357600080fd5b833561110e81610da9565b95602085013595506040909401359392505050565b600082601f83011261113457600080fd5b8135602067ffffffffffffffff82111561115057611150610dc1565b8160051b61115f828201610dd7565b928352848101820192828101908785111561117957600080fd5b83870192505b848310156111985782358252918301919083019061117f565b979650505050505050565b600080600080600060a086880312156111bb57600080fd5b85356111c681610da9565b945060208601356111d681610da9565b9350604086013567ffffffffffffffff808211156111f357600080fd5b6111ff89838a01611123565b9450606088013591508082111561121557600080fd5b61122189838a01611123565b9350608088013591508082111561123757600080fd5b5061124488828901610e08565b9150509295509295909350565b60008060006060848603121561126657600080fd5b833561127181610da9565b9250602084013561128181610da9565b929592945050506040919091013590565b600080602083850312156112a557600080fd5b823567ffffffffffffffff8111156112bc57600080fd5b6112c885828601610f1d565b90969095509350505050565b6000602082840312156112e657600080fd5b5035919050565b600080600080600060a0868803121561130557600080fd5b853561131081610da9565b9450602086013561132081610da9565b93506040860135925060608601359150608086013567ffffffffffffffff81111561134a57600080fd5b61124488828901610e08565b634e487b7160e01b600052603260045260246000fd5b8015158114610dbe57600080fd5b60006020828403121561138c57600080fd5b813561085d8161136c565b6000602082840312156113a957600080fd5b813561085d81610da9565b634e487b7160e01b600052601160045260246000fd5b6000600182016113dc576113dc6113b4565b5060010190565b6000602082840312156113f557600080fd5b815161085d81610da9565b60006020828403121561141257600080fd5b815161085d8161136c565b6000808585111561142d57600080fd5b8386111561143a57600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561146f5780818660040360031b1b83161692505b505092915050565b80820180821115610ada57610ada6113b4565b60008060006060848603121561149f57600080fd5b8351925060208401516114b181610da9565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220e030a8aebc0c7189e7cb5b473a0cf379bfbc7e164cde1f79e1fbd2c296e8e56a64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x118 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA65E78F1 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xCE0617EC GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x353 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x373 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x3BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA65E78F1 EQ PUSH2 0x293 JUMPI DUP1 PUSH4 0xA737A299 EQ PUSH2 0x2B3 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x2FF JUMPI DUP1 PUSH4 0xCA1CC220 EQ PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x51945447 GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0x1EF JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x6B764E1B EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x159 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x1B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x11F JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x144 PUSH2 0x13F CALLDATASIZE PUSH1 0x4 PUSH2 0xCC7 JUMP JUMPDEST PUSH2 0x3F7 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 0x165 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x174 CALLDATASIZE PUSH1 0x4 PUSH2 0xD3D JUMP JUMPDEST PUSH2 0x45E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19B PUSH2 0x196 CALLDATASIZE PUSH1 0x4 PUSH2 0xE78 JUMP JUMPDEST PUSH2 0x627 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x150 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x144 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0xEE4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x202 PUSH2 0x1FD CALLDATASIZE PUSH1 0x4 PUSH2 0xF5F JUMP JUMPDEST PUSH2 0x68F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x150 SWAP2 SWAP1 PUSH2 0xFD9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19B PUSH2 0x22A CALLDATASIZE PUSH1 0x4 PUSH2 0x1027 JUMP JUMPDEST PUSH2 0x760 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x107C JUMP JUMPDEST PUSH2 0x864 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x264 PUSH2 0x8D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x150 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x144 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x2AE CALLDATASIZE PUSH1 0x4 PUSH2 0x10C2 JUMP JUMPDEST PUSH2 0x968 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x2CE CALLDATASIZE PUSH1 0x4 PUSH2 0x10EE JUMP JUMPDEST PUSH2 0x9E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19B PUSH2 0x2EE CALLDATASIZE PUSH1 0x4 PUSH2 0x11A3 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x150 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0x1251 JUMP JUMPDEST PUSH2 0xA46 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30F PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19B PUSH2 0x36E CALLDATASIZE PUSH1 0x4 PUSH2 0x1292 JUMP JUMPDEST PUSH2 0xABF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x38E CALLDATASIZE PUSH1 0x4 PUSH2 0x12D4 JUMP JUMPDEST PUSH2 0xAE0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19B PUSH2 0x3AE CALLDATASIZE PUSH1 0x4 PUSH2 0x12ED JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D4 PUSH2 0xBA5 JUMP JUMPDEST 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 0x150 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x429 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x444 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x455 JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x481 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x48B PUSH2 0x8D2 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x4B6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x4D7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x61E JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x4F4 JUMPI PUSH2 0x4F4 PUSH2 0x1356 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x509 SWAP2 SWAP1 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x534 JUMPI PUSH2 0x534 PUSH2 0x1356 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x549 SWAP2 SWAP1 PUSH2 0x1397 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x5A5 JUMPI PUSH2 0x5A5 PUSH2 0x1356 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x5BA SWAP2 SWAP1 PUSH2 0x1397 JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x5CC JUMPI PUSH2 0x5CC PUSH2 0x1356 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x5E1 SWAP2 SWAP1 PUSH2 0x137A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x616 DUP2 PUSH2 0x13CA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4DA JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x635 PUSH2 0xBBD JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x652 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x65D JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x67B JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP4 PUSH2 0x69E CALLER DUP4 DUP4 PUSH2 0x760 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x523E3260 PUSH1 0xE0 SHL EQ PUSH2 0x6CE JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP6 PUSH2 0x6FD DUP3 DUP3 PUSH2 0xC10 JUMP JUMPDEST PUSH2 0x746 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x752 DUP11 DUP11 DUP11 DUP11 PUSH2 0xC4B JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x76D PUSH2 0xBBD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0x7BB 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 0x7DF SWAP2 SWAP1 PUSH2 0x13E3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x80D JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL SWAP3 POP PUSH2 0x85D SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP12 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x84E JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL SWAP3 POP PUSH2 0x85D SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8C8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x8E0 PUSH2 0xBBD JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x8F7 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x93C 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 0x960 SWAP2 SWAP1 PUSH2 0x13E3 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9BB 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 0x9DF SWAP2 SWAP1 PUSH2 0x1400 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x61E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA95 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 0xAB9 SWAP2 SWAP1 PUSH2 0x1400 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xACE PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x141D JUMP JUMPDEST PUSH2 0xAD7 SWAP2 PUSH2 0x1447 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAE8 PUSH2 0x8D2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xB19 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB4A TIMESTAMP PUSH4 0x1E13380 PUSH2 0x1477 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xB6A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xBB2 PUSH2 0xBBD JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xC04 SWAP2 SWAP1 PUSH2 0x148A JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC1D DUP5 DUP5 PUSH2 0xABF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0xC41 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0xADA JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xC6A SWAP3 SWAP2 SWAP1 PUSH2 0x14C3 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 0xCA7 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 0xCAC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0xCBE JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xD03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xD36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD77 DUP9 DUP4 DUP10 ADD PUSH2 0xCF1 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xD90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD9D DUP8 DUP3 DUP9 ADD PUSH2 0xCF1 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xE00 JUMPI PUSH2 0xE00 PUSH2 0xDC1 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE33 JUMPI PUSH2 0xE33 PUSH2 0xDC1 JUMP JUMPDEST PUSH2 0xE46 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xDD7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xE5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xE99 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xEA9 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xECC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED8 DUP8 DUP3 DUP9 ADD PUSH2 0xE08 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF02 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xF12 DUP2 PUSH2 0xDA9 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xF2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xD36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xF77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xF82 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFB1 DUP9 DUP3 DUP10 ADD PUSH2 0xF1D JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xFCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1006 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xFEA JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x103C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1047 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1063 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x106F DUP7 DUP3 DUP8 ADD PUSH2 0xF1D JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1092 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x109D DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x10AD DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x10E0 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1103 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x110E DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1150 JUMPI PUSH2 0x1150 PUSH2 0xDC1 JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0x115F DUP3 DUP3 ADD PUSH2 0xDD7 JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x1179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x1198 JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0x117F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x11BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x11C6 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x11D6 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x11F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11FF DUP10 DUP4 DUP11 ADD PUSH2 0x1123 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1221 DUP10 DUP4 DUP11 ADD PUSH2 0x1123 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1244 DUP9 DUP3 DUP10 ADD PUSH2 0xE08 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1266 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1271 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1281 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12C8 DUP6 DUP3 DUP7 ADD PUSH2 0xF1D JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1305 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1310 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1320 DUP2 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x134A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1244 DUP9 DUP3 DUP10 ADD PUSH2 0xE08 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x138C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x85D DUP2 PUSH2 0x136C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x85D DUP2 PUSH2 0xDA9 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x13DC JUMPI PUSH2 0x13DC PUSH2 0x13B4 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x85D DUP2 PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x85D DUP2 PUSH2 0x136C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x142D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x143A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x146F JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xADA JUMPI PUSH2 0xADA PUSH2 0x13B4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x149F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x14B1 DUP2 PUSH2 0xDA9 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 ADDRESS 0xA8 0xAE 0xBC 0xC PUSH18 0x89E7CB5B473A0CF379BFBC7E164CDE1F79E1 0xFB 0xD2 0xC2 SWAP7 0xE8 0xE5 PUSH11 0x64736F6C63430008110033 ","sourceMap":"206:995:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5241:393:6;;;;;;;;;;-1:-1:-1;5241:393:6;;;;;:::i;:::-;;:::i;:::-;;;470:14:11;;463:22;445:41;;433:2;418:18;5241:393:6;;;;;;;;2654:528;;;;;;;;;;-1:-1:-1;2654:528:6;;;;;:::i;:::-;;:::i;:::-;;5779:526;;;;;;;;;;-1:-1:-1;5779:526:6;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3559:33:11;;;3541:52;;3529:2;3514:18;5779:526:6;3397:202:11;1023:63:6;;;;;;;;;;-1:-1:-1;1023:63:6;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:320;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4569:535::-;;;;;;;;;;-1:-1:-1;4569:535:6;;;;;:::i;:::-;;:::i;563:256:7:-;;;;;;;;;;-1:-1:-1;563:256:7;;;;;:::i;:::-;;:::i;4188:310:6:-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6926:32:11;;;6908:51;;6896:2;6881:18;4188:310:6;6762:203:11;3573:100:6;;;;;;;;;;-1:-1:-1;3614:4:6;3637:11;3651:15;-1:-1:-1;3573:100:6;;825:186:7;;;;;;;;;;-1:-1:-1;825:186:7;;;;;:::i;:::-;;:::i;256:301::-;;;;;;;;;;-1:-1:-1;256:301:7;;;;;:::i;:::-;;:::i;6708:244:6:-;;;;;;;;;;-1:-1:-1;6708:244:6;;;;;:::i;:::-;-1:-1:-1;;;6708:244:6;;;;;;;;8120:74;;;;;;;;;;-1:-1:-1;8186:1:6;8120:74;;;9617:25:11;;;9605:2;9590:18;8120:74:6;9471:177:11;1017:182:7;;;;;;;;;;-1:-1:-1;1017:182:7;;;;;:::i;:::-;;:::i;929:26:6:-;;;;;;;;;;;;;;;;7996:118;;;;;;;;;;-1:-1:-1;7996:118:6;;;;;:::i;:::-;;:::i;3245:249::-;;;;;;;;;;-1:-1:-1;3245:249:6;;;;;:::i;:::-;;:::i;6395:216::-;;;;;;;;;;-1:-1:-1;6395:216:6;;;;;:::i;:::-;-1:-1:-1;;;6395:216:6;;;;;;;;3805:220;;;;;;;;;;;;;:::i;:::-;;;;11654:25:11;;;-1:-1:-1;;;;;11715:32:11;;;11710:2;11695:18;;11688:60;11764:18;;;11757:34;11642:2;11627:18;3805:220:6;11452:345:11;5241:393:6;5351:4;;-1:-1:-1;;;;;;5393:40:6;;-1:-1:-1;;;5393:40:6;;:105;;-1:-1:-1;;;;;;;5449:49:6;;-1:-1:-1;;;5449:49:6;5393:105;:169;;;-1:-1:-1;;;;;;;5514:48:6;;-1:-1:-1;;;5514:48:6;5393:169;5371:191;;5577:14;5573:31;;;-1:-1:-1;5600:4:6;;5241:393;-1:-1:-1;;5241:393:6:o;5573:31::-;-1:-1:-1;5622:5:6;;5241:393;-1:-1:-1;;5241:393:6:o;2654:528::-;3614:4;3637:11;3651:15;-1:-1:-1;1826:38:6;;;1849:15;;-1:-1:-1;;;1849:15:6;;;;;;;;;;;1826:38;2790:14:::1;2807:7;:5;:7::i;:::-;2790:24:::0;-1:-1:-1;2828:10:6::1;-1:-1:-1::0;;;;;2828:20:6;::::1;;2824:48;;2857:15;;-1:-1:-1::0;;;2857:15:6::1;;;;;;;;;;;2824:48;2900:7:::0;2929:29;;::::1;2925:56;;2967:14;;-1:-1:-1::0;;;2967:14:6::1;;;;;;;;;;;2925:56;2997:9;2992:184;3016:6;3012:1;:10;2992:184;;;3077:12;;3090:1;3077:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3043:19:6;::::1;;::::0;;;:11:::1;:19;::::0;;;;;3063:7;;3071:1;3063:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3043:31:6::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;3043:31:6;:49;;-1:-1:-1;;3043:49:6::1;::::0;::::1;;::::0;;;::::1;::::0;;3111:54:::1;3129:6:::0;3137:7;;3145:1;3137:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3149:12;;3162:1;3149:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3111:54;::::0;;-1:-1:-1;;;;;12807:15:11;;;12789:34;;12859:15;;;;12854:2;12839:18;;12832:43;12918:14;12911:22;12891:18;;;12884:50;12739:2;12724:18;3111:54:6::1;;;;;;;3024:3:::0;::::1;::::0;::::1;:::i;:::-;;;;2992:184;;;;2780:402;;2654:528:::0;;;;:::o;5779:526::-;5930:6;5962:15;5991:21;6026:15;6054:25;:23;:25::i;:::-;5948:131;;;;;;6118:13;6107:7;:24;:67;;;;-1:-1:-1;;;;;;6147:27:6;;6164:10;6147:27;6107:67;:109;;;;;6201:15;6190:7;:26;6107:109;6090:160;;;6234:16;;-1:-1:-1;;;6234:16:6;;;;;;;;;;;6090:160;-1:-1:-1;;;;6268:30:6;5779:526;-1:-1:-1;;;;;;;5779:526:6:o;2271:320::-;2476:12;2424:4;;1639:34;1653:10;1665:7;;1639:13;:34::i;:::-;-1:-1:-1;;;;;1639:48:6;;1677:10;1639:48;;;1635:76;;1696:15;;-1:-1:-1;;;1696:15:6;;;;;;;;;;;1635:76;3614:4;3637:11;3651:15;-1:-1:-1;1826:38:6::1;;;1849:15;;-1:-1:-1::0;;;1849:15:6::1;;;;;;;;;;;1826:38;2461:4:::2;;1955:20;1969:5;;1955:13;:20::i;:::-;1947:55;;;::::0;-1:-1:-1;;;1947:55:6;;13419:2:11;1947:55:6::2;::::0;::::2;13401:21:11::0;13458:2;13438:18;;;13431:30;-1:-1:-1;;;13477:18:11;;;13470:52;13539:18;;1947:55:6::2;;;;;;;;2562:22:::3;2568:2;2572:5;2579:4;;2562:5;:22::i;:::-;2555:29:::0;2271:320;-1:-1:-1;;;;;;;;;;2271:320:6:o;4569:535::-;4653:17;4710:21;4745:15;4773:25;:23;:25::i;:::-;4825:39;;-1:-1:-1;;;4825:39:6;;;;;9617:25:11;;;4682:116:6;;-1:-1:-1;4682:116:6;-1:-1:-1;4808:14:6;;-1:-1:-1;;;;;;4825:30:6;;;;;9590:18:11;;4825:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4808:56;;4922:6;-1:-1:-1;;;;;4912:16:6;:6;-1:-1:-1;;;;;4912:16:6;;4908:39;;-1:-1:-1;;;;4930:17:6;-1:-1:-1;4930:17:6;;-1:-1:-1;;4930:17:6;4908:39;-1:-1:-1;;;;;5023:19:6;;;;;;;:11;:19;;;;;;;;:27;;;;;;;;;;;;5019:50;;;-1:-1:-1;;;;5052:17:6;-1:-1:-1;5052:17:6;;-1:-1:-1;;5052:17:6;5019:50;-1:-1:-1;;;;;;;5080:17:6;-1:-1:-1;;;4569:535:6;;;;;;:::o;563:256:7:-;734:78;;-1:-1:-1;;;734:78:7;;784:4;734:78;;;14064:34:11;-1:-1:-1;;;;;14134:15:11;;;14114:18;;;14107:43;14166:18;;;14159:34;;;734:41:7;;;;;13999:18:11;;734:78:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;563:256;;;;:::o;4188:310:6:-;4226:7;4259:15;4288:21;4323:15;4351:25;:23;:25::i;:::-;4245:131;;;;;;4402:13;4391:7;:24;4387:47;;4432:1;4417:17;;;;;4188:310;:::o;4387:47::-;4452:39;;-1:-1:-1;;;4452:39:6;;;;;9617:25:11;;;-1:-1:-1;;;;;4452:30:6;;;;;9590:18:11;;4452:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4445:46;;;;;4188:310;:::o;825:186:7:-;933:71;;-1:-1:-1;;;933:71:7;;965:10;933:71;;;14064:34:11;985:4:7;14114:18:11;;;14107:43;14166:18;;;14159:34;;;-1:-1:-1;;;;;933:31:7;;;;;13999:18:11;;933:71:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;825:186;;:::o;256:301::-;424:126;;-1:-1:-1;;;424:126:7;;479:10;424:126;;;14064:34:11;511:4:7;14114:18:11;;;14107:43;14166:18;;;14159:34;;;-1:-1:-1;;;;;424:41:7;;;;;13999:18:11;;424:126:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1017:182;1144:50;;-1:-1:-1;;;1144:50:7;;-1:-1:-1;;;;;14646:32:11;;;1144:50:7;;;14628:51:11;14695:18;;;14688:34;;;1144:27:7;;;;;14601:18:11;;1144:50:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1017:182;;;:::o;7996:118:6:-;8065:6;8097:9;8104:1;8065:6;8097:5;;:9;:::i;:::-;8090:17;;;:::i;:::-;8083:24;;7996:118;;;;;:::o;3245:249::-;1445:7;:5;:7::i;:::-;-1:-1:-1;;;;;1431:21:6;:10;-1:-1:-1;;;;;1431:21:6;;1427:49;;1461:15;;-1:-1:-1;;;1461:15:6;;;;;;;;;;;1427:49;3614:4;3637:11;3651:15;-1:-1:-1;1826:38:6::1;;;1849:15;;-1:-1:-1::0;;;1849:15:6::1;;;;;;;;;;;1826:38;3342:26:::2;:15;3360:8;3342:26;:::i;:::-;3327:12;:41;3323:86;;;3389:20;;-1:-1:-1::0;;;3389:20:6::2;;;;;;;;;;;3323:86;3420:11;:26:::0;;;3462:25:::2;::::0;9617::11;;;3462::6::2;::::0;9605:2:11;9590:18;3462:25:6::2;;;;;;;3245:249:::0;:::o;3805:220::-;3882:15;3911:21;3946:15;3993:25;:23;:25::i;:::-;3986:32;;;;;;3805:220;;;:::o;90:406:10:-;263:15;;;273:4;263:15;;;;;;;;;167:7;;;;;;;;263:15;;;;;;;;;;;-1:-1:-1;263:15:10;241:37;;410:4;404;397;389:6;385:17;374:9;362:53;453:6;442:47;;;;;;;;;;;;:::i;:::-;435:54;;;;;;;90:406;;;:::o;7731:259:6:-;7794:4;7810:16;7829:23;7846:5;;7829:16;:23::i;:::-;7810:42;-1:-1:-1;;;;;;;7900:23:6;;-1:-1:-1;;;7900:23:6;7896:66;;7946:5;7939:12;;;;;7896:66;-1:-1:-1;7979:4:6;;7731:259;-1:-1:-1;;;7731:259:6:o;6997:345::-;7108:19;7139:12;7181:2;-1:-1:-1;;;;;7181:7:6;7196:5;7203:4;;7181:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7161:47:6;-1:-1:-1;7161:47:6;-1:-1:-1;7161:47:6;7219:117;;7304:6;7298:13;7293:2;7285:6;7281:15;7274:38;7219:117;7129:213;6997:345;;;;;;:::o;14:286:11:-;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:11;;209:43;;199:71;;266:1;263;256:12;497:367;560:8;570:6;624:3;617:4;609:6;605:17;601:27;591:55;;642:1;639;632:12;591:55;-1:-1:-1;665:20:11;;708:18;697:30;;694:50;;;740:1;737;730:12;694:50;777:4;769:6;765:17;753:29;;837:3;830:4;820:6;817:1;813:14;805:6;801:27;797:38;794:47;791:67;;;854:1;851;844:12;791:67;497:367;;;;;:::o;869:770::-;988:6;996;1004;1012;1065:2;1053:9;1044:7;1040:23;1036:32;1033:52;;;1081:1;1078;1071:12;1033:52;1121:9;1108:23;1150:18;1191:2;1183:6;1180:14;1177:34;;;1207:1;1204;1197:12;1177:34;1246:70;1308:7;1299:6;1288:9;1284:22;1246:70;:::i;:::-;1335:8;;-1:-1:-1;1220:96:11;-1:-1:-1;1423:2:11;1408:18;;1395:32;;-1:-1:-1;1439:16:11;;;1436:36;;;1468:1;1465;1458:12;1436:36;;1507:72;1571:7;1560:8;1549:9;1545:24;1507:72;:::i;:::-;869:770;;;;-1:-1:-1;1598:8:11;-1:-1:-1;;;;869:770:11:o;1644:131::-;-1:-1:-1;;;;;1719:31:11;;1709:42;;1699:70;;1765:1;1762;1755:12;1699:70;1644:131;:::o;1780:127::-;1841:10;1836:3;1832:20;1829:1;1822:31;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;1912:275;1983:2;1977:9;2048:2;2029:13;;-1:-1:-1;;2025:27:11;2013:40;;2083:18;2068:34;;2104:22;;;2065:62;2062:88;;;2130:18;;:::i;:::-;2166:2;2159:22;1912:275;;-1:-1:-1;1912:275:11:o;2192:530::-;2234:5;2287:3;2280:4;2272:6;2268:17;2264:27;2254:55;;2305:1;2302;2295:12;2254:55;2341:6;2328:20;2367:18;2363:2;2360:26;2357:52;;;2389:18;;:::i;:::-;2433:55;2476:2;2457:13;;-1:-1:-1;;2453:27:11;2482:4;2449:38;2433:55;:::i;:::-;2513:2;2504:7;2497:19;2559:3;2552:4;2547:2;2539:6;2535:15;2531:26;2528:35;2525:55;;;2576:1;2573;2566:12;2525:55;2641:2;2634:4;2626:6;2622:17;2615:4;2606:7;2602:18;2589:55;2689:1;2664:16;;;2682:4;2660:27;2653:38;;;;2668:7;2192:530;-1:-1:-1;;;2192:530:11:o;2727:665::-;2822:6;2830;2838;2846;2899:3;2887:9;2878:7;2874:23;2870:33;2867:53;;;2916:1;2913;2906:12;2867:53;2955:9;2942:23;2974:31;2999:5;2974:31;:::i;:::-;3024:5;-1:-1:-1;3081:2:11;3066:18;;3053:32;3094:33;3053:32;3094:33;:::i;:::-;3146:7;-1:-1:-1;3200:2:11;3185:18;;3172:32;;-1:-1:-1;3255:2:11;3240:18;;3227:32;3282:18;3271:30;;3268:50;;;3314:1;3311;3304:12;3268:50;3337:49;3378:7;3369:6;3358:9;3354:22;3337:49;:::i;:::-;3327:59;;;2727:665;;;;;;;:::o;3604:388::-;3672:6;3680;3733:2;3721:9;3712:7;3708:23;3704:32;3701:52;;;3749:1;3746;3739:12;3701:52;3788:9;3775:23;3807:31;3832:5;3807:31;:::i;:::-;3857:5;-1:-1:-1;3914:2:11;3899:18;;3886:32;3927:33;3886:32;3927:33;:::i;:::-;3979:7;3969:17;;;3604:388;;;;;:::o;3997:347::-;4048:8;4058:6;4112:3;4105:4;4097:6;4093:17;4089:27;4079:55;;4130:1;4127;4120:12;4079:55;-1:-1:-1;4153:20:11;;4196:18;4185:30;;4182:50;;;4228:1;4225;4218:12;4182:50;4265:4;4257:6;4253:17;4241:29;;4317:3;4310:4;4301:6;4293;4289:19;4285:30;4282:39;4279:59;;;4334:1;4331;4324:12;4349:778;4444:6;4452;4460;4468;4476;4529:3;4517:9;4508:7;4504:23;4500:33;4497:53;;;4546:1;4543;4536:12;4497:53;4585:9;4572:23;4604:31;4629:5;4604:31;:::i;:::-;4654:5;-1:-1:-1;4706:2:11;4691:18;;4678:32;;-1:-1:-1;4761:2:11;4746:18;;4733:32;4788:18;4777:30;;4774:50;;;4820:1;4817;4810:12;4774:50;4859:58;4909:7;4900:6;4889:9;4885:22;4859:58;:::i;:::-;4936:8;;-1:-1:-1;4833:84:11;-1:-1:-1;;5023:2:11;5008:18;;4995:32;5071:4;5058:18;;5046:31;;5036:59;;5091:1;5088;5081:12;5036:59;5114:7;5104:17;;;4349:778;;;;;;;;:::o;5132:546::-;5242:4;5271:2;5300;5289:9;5282:21;5332:6;5326:13;5375:6;5370:2;5359:9;5355:18;5348:34;5400:1;5410:140;5424:6;5421:1;5418:13;5410:140;;;5519:14;;;5515:23;;5509:30;5485:17;;;5504:2;5481:26;5474:66;5439:10;;5410:140;;;5414:3;5599:1;5594:2;5585:6;5574:9;5570:22;5566:31;5559:42;5669:2;5662;5658:7;5653:2;5645:6;5641:15;5637:29;5626:9;5622:45;5618:54;5610:62;;;;5132:546;;;;:::o;5683:544::-;5762:6;5770;5778;5831:2;5819:9;5810:7;5806:23;5802:32;5799:52;;;5847:1;5844;5837:12;5799:52;5886:9;5873:23;5905:31;5930:5;5905:31;:::i;:::-;5955:5;-1:-1:-1;6011:2:11;5996:18;;5983:32;6038:18;6027:30;;6024:50;;;6070:1;6067;6060:12;6024:50;6109:58;6159:7;6150:6;6139:9;6135:22;6109:58;:::i;:::-;5683:544;;6186:8;;-1:-1:-1;6083:84:11;;-1:-1:-1;;;;5683:544:11:o;6232:525::-;6318:6;6326;6334;6342;6395:3;6383:9;6374:7;6370:23;6366:33;6363:53;;;6412:1;6409;6402:12;6363:53;6451:9;6438:23;6470:31;6495:5;6470:31;:::i;:::-;6520:5;-1:-1:-1;6577:2:11;6562:18;;6549:32;6590:33;6549:32;6590:33;:::i;:::-;6232:525;;6642:7;;-1:-1:-1;;;;6696:2:11;6681:18;;6668:32;;6747:2;6732:18;6719:32;;6232:525::o;6970:315::-;7038:6;7046;7099:2;7087:9;7078:7;7074:23;7070:32;7067:52;;;7115:1;7112;7105:12;7067:52;7154:9;7141:23;7173:31;7198:5;7173:31;:::i;:::-;7223:5;7275:2;7260:18;;;;7247:32;;-1:-1:-1;;;6970:315:11:o;7290:383::-;7367:6;7375;7383;7436:2;7424:9;7415:7;7411:23;7407:32;7404:52;;;7452:1;7449;7442:12;7404:52;7491:9;7478:23;7510:31;7535:5;7510:31;:::i;:::-;7560:5;7612:2;7597:18;;7584:32;;-1:-1:-1;7663:2:11;7648:18;;;7635:32;;7290:383;-1:-1:-1;;;7290:383:11:o;7678:712::-;7732:5;7785:3;7778:4;7770:6;7766:17;7762:27;7752:55;;7803:1;7800;7793:12;7752:55;7839:6;7826:20;7865:4;7888:18;7884:2;7881:26;7878:52;;;7910:18;;:::i;:::-;7956:2;7953:1;7949:10;7979:28;8003:2;7999;7995:11;7979:28;:::i;:::-;8041:15;;;8111;;;8107:24;;;8072:12;;;;8143:15;;;8140:35;;;8171:1;8168;8161:12;8140:35;8207:2;8199:6;8195:15;8184:26;;8219:142;8235:6;8230:3;8227:15;8219:142;;;8301:17;;8289:30;;8252:12;;;;8339;;;;8219:142;;;8379:5;7678:712;-1:-1:-1;;;;;;;7678:712:11:o;8395:1071::-;8549:6;8557;8565;8573;8581;8634:3;8622:9;8613:7;8609:23;8605:33;8602:53;;;8651:1;8648;8641:12;8602:53;8690:9;8677:23;8709:31;8734:5;8709:31;:::i;:::-;8759:5;-1:-1:-1;8816:2:11;8801:18;;8788:32;8829:33;8788:32;8829:33;:::i;:::-;8881:7;-1:-1:-1;8939:2:11;8924:18;;8911:32;8962:18;8992:14;;;8989:34;;;9019:1;9016;9009:12;8989:34;9042:61;9095:7;9086:6;9075:9;9071:22;9042:61;:::i;:::-;9032:71;;9156:2;9145:9;9141:18;9128:32;9112:48;;9185:2;9175:8;9172:16;9169:36;;;9201:1;9198;9191:12;9169:36;9224:63;9279:7;9268:8;9257:9;9253:24;9224:63;:::i;:::-;9214:73;;9340:3;9329:9;9325:19;9312:33;9296:49;;9370:2;9360:8;9357:16;9354:36;;;9386:1;9383;9376:12;9354:36;;9409:51;9452:7;9441:8;9430:9;9426:24;9409:51;:::i;:::-;9399:61;;;8395:1071;;;;;;;;:::o;9653:456::-;9730:6;9738;9746;9799:2;9787:9;9778:7;9774:23;9770:32;9767:52;;;9815:1;9812;9805:12;9767:52;9854:9;9841:23;9873:31;9898:5;9873:31;:::i;:::-;9923:5;-1:-1:-1;9980:2:11;9965:18;;9952:32;9993:33;9952:32;9993:33;:::i;:::-;9653:456;;10045:7;;-1:-1:-1;;;10099:2:11;10084:18;;;;10071:32;;9653:456::o;10114:409::-;10184:6;10192;10245:2;10233:9;10224:7;10220:23;10216:32;10213:52;;;10261:1;10258;10251:12;10213:52;10301:9;10288:23;10334:18;10326:6;10323:30;10320:50;;;10366:1;10363;10356:12;10320:50;10405:58;10455:7;10446:6;10435:9;10431:22;10405:58;:::i;:::-;10482:8;;10379:84;;-1:-1:-1;10114:409:11;-1:-1:-1;;;;10114:409:11:o;10528:180::-;10587:6;10640:2;10628:9;10619:7;10615:23;10611:32;10608:52;;;10656:1;10653;10646:12;10608:52;-1:-1:-1;10679:23:11;;10528:180;-1:-1:-1;10528:180:11:o;10713:734::-;10817:6;10825;10833;10841;10849;10902:3;10890:9;10881:7;10877:23;10873:33;10870:53;;;10919:1;10916;10909:12;10870:53;10958:9;10945:23;10977:31;11002:5;10977:31;:::i;:::-;11027:5;-1:-1:-1;11084:2:11;11069:18;;11056:32;11097:33;11056:32;11097:33;:::i;:::-;11149:7;-1:-1:-1;11203:2:11;11188:18;;11175:32;;-1:-1:-1;11254:2:11;11239:18;;11226:32;;-1:-1:-1;11309:3:11;11294:19;;11281:33;11337:18;11326:30;;11323:50;;;11369:1;11366;11359:12;11323:50;11392:49;11433:7;11424:6;11413:9;11409:22;11392:49;:::i;11802:127::-;11863:10;11858:3;11854:20;11851:1;11844:31;11894:4;11891:1;11884:15;11918:4;11915:1;11908:15;11934:118;12020:5;12013:13;12006:21;11999:5;11996:32;11986:60;;12042:1;12039;12032:12;12057:241;12113:6;12166:2;12154:9;12145:7;12141:23;12137:32;12134:52;;;12182:1;12179;12172:12;12134:52;12221:9;12208:23;12240:28;12262:5;12240:28;:::i;12303:247::-;12362:6;12415:2;12403:9;12394:7;12390:23;12386:32;12383:52;;;12431:1;12428;12421:12;12383:52;12470:9;12457:23;12489:31;12514:5;12489:31;:::i;12945:127::-;13006:10;13001:3;12997:20;12994:1;12987:31;13037:4;13034:1;13027:15;13061:4;13058:1;13051:15;13077:135;13116:3;13137:17;;;13134:43;;13157:18;;:::i;:::-;-1:-1:-1;13204:1:11;13193:13;;13077:135::o;13568:251::-;13638:6;13691:2;13679:9;13670:7;13666:23;13662:32;13659:52;;;13707:1;13704;13697:12;13659:52;13739:9;13733:16;13758:31;13783:5;13758:31;:::i;14204:245::-;14271:6;14324:2;14312:9;14303:7;14299:23;14295:32;14292:52;;;14340:1;14337;14330:12;14292:52;14372:9;14366:16;14391:28;14413:5;14391:28;:::i;14733:331::-;14838:9;14849;14891:8;14879:10;14876:24;14873:44;;;14913:1;14910;14903:12;14873:44;14942:6;14932:8;14929:20;14926:40;;;14962:1;14959;14952:12;14926:40;-1:-1:-1;;14988:23:11;;;15033:25;;;;;-1:-1:-1;14733:331:11:o;15069:323::-;-1:-1:-1;;;;;;15189:19:11;;15265:11;;;;15296:1;15288:10;;15285:101;;;15373:2;15367;15360:3;15357:1;15353:11;15350:1;15346:19;15342:28;15338:2;15334:37;15330:46;15321:55;;15285:101;;;15069:323;;;;:::o;15397:125::-;15462:9;;;15483:10;;;15480:36;;;15496:18;;:::i;15527:381::-;15623:6;15631;15639;15692:2;15680:9;15671:7;15667:23;15663:32;15660:52;;;15708:1;15705;15698:12;15660:52;15737:9;15731:16;15721:26;;15790:2;15779:9;15775:18;15769:25;15803:31;15828:5;15803:31;:::i;:::-;15853:5;15843:15;;;15898:2;15887:9;15883:18;15877:25;15867:35;;15527:381;;;;;:::o;15913:271::-;16096:6;16088;16083:3;16070:33;16052:3;16122:16;;16147:13;;;16122:16;15913:271;-1:-1:-1;15913:271:11:o"},"gasEstimates":{"creation":{"codeDepositCost":"1077000","executionCost":"1120","totalCost":"1078120"},"external":{"breakCovalentBond(address,address,uint256,uint256)":"infinite","covalentBond(address,uint256,uint256)":"infinite","dischargeParticle(address,address,uint256)":"infinite","energizeParticle(address,uint256)":"infinite","execute(address,uint256,bytes,uint8)":"infinite","isLocked()":"2403","isValidSigner(address,bytes)":"infinite","lock(uint256)":"infinite","lockedUntil()":"2317","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"infinite","onERC1155Received(address,address,uint256,uint256,bytes)":"infinite","onERC721Received(address,address,uint256,bytes)":"infinite","owner()":"infinite","parseFirst4Bytes(bytes)":"809","permissions(address,address)":"infinite","setPermissions(address[],bool[])":"infinite","state()":"270","supportsInterface(bytes4)":"538","token()":"infinite"}},"methodIdentifiers":{"breakCovalentBond(address,address,uint256,uint256)":"6b764e1b","covalentBond(address,uint256,uint256)":"a737a299","dischargeParticle(address,address,uint256)":"ca1cc220","energizeParticle(address,uint256)":"a65e78f1","execute(address,uint256,bytes,uint8)":"51945447","isLocked()":"a4e2d634","isValidSigner(address,bytes)":"523e3260","lock(uint256)":"dd467064","lockedUntil()":"ce0617ec","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","owner()":"8da5cb5b","parseFirst4Bytes(bytes)":"d0ad2535","permissions(address,address)":"1f9838b5","setPermissions(address[],bool[])":"039721b1","state()":"c19d93fb","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccountLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxLockTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipCycle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockedUntil\",\"type\":\"uint256\"}],\"name\":\"LockUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"OverrideUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasPermission\",\"type\":\"bool\"}],\"name\":\"PermissionUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nftTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenAmount\",\"type\":\"uint256\"}],\"name\":\"breakCovalentBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nftTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenAmount\",\"type\":\"uint256\"}],\"name\":\"covalentBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"}],\"name\":\"dischargeParticle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"}],\"name\":\"energizeParticle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"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\"},{\"inputs\":[],\"name\":\"isLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":[{\"internalType\":\"uint256\",\"name\":\"_lockedUntil\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockedUntil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"receivedTokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"parseFirst4Bytes\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"permissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"callers\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"_permissions\",\"type\":\"bool[]\"}],\"name\":\"setPermissions\",\"outputs\":[],\"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\":{\"kind\":\"dev\",\"methods\":{\"execute(address,uint256,bytes,uint8)\":{\"details\":\"executes a low-level call against an account if the caller is authorized to make calls\"},\"isLocked()\":{\"details\":\"returns the current lock status of the account as a boolean\"},\"isValidSigner(address,bytes)\":{\"details\":\"Returns the authorization status for a given caller\"},\"lock(uint256)\":{\"details\":\"locks the account until a certain timestamp\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Allows ERC-1155 token batches to be received. This function can be overriden.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Allows ERC-1155 tokens to be received. This function can be overriden.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden.\"},\"owner()\":{\"details\":\"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account.\"},\"setPermissions(address[],bool[])\":{\"details\":\"grants a given caller execution permissions\"},\"state()\":{\"details\":\"Returns a value that SHOULD be modified each time the account changes state.\",\"returns\":{\"_0\":\"The current account state\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if a given interfaceId is supported by this account. This method can be extended by an override.\"},\"token()\":{\"details\":\"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ChargedParticlesAccount.sol\":\"ChargedParticlesAccount\"},\"evmVersion\":\"london\",\"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 v4.4.1 (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n *\\n * _Available since v4.1._\\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 _data\\n */\\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\nimport \\\"./interfaces/IERC6551Account.sol\\\";\\nimport \\\"./interfaces/IERC6551Executable.sol\\\";\\nimport \\\"./lib/ERC6551AccountLib.sol\\\";\\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/token/ERC1155/IERC1155Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/interfaces/IERC1271.sol\\\";\\n\\nerror NotAuthorized();\\nerror InvalidInput();\\nerror AccountLocked();\\nerror ExceedsMaxLockTime();\\nerror UntrustedImplementation();\\nerror OwnershipCycle();\\n\\n/**\\n * @title A smart contract account owned by a single ERC721 token\\n */\\ncontract Account is\\n IERC165,\\n IERC6551Account,\\n IERC6551Executable,\\n IERC721Receiver,\\n IERC1155Receiver\\n{\\n /// @dev timestamp at which this account will be unlocked\\n uint256 public lockedUntil;\\n\\n /// @dev mapping from owner => caller => has permissions\\n mapping(address => mapping(address => bool)) public permissions;\\n\\n event OverrideUpdated(\\n address owner,\\n bytes4 selector,\\n address implementation\\n );\\n\\n event PermissionUpdated(address owner, address caller, bool hasPermission);\\n\\n event LockUpdated(uint256 lockedUntil);\\n\\n /// @dev reverts if caller is not the owner of the account\\n modifier onlyOwner() {\\n if (msg.sender != owner()) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if caller is not authorized to execute on this account\\n modifier onlyValidSigner(bytes calldata context) {\\n if (isValidSigner(msg.sender, context) != 0x523e3260) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if this account is currently locked\\n modifier onlyUnlocked() {\\n if (isLocked()) revert AccountLocked();\\n _;\\n }\\n\\n modifier onlyAllowedMethod(bytes calldata _data) {\\n require(allowedMethod(_data), \\\"Method all not allowed\\\");\\n _;\\n }\\n\\n constructor() {}\\n\\n /// @dev allows eth transfers by default, but allows account owner to override\\n receive() external payable {\\n }\\n\\n /// @dev executes a low-level call against an account if the caller is authorized to make calls\\n function execute(\\n address to,\\n uint256 value,\\n bytes calldata data,\\n uint8 operation\\n ) external payable onlyValidSigner(data) onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) {\\n // emit TransactionExecuted(to, value, data);\\n\\n return _call(to, value, data);\\n }\\n\\n /// @dev grants a given caller execution permissions\\n function setPermissions(\\n address[] calldata callers,\\n bool[] calldata _permissions\\n ) external onlyUnlocked {\\n address _owner = owner();\\n if (msg.sender != _owner) revert NotAuthorized();\\n\\n uint256 length = callers.length;\\n\\n if (_permissions.length != length) revert InvalidInput();\\n\\n for (uint256 i = 0; i < length; i++) {\\n permissions[_owner][callers[i]] = _permissions[i];\\n emit PermissionUpdated(_owner, callers[i], _permissions[i]);\\n }\\n }\\n\\n /// @dev locks the account until a certain timestamp\\n function lock(uint256 _lockedUntil) external onlyOwner onlyUnlocked {\\n if (_lockedUntil > block.timestamp + 365 days)\\n revert ExceedsMaxLockTime();\\n\\n lockedUntil = _lockedUntil;\\n\\n emit LockUpdated(_lockedUntil);\\n }\\n\\n /// @dev returns the current lock status of the account as a boolean\\n function isLocked() public view returns (bool) {\\n return lockedUntil > block.timestamp;\\n }\\n\\n /// @dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\\n /// owns this account.\\n function token()\\n external\\n view\\n returns (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n )\\n {\\n return ERC6551AccountLib.token();\\n }\\n\\n /// @dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\\n /// of the token has full permissions on the account.\\n function owner() public view returns (address) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (chainId != block.chainid) return address(0);\\n\\n return IERC721(tokenContract).ownerOf(tokenId);\\n }\\n\\n /// @dev Returns the authorization status for a given caller\\n function isValidSigner(address signer, bytes calldata context) public view returns (bytes4 magicValue) {\\n (\\n ,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n address _owner = IERC721(tokenContract).ownerOf(tokenId);\\n\\n // authorize token owner\\n if (signer == _owner) return 0x523e3260;\\n\\n // authorize caller if owner has granted permissions\\n if (permissions[_owner][signer]) return 0x523e3260;\\n\\n return 0xffffffff;\\n }\\n\\n /// @dev Returns true if a given interfaceId is supported by this account. This method can be\\n /// extended by an override.\\n function supportsInterface(bytes4 interfaceId)\\n public\\n pure \\n override\\n returns (bool)\\n {\\n bool defaultSupport = interfaceId == type(IERC165).interfaceId ||\\n interfaceId == type(IERC1155Receiver).interfaceId ||\\n interfaceId == type(IERC6551Account).interfaceId;\\n\\n if (defaultSupport) return true;\\n\\n return false;\\n }\\n\\n /// @dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\\n /// This function can be overriden.\\n function onERC721Received(\\n address,\\n address,\\n uint256 receivedTokenId,\\n bytes memory\\n ) public view override returns (bytes4) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (\\n chainId == block.chainid &&\\n tokenContract == msg.sender &&\\n tokenId == receivedTokenId\\n ) revert OwnershipCycle();\\n\\n return this.onERC721Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 tokens to be received. This function can be overriden.\\n function onERC1155Received(\\n address,\\n address,\\n uint256,\\n uint256,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 token batches to be received. This function can be overriden.\\n function onERC1155BatchReceived(\\n address,\\n address,\\n uint256[] memory,\\n uint256[] memory,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155BatchReceived.selector;\\n }\\n\\n /// @dev Executes a low-level call\\n function _call(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) internal returns (bytes memory result) {\\n bool success;\\n (success, result) = to.call{value: value}(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n /// @dev Executes a low-level static call\\n function _callStatic(address to, bytes calldata data)\\n internal\\n view\\n returns (bytes memory result)\\n {\\n bool success;\\n (success, result) = to.staticcall(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n function allowedMethod(bytes calldata _data) internal returns (bool) {\\n bytes4 signature = parseFirst4Bytes(_data);\\n // approve > 0x095ea7b3\\n\\n if (signature == 0x095ea7b3) {\\n return false;\\n }\\n\\n return true;\\n }\\n\\n function parseFirst4Bytes(bytes calldata _data) public pure returns (bytes4) {\\n return bytes4(_data[:4]);\\n }\\n\\n function state() external view returns (uint256) {\\n return 1;\\n }\\n}\\n\",\"keccak256\":\"0xb2a849cad275dabbb3ebec311ad7bfa62da9a9c5310f0e41dacaa5079110c247\",\"license\":\"UNLICENSED\"},\"contracts/ChargedParticlesAccount.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\nimport \\\"./Account.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ncontract ChargedParticlesAccount is Account {\\n function covalentBond(\\n address nftTokenAddress,\\n uint256 nftTokenId,\\n uint256 nftTokenAmount\\n ) external {\\n // Transfer to self\\n IERC721(nftTokenAddress).safeTransferFrom(\\n msg.sender,\\n address(this),\\n nftTokenId\\n );\\n }\\n\\n function breakCovalentBond(\\n address receiver,\\n address nftTokenAddress,\\n uint256 nftTokenId,\\n uint256 nftTokenAmount\\n ) external {\\n IERC721(nftTokenAddress).safeTransferFrom(address(this), receiver, nftTokenId);\\n }\\n\\n function energizeParticle(\\n address assetToken,\\n uint256 assetAmount\\n ) external {\\n IERC20(assetToken).transferFrom(msg.sender, address(this), assetAmount);\\n }\\n\\n function dischargeParticle(\\n address receiver,\\n address assetToken,\\n uint256 assetAmount\\n ) external {\\n IERC20(assetToken).transfer(receiver, assetAmount);\\n }\\n}\\n\",\"keccak256\":\"0x8992d3b7b0b6eca05ca0d0c125aa1c354fa2a9250a3d20a698a3e19f430a17bf\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\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 chain 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\\n\",\"keccak256\":\"0x9972b9769e138d0f5855d5f0990dc9942977088e6fc5a9b1e289431f8e213339\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IERC6551Executable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\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\":\"0x4b24c8509ccf2fc6fd9744df0c994809133522991951dc7c467120b04f683051\",\"license\":\"UNLICENSED\"},\"contracts/lib/ERC6551AccountLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nlibrary ERC6551AccountLib {\\n function token()\\n internal\\n view\\n returns (\\n uint256,\\n address,\\n uint256\\n )\\n {\\n bytes memory footer = new bytes(0x60);\\n\\n assembly {\\n // copy 0x60 bytes from end of footer\\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\\n }\\n\\n return abi.decode(footer, (uint256, address, uint256));\\n }\\n\\n function salt() internal view returns (uint256) {\\n bytes memory footer = new bytes(0x20);\\n\\n assembly {\\n // copy 0x20 bytes from beginning of footer\\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\\n }\\n\\n return abi.decode(footer, (uint256));\\n }\\n}\\n\",\"keccak256\":\"0xf7a8eb3b4fb63068eb8ed2a1a129e4676af842541f43c1a1dc96a9f295060c45\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":314,"contract":"contracts/ChargedParticlesAccount.sol:ChargedParticlesAccount","label":"lockedUntil","offset":0,"slot":"0","type":"t_uint256"},{"astId":321,"contract":"contracts/ChargedParticlesAccount.sol:ChargedParticlesAccount","label":"permissions","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"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 chain 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.17+commit.8df45f5f\"},\"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 chain 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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\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 chain 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\\n\",\"keccak256\":\"0x9972b9769e138d0f5855d5f0990dc9942977088e6fc5a9b1e289431f8e213339\",\"license\":\"UNLICENSED\"}},\"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.17+commit.8df45f5f\"},\"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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Executable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\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\":\"0x4b24c8509ccf2fc6fd9744df0c994809133522991951dc7c467120b04f683051\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ERC6551AccountLib.sol":{"ERC6551AccountLib":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220507d1af45fff54535180cd2db9c0244503eb6a3f2538827633938e9a22f0be7564736f6c63430008110033","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 POP PUSH30 0x1AF45FFF54535180CD2DB9C0244503EB6A3F2538827633938E9A22F0BE75 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"58:747:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;58:747:10;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220507d1af45fff54535180cd2db9c0244503eb6a3f2538827633938e9a22f0be7564736f6c63430008110033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP PUSH30 0x1AF45FFF54535180CD2DB9C0244503EB6A3F2538827633938E9A22F0BE75 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"58:747:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"salt()":"infinite","token()":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ERC6551AccountLib.sol\":\"ERC6551AccountLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/ERC6551AccountLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nlibrary ERC6551AccountLib {\\n function token()\\n internal\\n view\\n returns (\\n uint256,\\n address,\\n uint256\\n )\\n {\\n bytes memory footer = new bytes(0x60);\\n\\n assembly {\\n // copy 0x60 bytes from end of footer\\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\\n }\\n\\n return abi.decode(footer, (uint256, address, uint256));\\n }\\n\\n function salt() internal view returns (uint256) {\\n bytes memory footer = new bytes(0x20);\\n\\n assembly {\\n // copy 0x20 bytes from beginning of footer\\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\\n }\\n\\n return abi.decode(footer, (uint256));\\n }\\n}\\n\",\"keccak256\":\"0xf7a8eb3b4fb63068eb8ed2a1a129e4676af842541f43c1a1dc96a9f295060c45\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}}}}} \ No newline at end of file diff --git a/build/contracts/build-info/50bef133a3a4ef56dcc656e5ddaa5648.json b/build/contracts/build-info/50bef133a3a4ef56dcc656e5ddaa5648.json new file mode 100644 index 0000000..932aaf3 --- /dev/null +++ b/build/contracts/build-info/50bef133a3a4ef56dcc656e5ddaa5648.json @@ -0,0 +1 @@ +{"id":"50bef133a3a4ef56dcc656e5ddaa5648","_format":"hh-sol-build-info-1","solcVersion":"0.8.17","solcLongVersion":"0.8.17+commit.8df45f5f","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/interfaces/IERC1271.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (interfaces/IERC1271.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC1271 standard signature validation method for\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n *\n * _Available since v4.1._\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 _data\n */\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\ninterface IERC1155Receiver is IERC165 {\n /**\n * @dev Handles the receipt of a single ERC1155 token type. This function is\n * called at the end of a `safeTransferFrom` after the balance has been updated.\n *\n * NOTE: To accept the transfer, this must return\n * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n * (i.e. 0xf23a6e61, or its own function selector).\n *\n * @param operator The address which initiated the transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param id The ID of the token being transferred\n * @param value The amount of tokens being transferred\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(\n address operator,\n address from,\n uint256 id,\n uint256 value,\n bytes calldata data\n ) external returns (bytes4);\n\n /**\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\n * is called at the end of a `safeBatchTransferFrom` after the balances have\n * been updated.\n *\n * NOTE: To accept the transfer(s), this must return\n * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n * (i.e. 0xbc197c81, or its own function selector).\n *\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\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 caller.\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 v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 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 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/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\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[EIP 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/Account.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\nimport \"./interfaces/IERC6551Account.sol\";\nimport \"./lib/ERC6551AccountLib.sol\";\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/token/ERC1155/IERC1155Receiver.sol\";\nimport \"@openzeppelin/contracts/interfaces/IERC1271.sol\";\n\nerror NotAuthorized();\nerror InvalidInput();\nerror AccountLocked();\nerror ExceedsMaxLockTime();\nerror UntrustedImplementation();\nerror OwnershipCycle();\n\n/**\n * @title A smart contract account owned by a single ERC721 token\n */\ncontract Account is\n IERC165,\n // IERC6551Account,\n IERC721Receiver,\n IERC1155Receiver\n{\n /// @dev timestamp at which this account will be unlocked\n uint256 public lockedUntil;\n\n /// @dev mapping from owner => caller => has permissions\n mapping(address => mapping(address => bool)) public permissions;\n\n event OverrideUpdated(\n address owner,\n bytes4 selector,\n address implementation\n );\n\n event PermissionUpdated(address owner, address caller, bool hasPermission);\n\n event LockUpdated(uint256 lockedUntil);\n\n /// @dev reverts if caller is not the owner of the account\n modifier onlyOwner() {\n if (msg.sender != owner()) revert NotAuthorized();\n _;\n }\n\n /// @dev reverts if caller is not authorized to execute on this account\n modifier onlyAuthorized() {\n if (!isAuthorized(msg.sender)) revert NotAuthorized();\n _;\n }\n\n /// @dev reverts if this account is currently locked\n modifier onlyUnlocked() {\n if (isLocked()) revert AccountLocked();\n _;\n }\n\n constructor() {}\n\n /// @dev allows eth transfers by default, but allows account owner to override\n receive() external payable {\n }\n\n /// @dev executes a low-level call against an account if the caller is authorized to make calls\n function executeCall(\n address to,\n uint256 value,\n bytes calldata data\n ) external payable onlyAuthorized onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) {\n // emit TransactionExecuted(to, value, data);\n\n return _call(to, value, data);\n }\n\n /// @dev grants a given caller execution permissions\n function setPermissions(\n address[] calldata callers,\n bool[] calldata _permissions\n ) external onlyUnlocked {\n address _owner = owner();\n if (msg.sender != _owner) revert NotAuthorized();\n\n uint256 length = callers.length;\n\n if (_permissions.length != length) revert InvalidInput();\n\n for (uint256 i = 0; i < length; i++) {\n permissions[_owner][callers[i]] = _permissions[i];\n emit PermissionUpdated(_owner, callers[i], _permissions[i]);\n }\n }\n\n /// @dev locks the account until a certain timestamp\n function lock(uint256 _lockedUntil) external onlyOwner onlyUnlocked {\n if (_lockedUntil > block.timestamp + 365 days)\n revert ExceedsMaxLockTime();\n\n lockedUntil = _lockedUntil;\n\n emit LockUpdated(_lockedUntil);\n }\n\n /// @dev returns the current lock status of the account as a boolean\n function isLocked() public view returns (bool) {\n return lockedUntil > block.timestamp;\n }\n\n /// @dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\n /// owns this account.\n function token()\n external\n view\n returns (\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n )\n {\n return ERC6551AccountLib.token();\n }\n\n /// @dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\n /// of the token has full permissions on the account.\n function owner() public view returns (address) {\n (\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n ) = ERC6551AccountLib.token();\n\n if (chainId != block.chainid) return address(0);\n\n return IERC721(tokenContract).ownerOf(tokenId);\n }\n\n /// @dev Returns the authorization status for a given caller\n function isAuthorized(address caller) public view returns (bool) {\n (\n ,\n address tokenContract,\n uint256 tokenId\n ) = ERC6551AccountLib.token();\n address _owner = IERC721(tokenContract).ownerOf(tokenId);\n\n // authorize token owner\n if (caller == _owner) return true;\n\n // authorize caller if owner has granted permissions\n if (permissions[_owner][caller]) return true;\n\n return false;\n }\n\n /// @dev Returns true if a given interfaceId is supported by this account. This method can be\n /// extended by an override.\n function supportsInterface(bytes4 interfaceId)\n public\n pure \n override\n returns (bool)\n {\n bool defaultSupport = interfaceId == type(IERC165).interfaceId ||\n interfaceId == type(IERC1155Receiver).interfaceId ||\n interfaceId == type(IERC6551Account).interfaceId;\n\n if (defaultSupport) return true;\n\n return false;\n }\n\n /// @dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\n /// This function can be overriden.\n function onERC721Received(\n address,\n address,\n uint256 receivedTokenId,\n bytes memory\n ) public view override returns (bytes4) {\n (\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n ) = ERC6551AccountLib.token();\n\n if (\n chainId == block.chainid &&\n tokenContract == msg.sender &&\n tokenId == receivedTokenId\n ) revert OwnershipCycle();\n\n return this.onERC721Received.selector;\n }\n\n /// @dev Allows ERC-1155 tokens to be received. This function can be overriden.\n function onERC1155Received(\n address,\n address,\n uint256,\n uint256,\n bytes memory\n ) public pure override returns (bytes4) {\n return this.onERC1155Received.selector;\n }\n\n /// @dev Allows ERC-1155 token batches to be received. This function can be overriden.\n function onERC1155BatchReceived(\n address,\n address,\n uint256[] memory,\n uint256[] memory,\n bytes memory\n ) public pure override returns (bytes4) {\n return this.onERC1155BatchReceived.selector;\n }\n\n /// @dev Executes a low-level call\n function _call(\n address to,\n uint256 value,\n bytes calldata data\n ) internal returns (bytes memory result) {\n bool success;\n (success, result) = to.call{value: value}(data);\n\n if (!success) {\n assembly {\n revert(add(result, 32), mload(result))\n }\n }\n }\n\n /// @dev Executes a low-level static call\n function _callStatic(address to, bytes calldata data)\n internal\n view\n returns (bytes memory result)\n {\n bool success;\n (success, result) = to.staticcall(data);\n\n if (!success) {\n assembly {\n revert(add(result, 32), mload(result))\n }\n }\n }\n\n function allowedMethod(bytes calldata _data) internal returns (bool) {\n bytes4 signature = parseFirst4Bytes(_data);\n // approve > 0x095ea7b3\n\n if (signature == 0x095ea7b3) {\n return false;\n }\n\n return true;\n }\n\n function parseFirst4Bytes(bytes calldata _data) public pure returns (bytes4) {\n return bytes4(_data[:4]);\n }\n\n modifier onlyAllowedMethod(bytes calldata _data) {\n require(allowedMethod(_data), \"Method all not allowed\");\n _;\n }\n}\n"},"contracts/AccountRegistryBridge.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.13;\n\nimport \"./interfaces/IERC6551Registry.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\ncontract AccountRegistryBridge {\n address public constant REGISTRY = \t0x02101dfB77FDE026414827Fdc604ddAF224F0921;\n address public constant IMPLEMENTATION = 0x2D25602551487C3f3354dD80D76D54383A243358;\n\n function createAccount(\n address contractAddress,\n uint256 tokenId\n ) external returns (address) {\n return IERC6551Registry(REGISTRY).createAccount(\n IMPLEMENTATION,\n '',\n block.chainid,\n contractAddress,\n tokenId\n );\n }\n\n function account(\n address contractAddress,\n uint256 tokenId\n ) external view returns (address) {\n return IERC6551Registry(REGISTRY).account(\n IMPLEMENTATION,\n '',\n block.chainid,\n contractAddress,\n tokenId\n );\n }\n}"},"contracts/ChargedParticlesAccount.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\nimport \"./Account.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ncontract ChargedParticlesAccount is Account {\n function covalentBond(\n address nftTokenAddress,\n uint256 nftTokenId,\n uint256 nftTokenAmount\n ) external {\n // Transfer to self\n IERC721(nftTokenAddress).safeTransferFrom(\n msg.sender,\n address(this),\n nftTokenId\n );\n }\n\n function breakCovalentBond(\n address receiver,\n address nftTokenAddress,\n uint256 nftTokenId,\n uint256 nftTokenAmount\n ) external {\n IERC721(nftTokenAddress).safeTransferFrom(address(this), receiver, nftTokenId);\n }\n\n function energizeParticle(\n address assetToken,\n uint256 assetAmount\n ) external {\n IERC20(assetToken).transferFrom(msg.sender, address(this), assetAmount);\n }\n\n function dischargeParticle(\n address receiver,\n address assetToken,\n uint256 assetAmount\n ) external {\n IERC20(assetToken).transfer(receiver, assetAmount);\n }\n}\n"},"contracts/interfaces/IERC6551Account.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\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 chain 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\n"},"contracts/interfaces/IERC6551Executable.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\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"},"contracts/interfaces/IERC6551Registry.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\ninterface IERC6551Registry {\n /**\n * @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation.\n */\n event ERC6551AccountCreated(\n address account,\n address indexed implementation,\n bytes32 salt,\n uint256 chainId,\n address indexed tokenContract,\n uint256 indexed tokenId\n );\n\n /**\n * @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails.\n */\n error AccountCreationFailed();\n\n /**\n * @dev Creates a token bound account for a non-fungible token.\n *\n * If account has already been created, returns the account address without calling create2.\n *\n * Emits ERC6551AccountCreated event.\n *\n * @return account The address of the token bound account\n */\n function createAccount(\n address implementation,\n bytes32 salt,\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n ) external returns (address account);\n\n /**\n * @dev Returns the computed token bound account address for a non-fungible token.\n *\n * @return account The address of the token bound account\n */\n function account(\n address implementation,\n bytes32 salt,\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n ) external view returns (address account);\n}\n"},"contracts/lib/ERC6551AccountLib.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nlibrary ERC6551AccountLib {\n function token()\n internal\n view\n returns (\n uint256,\n address,\n uint256\n )\n {\n bytes memory footer = new bytes(0x60);\n\n assembly {\n // copy 0x60 bytes from end of footer\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\n }\n\n return abi.decode(footer, (uint256, address, uint256));\n }\n\n function salt() internal view returns (uint256) {\n bytes memory footer = new bytes(0x20);\n\n assembly {\n // copy 0x20 bytes from beginning of footer\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\n }\n\n return abi.decode(footer, (uint256));\n }\n}\n"},"contracts/MinimalAccount.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\n/**\n * @title A smart contract account owned by a single ERC721 token\n */\ncontract MinimalAccount\n{\n\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"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/ChargedParticlesAccount.sol:12:9:\n |\n12 | uint256 nftTokenAmount\n | ^^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":370,"file":"contracts/ChargedParticlesAccount.sol","start":348},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n --> contracts/ChargedParticlesAccount.sol:26:9:\n |\n26 | uint256 nftTokenAmount\n | ^^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":708,"file":"contracts/ChargedParticlesAccount.sol","start":686},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"Warning: Function state mutability can be restricted to pure\n --> contracts/Account.sol:253:5:\n |\n253 | function allowedMethod(bytes calldata _data) internal returns (bool) {\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":7656,"file":"contracts/Account.sol","start":7397},"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",".0"],"nodeType":"PragmaDirective","src":"92:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1271","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"117:189:0","text":" @dev Interface of the ERC1271 standard signature validation method for\n contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n _Available since v4.1._"},"fullyImplemented":false,"id":13,"linearizedBaseContracts":[13],"name":"IERC1271","nameLocation":"317:8:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"332:220: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 _data"},"functionSelector":"1626ba7e","id":12,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"566:16:0","nodeType":"FunctionDefinition","parameters":{"id":8,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"hash","nameLocation":"591:4:0","nodeType":"VariableDeclaration","scope":12,"src":"583:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4,"name":"bytes32","nodeType":"ElementaryTypeName","src":"583:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"signature","nameLocation":"610:9:0","nodeType":"VariableDeclaration","scope":12,"src":"597:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6,"name":"bytes","nodeType":"ElementaryTypeName","src":"597:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"582:38:0"},"returnParameters":{"id":11,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"mutability":"mutable","name":"magicValue","nameLocation":"651:10:0","nodeType":"VariableDeclaration","scope":12,"src":"644:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9,"name":"bytes4","nodeType":"ElementaryTypeName","src":"644:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"643:19:0"},"scope":13,"src":"557:106:0","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14,"src":"307:358:0","usedErrors":[]}],"src":"92:574:0"},"id":0},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","exportedSymbols":{"IERC1155Receiver":[54],"IERC165":[278]},"id":55,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":15,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:1"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":16,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":55,"sourceUnit":279,"src":"143:47:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18,"name":"IERC165","nameLocations":["262:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":278,"src":"262:7:1"},"id":19,"nodeType":"InheritanceSpecifier","src":"262:7:1"}],"canonicalName":"IERC1155Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"192:39:1","text":" @dev _Available since v3.1._"},"fullyImplemented":false,"id":54,"linearizedBaseContracts":[54,278],"name":"IERC1155Receiver","nameLocation":"242:16:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":20,"nodeType":"StructuredDocumentation","src":"276:826:1","text":" @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n NOTE: To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"},"functionSelector":"f23a6e61","id":35,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"1116:17:1","nodeType":"FunctionDefinition","parameters":{"id":31,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22,"mutability":"mutable","name":"operator","nameLocation":"1151:8:1","nodeType":"VariableDeclaration","scope":35,"src":"1143:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":21,"name":"address","nodeType":"ElementaryTypeName","src":"1143:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":24,"mutability":"mutable","name":"from","nameLocation":"1177:4:1","nodeType":"VariableDeclaration","scope":35,"src":"1169:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"1169:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"id","nameLocation":"1199:2:1","nodeType":"VariableDeclaration","scope":35,"src":"1191:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":25,"name":"uint256","nodeType":"ElementaryTypeName","src":"1191:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":28,"mutability":"mutable","name":"value","nameLocation":"1219:5:1","nodeType":"VariableDeclaration","scope":35,"src":"1211:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":30,"mutability":"mutable","name":"data","nameLocation":"1249:4:1","nodeType":"VariableDeclaration","scope":35,"src":"1234:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":29,"name":"bytes","nodeType":"ElementaryTypeName","src":"1234:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1133:126:1"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":35,"src":"1278:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":32,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1278:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1277:8:1"},"scope":54,"src":"1107:179:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":36,"nodeType":"StructuredDocumentation","src":"1292:994:1","text":" @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated.\n NOTE: To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"},"functionSelector":"bc197c81","id":53,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"2300:22:1","nodeType":"FunctionDefinition","parameters":{"id":49,"nodeType":"ParameterList","parameters":[{"constant":false,"id":38,"mutability":"mutable","name":"operator","nameLocation":"2340:8:1","nodeType":"VariableDeclaration","scope":53,"src":"2332:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"2332:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":40,"mutability":"mutable","name":"from","nameLocation":"2366:4:1","nodeType":"VariableDeclaration","scope":53,"src":"2358:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":39,"name":"address","nodeType":"ElementaryTypeName","src":"2358:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":43,"mutability":"mutable","name":"ids","nameLocation":"2399:3:1","nodeType":"VariableDeclaration","scope":53,"src":"2380:22:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":41,"name":"uint256","nodeType":"ElementaryTypeName","src":"2380:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":42,"nodeType":"ArrayTypeName","src":"2380:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":46,"mutability":"mutable","name":"values","nameLocation":"2431:6:1","nodeType":"VariableDeclaration","scope":53,"src":"2412:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":44,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":45,"nodeType":"ArrayTypeName","src":"2412:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":48,"mutability":"mutable","name":"data","nameLocation":"2462:4:1","nodeType":"VariableDeclaration","scope":53,"src":"2447:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":47,"name":"bytes","nodeType":"ElementaryTypeName","src":"2447:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2322:150:1"},"returnParameters":{"id":52,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":53,"src":"2491:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":50,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2491:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2490:8:1"},"scope":54,"src":"2291:208:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":55,"src":"232:2269:1","usedErrors":[]}],"src":"118:2384:1"},"id":1},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[132]},"id":133,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":56,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":57,"nodeType":"StructuredDocumentation","src":"131:70:2","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":132,"linearizedBaseContracts":[132],"name":"IERC20","nameLocation":"212:6:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":58,"nodeType":"StructuredDocumentation","src":"225:158:2","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":66,"name":"Transfer","nameLocation":"394:8:2","nodeType":"EventDefinition","parameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:2","nodeType":"VariableDeclaration","scope":66,"src":"403:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:2","nodeType":"VariableDeclaration","scope":66,"src":"425:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":64,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:2","nodeType":"VariableDeclaration","scope":66,"src":"445:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":63,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:2"},"src":"388:72:2"},{"anonymous":false,"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"466:148:2","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":75,"name":"Approval","nameLocation":"625:8:2","nodeType":"EventDefinition","parameters":{"id":74,"nodeType":"ParameterList","parameters":[{"constant":false,"id":69,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:2","nodeType":"VariableDeclaration","scope":75,"src":"634:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":71,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:2","nodeType":"VariableDeclaration","scope":75,"src":"657:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":73,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:2","nodeType":"VariableDeclaration","scope":75,"src":"682:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:2"},"src":"619:78:2"},{"documentation":{"id":76,"nodeType":"StructuredDocumentation","src":"703:66:2","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":81,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:2","nodeType":"FunctionDefinition","parameters":{"id":77,"nodeType":"ParameterList","parameters":[],"src":"794:2:2"},"returnParameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":81,"src":"820:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:2"},"scope":132,"src":"774:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":82,"nodeType":"StructuredDocumentation","src":"835:72:2","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":89,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:2","nodeType":"FunctionDefinition","parameters":{"id":85,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84,"mutability":"mutable","name":"account","nameLocation":"939:7:2","nodeType":"VariableDeclaration","scope":89,"src":"931:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:2"},"returnParameters":{"id":88,"nodeType":"ParameterList","parameters":[{"constant":false,"id":87,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":89,"src":"971:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:2"},"scope":132,"src":"912:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":90,"nodeType":"StructuredDocumentation","src":"986:202:2","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":99,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:2","nodeType":"FunctionDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":92,"mutability":"mutable","name":"to","nameLocation":"1219:2:2","nodeType":"VariableDeclaration","scope":99,"src":"1211:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":94,"mutability":"mutable","name":"amount","nameLocation":"1231:6:2","nodeType":"VariableDeclaration","scope":99,"src":"1223:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":93,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:2"},"returnParameters":{"id":98,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":99,"src":"1257:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":96,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:2"},"scope":132,"src":"1193:70:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":100,"nodeType":"StructuredDocumentation","src":"1269:264:2","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":109,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:2","nodeType":"FunctionDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":102,"mutability":"mutable","name":"owner","nameLocation":"1565:5:2","nodeType":"VariableDeclaration","scope":109,"src":"1557:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":101,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":104,"mutability":"mutable","name":"spender","nameLocation":"1580:7:2","nodeType":"VariableDeclaration","scope":109,"src":"1572:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:2"},"returnParameters":{"id":108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":107,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":109,"src":"1612:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:2"},"scope":132,"src":"1538:83:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":110,"nodeType":"StructuredDocumentation","src":"1627:642:2","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":119,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:2","nodeType":"FunctionDefinition","parameters":{"id":115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"mutability":"mutable","name":"spender","nameLocation":"2299:7:2","nodeType":"VariableDeclaration","scope":119,"src":"2291:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":111,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":114,"mutability":"mutable","name":"amount","nameLocation":"2316:6:2","nodeType":"VariableDeclaration","scope":119,"src":"2308:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:2"},"returnParameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":119,"src":"2342:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":116,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:2"},"scope":132,"src":"2274:74:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":120,"nodeType":"StructuredDocumentation","src":"2354:287:2","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":131,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:2","nodeType":"FunctionDefinition","parameters":{"id":127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":122,"mutability":"mutable","name":"from","nameLocation":"2676:4:2","nodeType":"VariableDeclaration","scope":131,"src":"2668:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":124,"mutability":"mutable","name":"to","nameLocation":"2690:2:2","nodeType":"VariableDeclaration","scope":131,"src":"2682:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":123,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":126,"mutability":"mutable","name":"amount","nameLocation":"2702:6:2","nodeType":"VariableDeclaration","scope":131,"src":"2694:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":125,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:42:2"},"returnParameters":{"id":130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":129,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":131,"src":"2728:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":128,"name":"bool","nodeType":"ElementaryTypeName","src":"2728:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2727:6:2"},"scope":132,"src":"2646:88:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":133,"src":"202:2534:2","usedErrors":[]}],"src":"106:2631:2"},"id":2},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[278],"IERC721":[248]},"id":249,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":134,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:3"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":135,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":249,"sourceUnit":279,"src":"133:47:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":137,"name":"IERC165","nameLocations":["271:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":278,"src":"271:7:3"},"id":138,"nodeType":"InheritanceSpecifier","src":"271:7:3"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":136,"nodeType":"StructuredDocumentation","src":"182:67:3","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":248,"linearizedBaseContracts":[248,278],"name":"IERC721","nameLocation":"260:7:3","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":139,"nodeType":"StructuredDocumentation","src":"285:88:3","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":147,"name":"Transfer","nameLocation":"384:8:3","nodeType":"EventDefinition","parameters":{"id":146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:3","nodeType":"VariableDeclaration","scope":147,"src":"393:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":143,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:3","nodeType":"VariableDeclaration","scope":147,"src":"415:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":142,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":145,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:3","nodeType":"VariableDeclaration","scope":147,"src":"435:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":144,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:3"},"src":"378:82:3"},{"anonymous":false,"documentation":{"id":148,"nodeType":"StructuredDocumentation","src":"466:94:3","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":156,"name":"Approval","nameLocation":"571:8:3","nodeType":"EventDefinition","parameters":{"id":155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":150,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:3","nodeType":"VariableDeclaration","scope":156,"src":"580:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":149,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":152,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:3","nodeType":"VariableDeclaration","scope":156,"src":"603:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":151,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":154,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:3","nodeType":"VariableDeclaration","scope":156,"src":"629:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":153,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:3"},"src":"565:89:3"},{"anonymous":false,"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"660:117:3","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":165,"name":"ApprovalForAll","nameLocation":"788:14:3","nodeType":"EventDefinition","parameters":{"id":164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:3","nodeType":"VariableDeclaration","scope":165,"src":"803:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":158,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:3","nodeType":"VariableDeclaration","scope":165,"src":"826:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":160,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":163,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:3","nodeType":"VariableDeclaration","scope":165,"src":"852:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":162,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:3"},"src":"782:85:3"},{"documentation":{"id":166,"nodeType":"StructuredDocumentation","src":"873:76:3","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":173,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:3","nodeType":"FunctionDefinition","parameters":{"id":169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":168,"mutability":"mutable","name":"owner","nameLocation":"981:5:3","nodeType":"VariableDeclaration","scope":173,"src":"973:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":167,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:3"},"returnParameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"balance","nameLocation":"1019:7:3","nodeType":"VariableDeclaration","scope":173,"src":"1011:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:3"},"scope":248,"src":"954:74:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":174,"nodeType":"StructuredDocumentation","src":"1034:131:3","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":181,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:3","nodeType":"FunctionDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":176,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:3","nodeType":"VariableDeclaration","scope":181,"src":"1187:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":175,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:3"},"returnParameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":179,"mutability":"mutable","name":"owner","nameLocation":"1235:5:3","nodeType":"VariableDeclaration","scope":181,"src":"1227:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":178,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:3"},"scope":248,"src":"1170:72:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":182,"nodeType":"StructuredDocumentation","src":"1248:556:3","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 a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":193,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:3","nodeType":"FunctionDefinition","parameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":184,"mutability":"mutable","name":"from","nameLocation":"1843:4:3","nodeType":"VariableDeclaration","scope":193,"src":"1835:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":183,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":186,"mutability":"mutable","name":"to","nameLocation":"1857:2:3","nodeType":"VariableDeclaration","scope":193,"src":"1849:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"tokenId","nameLocation":"1869:7:3","nodeType":"VariableDeclaration","scope":193,"src":"1861:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":187,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"data","nameLocation":"1893:4:3","nodeType":"VariableDeclaration","scope":193,"src":"1878:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":189,"name":"bytes","nodeType":"ElementaryTypeName","src":"1878:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:64:3"},"returnParameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"1907:0:3"},"scope":248,"src":"1809:99:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":194,"nodeType":"StructuredDocumentation","src":"1914:687:3","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 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 {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":203,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2615:16:3","nodeType":"FunctionDefinition","parameters":{"id":201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"from","nameLocation":"2640:4:3","nodeType":"VariableDeclaration","scope":203,"src":"2632:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":195,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":198,"mutability":"mutable","name":"to","nameLocation":"2654:2:3","nodeType":"VariableDeclaration","scope":203,"src":"2646:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"2646:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":200,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:3","nodeType":"VariableDeclaration","scope":203,"src":"2658:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":199,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2631:43:3"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"2683:0:3"},"scope":248,"src":"2606:78:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":204,"nodeType":"StructuredDocumentation","src":"2690:732:3","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 ERC721\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":213,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3436:12:3","nodeType":"FunctionDefinition","parameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":206,"mutability":"mutable","name":"from","nameLocation":"3457:4:3","nodeType":"VariableDeclaration","scope":213,"src":"3449:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":205,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":208,"mutability":"mutable","name":"to","nameLocation":"3471:2:3","nodeType":"VariableDeclaration","scope":213,"src":"3463:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":207,"name":"address","nodeType":"ElementaryTypeName","src":"3463:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":210,"mutability":"mutable","name":"tokenId","nameLocation":"3483:7:3","nodeType":"VariableDeclaration","scope":213,"src":"3475:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":209,"name":"uint256","nodeType":"ElementaryTypeName","src":"3475:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3448:43:3"},"returnParameters":{"id":212,"nodeType":"ParameterList","parameters":[],"src":"3500:0:3"},"scope":248,"src":"3427:74:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":214,"nodeType":"StructuredDocumentation","src":"3507:452:3","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":221,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3973:7:3","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":216,"mutability":"mutable","name":"to","nameLocation":"3989:2:3","nodeType":"VariableDeclaration","scope":221,"src":"3981:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"3981:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":218,"mutability":"mutable","name":"tokenId","nameLocation":"4001:7:3","nodeType":"VariableDeclaration","scope":221,"src":"3993:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":217,"name":"uint256","nodeType":"ElementaryTypeName","src":"3993:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3980:29:3"},"returnParameters":{"id":220,"nodeType":"ParameterList","parameters":[],"src":"4018:0:3"},"scope":248,"src":"3964:55:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":222,"nodeType":"StructuredDocumentation","src":"4025:309:3","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 caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":229,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4348:17:3","nodeType":"FunctionDefinition","parameters":{"id":227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":224,"mutability":"mutable","name":"operator","nameLocation":"4374:8:3","nodeType":"VariableDeclaration","scope":229,"src":"4366:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":223,"name":"address","nodeType":"ElementaryTypeName","src":"4366:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":226,"mutability":"mutable","name":"approved","nameLocation":"4389:8:3","nodeType":"VariableDeclaration","scope":229,"src":"4384:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":225,"name":"bool","nodeType":"ElementaryTypeName","src":"4384:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4365:33:3"},"returnParameters":{"id":228,"nodeType":"ParameterList","parameters":[],"src":"4407:0:3"},"scope":248,"src":"4339:69:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":230,"nodeType":"StructuredDocumentation","src":"4414:139:3","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":237,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4567:11:3","nodeType":"FunctionDefinition","parameters":{"id":233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":232,"mutability":"mutable","name":"tokenId","nameLocation":"4587:7:3","nodeType":"VariableDeclaration","scope":237,"src":"4579:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":231,"name":"uint256","nodeType":"ElementaryTypeName","src":"4579:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4578:17:3"},"returnParameters":{"id":236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":235,"mutability":"mutable","name":"operator","nameLocation":"4627:8:3","nodeType":"VariableDeclaration","scope":237,"src":"4619:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":234,"name":"address","nodeType":"ElementaryTypeName","src":"4619:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4618:18:3"},"scope":248,"src":"4558:79:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":238,"nodeType":"StructuredDocumentation","src":"4643:138:3","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":247,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4795:16:3","nodeType":"FunctionDefinition","parameters":{"id":243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":240,"mutability":"mutable","name":"owner","nameLocation":"4820:5:3","nodeType":"VariableDeclaration","scope":247,"src":"4812:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":239,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":242,"mutability":"mutable","name":"operator","nameLocation":"4835:8:3","nodeType":"VariableDeclaration","scope":247,"src":"4827:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":241,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4811:33:3"},"returnParameters":{"id":246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":247,"src":"4868:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":244,"name":"bool","nodeType":"ElementaryTypeName","src":"4868:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4867:6:3"},"scope":248,"src":"4786:88:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":249,"src":"250:4626:3","usedErrors":[]}],"src":"108:4769:3"},"id":3},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[266]},"id":267,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":250,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":251,"nodeType":"StructuredDocumentation","src":"141:152:4","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":266,"linearizedBaseContracts":[266],"name":"IERC721Receiver","nameLocation":"304:15:4","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":252,"nodeType":"StructuredDocumentation","src":"326:493:4","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 reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":265,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:4","nodeType":"FunctionDefinition","parameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":254,"mutability":"mutable","name":"operator","nameLocation":"867:8:4","nodeType":"VariableDeclaration","scope":265,"src":"859:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":253,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":256,"mutability":"mutable","name":"from","nameLocation":"893:4:4","nodeType":"VariableDeclaration","scope":265,"src":"885:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":255,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":258,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:4","nodeType":"VariableDeclaration","scope":265,"src":"907:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":257,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":260,"mutability":"mutable","name":"data","nameLocation":"947:4:4","nodeType":"VariableDeclaration","scope":265,"src":"932:19:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":259,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:4"},"returnParameters":{"id":264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":265,"src":"976:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":262,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:4"},"scope":266,"src":"824:160:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":267,"src":"294:692:4","usedErrors":[]}],"src":"116:871:4"},"id":4},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[278]},"id":279,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":268,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":269,"nodeType":"StructuredDocumentation","src":"125:279:5","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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":278,"linearizedBaseContracts":[278],"name":"IERC165","nameLocation":"415:7:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":270,"nodeType":"StructuredDocumentation","src":"429: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[EIP 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":277,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:5","nodeType":"FunctionDefinition","parameters":{"id":273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":272,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:5","nodeType":"VariableDeclaration","scope":277,"src":"801:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":271,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:5"},"returnParameters":{"id":276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":277,"src":"844:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":274,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:5"},"scope":278,"src":"774:76:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":279,"src":"405:447:5","usedErrors":[]}],"src":"100:753:5"},"id":5},"contracts/Account.sol":{"ast":{"absolutePath":"contracts/Account.sol","exportedSymbols":{"Account":[859],"AccountLocked":[293],"ERC6551AccountLib":[1172],"ExceedsMaxLockTime":[295],"IERC1155Receiver":[54],"IERC1271":[13],"IERC165":[278],"IERC6551Account":[1046],"IERC721":[248],"IERC721Receiver":[266],"InvalidInput":[291],"NotAuthorized":[289],"OwnershipCycle":[299],"UntrustedImplementation":[297]},"id":860,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":280,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:6"},{"absolutePath":"contracts/interfaces/IERC6551Account.sol","file":"./interfaces/IERC6551Account.sol","id":281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":860,"sourceUnit":1047,"src":"65:42:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/ERC6551AccountLib.sol","file":"./lib/ERC6551AccountLib.sol","id":282,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":860,"sourceUnit":1173,"src":"108:37:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":283,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":860,"sourceUnit":279,"src":"147:65:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":284,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":860,"sourceUnit":249,"src":"213:58:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":285,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":860,"sourceUnit":267,"src":"272:66:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","file":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","id":286,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":860,"sourceUnit":55,"src":"339:68:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","file":"@openzeppelin/contracts/interfaces/IERC1271.sol","id":287,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":860,"sourceUnit":14,"src":"408:57:6","symbolAliases":[],"unitAlias":""},{"errorSelector":"ea8e4eb5","id":289,"name":"NotAuthorized","nameLocation":"473:13:6","nodeType":"ErrorDefinition","parameters":{"id":288,"nodeType":"ParameterList","parameters":[],"src":"486:2:6"},"src":"467:22:6"},{"errorSelector":"b4fa3fb3","id":291,"name":"InvalidInput","nameLocation":"496:12:6","nodeType":"ErrorDefinition","parameters":{"id":290,"nodeType":"ParameterList","parameters":[],"src":"508:2:6"},"src":"490:21:6"},{"errorSelector":"6315bfbb","id":293,"name":"AccountLocked","nameLocation":"518:13:6","nodeType":"ErrorDefinition","parameters":{"id":292,"nodeType":"ParameterList","parameters":[],"src":"531:2:6"},"src":"512:22:6"},{"errorSelector":"0c0a7be8","id":295,"name":"ExceedsMaxLockTime","nameLocation":"541:18:6","nodeType":"ErrorDefinition","parameters":{"id":294,"nodeType":"ParameterList","parameters":[],"src":"559:2:6"},"src":"535:27:6"},{"errorSelector":"b57d5a5e","id":297,"name":"UntrustedImplementation","nameLocation":"569:23:6","nodeType":"ErrorDefinition","parameters":{"id":296,"nodeType":"ParameterList","parameters":[],"src":"592:2:6"},"src":"563:32:6"},{"errorSelector":"b79e3f3f","id":299,"name":"OwnershipCycle","nameLocation":"602:14:6","nodeType":"ErrorDefinition","parameters":{"id":298,"nodeType":"ParameterList","parameters":[],"src":"616:2:6"},"src":"596:23:6"},{"abstract":false,"baseContracts":[{"baseName":{"id":301,"name":"IERC165","nameLocations":["719:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":278,"src":"719:7:6"},"id":302,"nodeType":"InheritanceSpecifier","src":"719:7:6"},{"baseName":{"id":303,"name":"IERC721Receiver","nameLocations":["756:15:6"],"nodeType":"IdentifierPath","referencedDeclaration":266,"src":"756:15:6"},"id":304,"nodeType":"InheritanceSpecifier","src":"756:15:6"},{"baseName":{"id":305,"name":"IERC1155Receiver","nameLocations":["777:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":54,"src":"777:16:6"},"id":306,"nodeType":"InheritanceSpecifier","src":"777:16:6"}],"canonicalName":"Account","contractDependencies":[],"contractKind":"contract","documentation":{"id":300,"nodeType":"StructuredDocumentation","src":"621:73:6","text":" @title A smart contract account owned by a single ERC721 token"},"fullyImplemented":true,"id":859,"linearizedBaseContracts":[859,54,266,278],"name":"Account","nameLocation":"704:7:6","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":307,"nodeType":"StructuredDocumentation","src":"800:57:6","text":"@dev timestamp at which this account will be unlocked"},"functionSelector":"ce0617ec","id":309,"mutability":"mutable","name":"lockedUntil","nameLocation":"877:11:6","nodeType":"VariableDeclaration","scope":859,"src":"862:26:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":308,"name":"uint256","nodeType":"ElementaryTypeName","src":"862:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"documentation":{"id":310,"nodeType":"StructuredDocumentation","src":"895:56:6","text":"@dev mapping from owner => caller => has permissions"},"functionSelector":"1f9838b5","id":316,"mutability":"mutable","name":"permissions","nameLocation":"1008:11:6","nodeType":"VariableDeclaration","scope":859,"src":"956:63:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":315,"keyType":{"id":311,"name":"address","nodeType":"ElementaryTypeName","src":"964:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"956:44:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":314,"keyType":{"id":312,"name":"address","nodeType":"ElementaryTypeName","src":"983:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"975:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":313,"name":"bool","nodeType":"ElementaryTypeName","src":"994:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"public"},{"anonymous":false,"eventSelector":"2c722487e90aca38ec1b074c3403210bd2bfb769b4da7f12f7bf0b9e37517c18","id":324,"name":"OverrideUpdated","nameLocation":"1032:15:6","nodeType":"EventDefinition","parameters":{"id":323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"indexed":false,"mutability":"mutable","name":"owner","nameLocation":"1065:5:6","nodeType":"VariableDeclaration","scope":324,"src":"1057:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":317,"name":"address","nodeType":"ElementaryTypeName","src":"1057:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":320,"indexed":false,"mutability":"mutable","name":"selector","nameLocation":"1087:8:6","nodeType":"VariableDeclaration","scope":324,"src":"1080:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":319,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1080:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":322,"indexed":false,"mutability":"mutable","name":"implementation","nameLocation":"1113:14:6","nodeType":"VariableDeclaration","scope":324,"src":"1105:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":321,"name":"address","nodeType":"ElementaryTypeName","src":"1105:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1047:86:6"},"src":"1026:108:6"},{"anonymous":false,"eventSelector":"394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5","id":332,"name":"PermissionUpdated","nameLocation":"1146:17:6","nodeType":"EventDefinition","parameters":{"id":331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":326,"indexed":false,"mutability":"mutable","name":"owner","nameLocation":"1172:5:6","nodeType":"VariableDeclaration","scope":332,"src":"1164:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":325,"name":"address","nodeType":"ElementaryTypeName","src":"1164:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":328,"indexed":false,"mutability":"mutable","name":"caller","nameLocation":"1187:6:6","nodeType":"VariableDeclaration","scope":332,"src":"1179:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":327,"name":"address","nodeType":"ElementaryTypeName","src":"1179:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":330,"indexed":false,"mutability":"mutable","name":"hasPermission","nameLocation":"1200:13:6","nodeType":"VariableDeclaration","scope":332,"src":"1195:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":329,"name":"bool","nodeType":"ElementaryTypeName","src":"1195:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1163:51:6"},"src":"1140:75:6"},{"anonymous":false,"eventSelector":"a7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad","id":336,"name":"LockUpdated","nameLocation":"1227:11:6","nodeType":"EventDefinition","parameters":{"id":335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":334,"indexed":false,"mutability":"mutable","name":"lockedUntil","nameLocation":"1247:11:6","nodeType":"VariableDeclaration","scope":336,"src":"1239:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":333,"name":"uint256","nodeType":"ElementaryTypeName","src":"1239:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1238:21:6"},"src":"1221:39:6"},{"body":{"id":349,"nodeType":"Block","src":"1350:77:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":339,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1364:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1368:6:6","memberName":"sender","nodeType":"MemberAccess","src":"1364:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":341,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"1378:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1378:7:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1364:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":347,"nodeType":"IfStatement","src":"1360:49:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":344,"name":"NotAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"1394:13:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1394:15:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":346,"nodeType":"RevertStatement","src":"1387:22:6"}},{"id":348,"nodeType":"PlaceholderStatement","src":"1419:1:6"}]},"documentation":{"id":337,"nodeType":"StructuredDocumentation","src":"1266:58:6","text":"@dev reverts if caller is not the owner of the account"},"id":350,"name":"onlyOwner","nameLocation":"1338:9:6","nodeType":"ModifierDefinition","parameters":{"id":338,"nodeType":"ParameterList","parameters":[],"src":"1347:2:6"},"src":"1329:98:6","virtual":false,"visibility":"internal"},{"body":{"id":363,"nodeType":"Block","src":"1535:81:6","statements":[{"condition":{"id":357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1549:25:6","subExpression":{"arguments":[{"expression":{"id":354,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1563:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1567:6:6","memberName":"sender","nodeType":"MemberAccess","src":"1563:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":353,"name":"isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"1550:12:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1550:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":361,"nodeType":"IfStatement","src":"1545:53:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":358,"name":"NotAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"1583:13:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1583:15:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":360,"nodeType":"RevertStatement","src":"1576:22:6"}},{"id":362,"nodeType":"PlaceholderStatement","src":"1608:1:6"}]},"documentation":{"id":351,"nodeType":"StructuredDocumentation","src":"1433:71:6","text":"@dev reverts if caller is not authorized to execute on this account"},"id":364,"name":"onlyAuthorized","nameLocation":"1518:14:6","nodeType":"ModifierDefinition","parameters":{"id":352,"nodeType":"ParameterList","parameters":[],"src":"1532:2:6"},"src":"1509:107:6","virtual":false,"visibility":"internal"},{"body":{"id":374,"nodeType":"Block","src":"1703:66:6","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":367,"name":"isLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"1717:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":372,"nodeType":"IfStatement","src":"1713:38:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":369,"name":"AccountLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"1736:13:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1736:15:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":371,"nodeType":"RevertStatement","src":"1729:22:6"}},{"id":373,"nodeType":"PlaceholderStatement","src":"1761:1:6"}]},"documentation":{"id":365,"nodeType":"StructuredDocumentation","src":"1622:52:6","text":"@dev reverts if this account is currently locked"},"id":375,"name":"onlyUnlocked","nameLocation":"1688:12:6","nodeType":"ModifierDefinition","parameters":{"id":366,"nodeType":"ParameterList","parameters":[],"src":"1700:2:6"},"src":"1679:90:6","virtual":false,"visibility":"internal"},{"body":{"id":378,"nodeType":"Block","src":"1789:2:6","statements":[]},"id":379,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":376,"nodeType":"ParameterList","parameters":[],"src":"1786:2:6"},"returnParameters":{"id":377,"nodeType":"ParameterList","parameters":[],"src":"1789:0:6"},"scope":859,"src":"1775:16:6","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":383,"nodeType":"Block","src":"1907:7:6","statements":[]},"documentation":{"id":380,"nodeType":"StructuredDocumentation","src":"1797:78:6","text":"@dev allows eth transfers by default, but allows account owner to override"},"id":384,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"1887:2:6"},"returnParameters":{"id":382,"nodeType":"ParameterList","parameters":[],"src":"1907:0:6"},"scope":859,"src":"1880:34:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":409,"nodeType":"Block","src":"2211:101:6","statements":[{"expression":{"arguments":[{"id":404,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"2289:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":405,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":389,"src":"2293:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":406,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":391,"src":"2300:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":403,"name":"_call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"2283:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,uint256,bytes calldata) returns (bytes memory)"}},"id":407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2283:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":402,"id":408,"nodeType":"Return","src":"2276:29:6"}]},"documentation":{"id":385,"nodeType":"StructuredDocumentation","src":"1920:95:6","text":"@dev executes a low-level call against an account if the caller is authorized to make calls"},"functionSelector":"9e5d4c49","id":410,"implemented":true,"kind":"function","modifiers":[{"id":394,"kind":"modifierInvocation","modifierName":{"id":393,"name":"onlyAuthorized","nameLocations":["2136:14:6"],"nodeType":"IdentifierPath","referencedDeclaration":364,"src":"2136:14:6"},"nodeType":"ModifierInvocation","src":"2136:14:6"},{"id":396,"kind":"modifierInvocation","modifierName":{"id":395,"name":"onlyUnlocked","nameLocations":["2151:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":375,"src":"2151:12:6"},"nodeType":"ModifierInvocation","src":"2151:12:6"},{"arguments":[{"id":398,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":391,"src":"2182:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":399,"kind":"modifierInvocation","modifierName":{"id":397,"name":"onlyAllowedMethod","nameLocations":["2164:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":858,"src":"2164:17:6"},"nodeType":"ModifierInvocation","src":"2164:23:6"}],"name":"executeCall","nameLocation":"2029:11:6","nodeType":"FunctionDefinition","parameters":{"id":392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":387,"mutability":"mutable","name":"to","nameLocation":"2058:2:6","nodeType":"VariableDeclaration","scope":410,"src":"2050:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":386,"name":"address","nodeType":"ElementaryTypeName","src":"2050:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":389,"mutability":"mutable","name":"value","nameLocation":"2078:5:6","nodeType":"VariableDeclaration","scope":410,"src":"2070:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":388,"name":"uint256","nodeType":"ElementaryTypeName","src":"2070:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":391,"mutability":"mutable","name":"data","nameLocation":"2108:4:6","nodeType":"VariableDeclaration","scope":410,"src":"2093:19:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":390,"name":"bytes","nodeType":"ElementaryTypeName","src":"2093:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2040:78:6"},"returnParameters":{"id":402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":401,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":410,"src":"2197:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":400,"name":"bytes","nodeType":"ElementaryTypeName","src":"2197:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2196:14:6"},"scope":859,"src":"2020:292:6","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":482,"nodeType":"Block","src":"2501:402:6","statements":[{"assignments":[423],"declarations":[{"constant":false,"id":423,"mutability":"mutable","name":"_owner","nameLocation":"2519:6:6","nodeType":"VariableDeclaration","scope":482,"src":"2511:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":422,"name":"address","nodeType":"ElementaryTypeName","src":"2511:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":426,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":424,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"2528:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2528:7:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2511:24:6"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":427,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2549:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2553:6:6","memberName":"sender","nodeType":"MemberAccess","src":"2549:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":429,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":423,"src":"2563:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2549:20:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":434,"nodeType":"IfStatement","src":"2545:48:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":431,"name":"NotAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"2578:13:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2578:15:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":433,"nodeType":"RevertStatement","src":"2571:22:6"}},{"assignments":[436],"declarations":[{"constant":false,"id":436,"mutability":"mutable","name":"length","nameLocation":"2612:6:6","nodeType":"VariableDeclaration","scope":482,"src":"2604:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":435,"name":"uint256","nodeType":"ElementaryTypeName","src":"2604:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":439,"initialValue":{"expression":{"id":437,"name":"callers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"2621:7:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2629:6:6","memberName":"length","nodeType":"MemberAccess","src":"2621:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2604:31:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":440,"name":"_permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"2650:12:6","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[] calldata"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2663:6:6","memberName":"length","nodeType":"MemberAccess","src":"2650:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":442,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":436,"src":"2673:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2650:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":447,"nodeType":"IfStatement","src":"2646:56:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":444,"name":"InvalidInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":291,"src":"2688:12:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2688:14:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":446,"nodeType":"RevertStatement","src":"2681:21:6"}},{"body":{"id":480,"nodeType":"Block","src":"2750:147:6","statements":[{"expression":{"id":468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":458,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"2764:11:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":463,"indexExpression":{"id":459,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":423,"src":"2776:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2764:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":464,"indexExpression":{"baseExpression":{"id":460,"name":"callers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"2784:7:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":462,"indexExpression":{"id":461,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2792:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2784:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2764:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":465,"name":"_permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"2798:12:6","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[] calldata"}},"id":467,"indexExpression":{"id":466,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2811:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2798:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2764:49:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":469,"nodeType":"ExpressionStatement","src":"2764:49:6"},{"eventCall":{"arguments":[{"id":471,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":423,"src":"2850:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":472,"name":"callers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"2858:7:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":474,"indexExpression":{"id":473,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2866:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2858:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":475,"name":"_permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"2870:12:6","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[] calldata"}},"id":477,"indexExpression":{"id":476,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2883:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2870:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":470,"name":"PermissionUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":332,"src":"2832:17:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2832:54:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":479,"nodeType":"EmitStatement","src":"2827:59:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":452,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2733:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":453,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":436,"src":"2737:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2733:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":481,"initializationExpression":{"assignments":[449],"declarations":[{"constant":false,"id":449,"mutability":"mutable","name":"i","nameLocation":"2726:1:6","nodeType":"VariableDeclaration","scope":481,"src":"2718:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"2718:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":451,"initialValue":{"hexValue":"30","id":450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2730:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2718:13:6"},"loopExpression":{"expression":{"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2745:3:6","subExpression":{"id":455,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"2745:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":457,"nodeType":"ExpressionStatement","src":"2745:3:6"},"nodeType":"ForStatement","src":"2713:184:6"}]},"documentation":{"id":411,"nodeType":"StructuredDocumentation","src":"2318:52:6","text":"@dev grants a given caller execution permissions"},"functionSelector":"039721b1","id":483,"implemented":true,"kind":"function","modifiers":[{"id":420,"kind":"modifierInvocation","modifierName":{"id":419,"name":"onlyUnlocked","nameLocations":["2488:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":375,"src":"2488:12:6"},"nodeType":"ModifierInvocation","src":"2488:12:6"}],"name":"setPermissions","nameLocation":"2384:14:6","nodeType":"FunctionDefinition","parameters":{"id":418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":414,"mutability":"mutable","name":"callers","nameLocation":"2427:7:6","nodeType":"VariableDeclaration","scope":483,"src":"2408:26:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":412,"name":"address","nodeType":"ElementaryTypeName","src":"2408:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":413,"nodeType":"ArrayTypeName","src":"2408:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":417,"mutability":"mutable","name":"_permissions","nameLocation":"2460:12:6","nodeType":"VariableDeclaration","scope":483,"src":"2444:28:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":415,"name":"bool","nodeType":"ElementaryTypeName","src":"2444:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":416,"nodeType":"ArrayTypeName","src":"2444:6:6","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"2398:80:6"},"returnParameters":{"id":421,"nodeType":"ParameterList","parameters":[],"src":"2501:0:6"},"scope":859,"src":"2375:528:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":511,"nodeType":"Block","src":"3034:181:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":493,"name":"_lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"3048:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":494,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3063:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3069:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"3063:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"333635","id":496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3081:8:6","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"365"},"src":"3063:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3048:41:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":502,"nodeType":"IfStatement","src":"3044:86:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":499,"name":"ExceedsMaxLockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3110:18:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3110:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":501,"nodeType":"RevertStatement","src":"3103:27:6"}},{"expression":{"id":505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":503,"name":"lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"3141:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":504,"name":"_lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"3155:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3141:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":506,"nodeType":"ExpressionStatement","src":"3141:26:6"},{"eventCall":{"arguments":[{"id":508,"name":"_lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"3195:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":507,"name":"LockUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":336,"src":"3183:11:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3183:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":510,"nodeType":"EmitStatement","src":"3178:30:6"}]},"documentation":{"id":484,"nodeType":"StructuredDocumentation","src":"2909:52:6","text":"@dev locks the account until a certain timestamp"},"functionSelector":"dd467064","id":512,"implemented":true,"kind":"function","modifiers":[{"id":489,"kind":"modifierInvocation","modifierName":{"id":488,"name":"onlyOwner","nameLocations":["3011:9:6"],"nodeType":"IdentifierPath","referencedDeclaration":350,"src":"3011:9:6"},"nodeType":"ModifierInvocation","src":"3011:9:6"},{"id":491,"kind":"modifierInvocation","modifierName":{"id":490,"name":"onlyUnlocked","nameLocations":["3021:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":375,"src":"3021:12:6"},"nodeType":"ModifierInvocation","src":"3021:12:6"}],"name":"lock","nameLocation":"2975:4:6","nodeType":"FunctionDefinition","parameters":{"id":487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":486,"mutability":"mutable","name":"_lockedUntil","nameLocation":"2988:12:6","nodeType":"VariableDeclaration","scope":512,"src":"2980:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":485,"name":"uint256","nodeType":"ElementaryTypeName","src":"2980:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2979:22:6"},"returnParameters":{"id":492,"nodeType":"ParameterList","parameters":[],"src":"3034:0:6"},"scope":859,"src":"2966:249:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":523,"nodeType":"Block","src":"3341:53:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":518,"name":"lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"3358:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":519,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3372:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3378:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"3372:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3358:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":517,"id":522,"nodeType":"Return","src":"3351:36:6"}]},"documentation":{"id":513,"nodeType":"StructuredDocumentation","src":"3221:68:6","text":"@dev returns the current lock status of the account as a boolean"},"functionSelector":"a4e2d634","id":524,"implemented":true,"kind":"function","modifiers":[],"name":"isLocked","nameLocation":"3303:8:6","nodeType":"FunctionDefinition","parameters":{"id":514,"nodeType":"ParameterList","parameters":[],"src":"3311:2:6"},"returnParameters":{"id":517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":524,"src":"3335:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":515,"name":"bool","nodeType":"ElementaryTypeName","src":"3335:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3334:6:6"},"scope":859,"src":"3294:100:6","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":538,"nodeType":"Block","src":"3697:49:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":534,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1172,"src":"3714:17:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$1172_$","typeString":"type(library ERC6551AccountLib)"}},"id":535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3732:5:6","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1149,"src":"3714:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3714:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"functionReturnParameters":533,"id":537,"nodeType":"Return","src":"3707:32:6"}]},"documentation":{"id":525,"nodeType":"StructuredDocumentation","src":"3400:121:6","text":"@dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\n owns this account."},"functionSelector":"fc0c546a","id":539,"implemented":true,"kind":"function","modifiers":[],"name":"token","nameLocation":"3535:5:6","nodeType":"FunctionDefinition","parameters":{"id":526,"nodeType":"ParameterList","parameters":[],"src":"3540:2:6"},"returnParameters":{"id":533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":528,"mutability":"mutable","name":"chainId","nameLocation":"3611:7:6","nodeType":"VariableDeclaration","scope":539,"src":"3603:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":527,"name":"uint256","nodeType":"ElementaryTypeName","src":"3603:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":530,"mutability":"mutable","name":"tokenContract","nameLocation":"3640:13:6","nodeType":"VariableDeclaration","scope":539,"src":"3632:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":529,"name":"address","nodeType":"ElementaryTypeName","src":"3632:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":532,"mutability":"mutable","name":"tokenId","nameLocation":"3675:7:6","nodeType":"VariableDeclaration","scope":539,"src":"3667:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":531,"name":"uint256","nodeType":"ElementaryTypeName","src":"3667:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3589:103:6"},"scope":859,"src":"3526:220:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":572,"nodeType":"Block","src":"3956:263:6","statements":[{"assignments":[546,548,550],"declarations":[{"constant":false,"id":546,"mutability":"mutable","name":"chainId","nameLocation":"3988:7:6","nodeType":"VariableDeclaration","scope":572,"src":"3980:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":545,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":548,"mutability":"mutable","name":"tokenContract","nameLocation":"4017:13:6","nodeType":"VariableDeclaration","scope":572,"src":"4009:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":547,"name":"address","nodeType":"ElementaryTypeName","src":"4009:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":550,"mutability":"mutable","name":"tokenId","nameLocation":"4052:7:6","nodeType":"VariableDeclaration","scope":572,"src":"4044:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":549,"name":"uint256","nodeType":"ElementaryTypeName","src":"4044:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":554,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":551,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1172,"src":"4072:17:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$1172_$","typeString":"type(library ERC6551AccountLib)"}},"id":552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4090:5:6","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1149,"src":"4072:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4072:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3966:131:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":555,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":546,"src":"4112:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":556,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4123:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4129:7:6","memberName":"chainid","nodeType":"MemberAccess","src":"4123:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4112:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":564,"nodeType":"IfStatement","src":"4108:47:6","trueBody":{"expression":{"arguments":[{"hexValue":"30","id":561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4153: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":560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4145:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":559,"name":"address","nodeType":"ElementaryTypeName","src":"4145:7:6","typeDescriptions":{}}},"id":562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4145:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":544,"id":563,"nodeType":"Return","src":"4138:17:6"}},{"expression":{"arguments":[{"id":569,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"4204:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":566,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":548,"src":"4181:13:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":565,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"4173:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$248_$","typeString":"type(contract IERC721)"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4173:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$248","typeString":"contract IERC721"}},"id":568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4196:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":181,"src":"4173:30:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4173:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":544,"id":571,"nodeType":"Return","src":"4166:46:6"}]},"documentation":{"id":540,"nodeType":"StructuredDocumentation","src":"3752:152:6","text":"@dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\n of the token has full permissions on the account."},"functionSelector":"8da5cb5b","id":573,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"3918:5:6","nodeType":"FunctionDefinition","parameters":{"id":541,"nodeType":"ParameterList","parameters":[],"src":"3923:2:6"},"returnParameters":{"id":544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":573,"src":"3947:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":542,"name":"address","nodeType":"ElementaryTypeName","src":"3947:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3946:9:6"},"scope":859,"src":"3909:310:6","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":614,"nodeType":"Block","src":"4355:415:6","statements":[{"assignments":[null,582,584],"declarations":[null,{"constant":false,"id":582,"mutability":"mutable","name":"tokenContract","nameLocation":"4401:13:6","nodeType":"VariableDeclaration","scope":614,"src":"4393:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":581,"name":"address","nodeType":"ElementaryTypeName","src":"4393:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":584,"mutability":"mutable","name":"tokenId","nameLocation":"4436:7:6","nodeType":"VariableDeclaration","scope":614,"src":"4428:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":583,"name":"uint256","nodeType":"ElementaryTypeName","src":"4428:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":588,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":585,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1172,"src":"4456:17:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$1172_$","typeString":"type(library ERC6551AccountLib)"}},"id":586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4474:5:6","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1149,"src":"4456:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4456:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4365:116:6"},{"assignments":[590],"declarations":[{"constant":false,"id":590,"mutability":"mutable","name":"_owner","nameLocation":"4499:6:6","nodeType":"VariableDeclaration","scope":614,"src":"4491:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":589,"name":"address","nodeType":"ElementaryTypeName","src":"4491:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":597,"initialValue":{"arguments":[{"id":595,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"4539:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":592,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":582,"src":"4516:13:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":591,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"4508:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$248_$","typeString":"type(contract IERC721)"}},"id":593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4508:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$248","typeString":"contract IERC721"}},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4531:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":181,"src":"4508:30:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4508:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4491:56:6"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":598,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"4595:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":599,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"4605:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4595:16:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":603,"nodeType":"IfStatement","src":"4591:33:6","trueBody":{"expression":{"hexValue":"74727565","id":601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4620:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":580,"id":602,"nodeType":"Return","src":"4613:11:6"}},{"condition":{"baseExpression":{"baseExpression":{"id":604,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"4700:11:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":606,"indexExpression":{"id":605,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"4712:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4700:19:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":608,"indexExpression":{"id":607,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"4720:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4700:27:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":611,"nodeType":"IfStatement","src":"4696:44:6","trueBody":{"expression":{"hexValue":"74727565","id":609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4736:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":580,"id":610,"nodeType":"Return","src":"4729:11:6"}},{"expression":{"hexValue":"66616c7365","id":612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4758:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":580,"id":613,"nodeType":"Return","src":"4751:12:6"}]},"documentation":{"id":574,"nodeType":"StructuredDocumentation","src":"4225:60:6","text":"@dev Returns the authorization status for a given caller"},"functionSelector":"fe9fbb80","id":615,"implemented":true,"kind":"function","modifiers":[],"name":"isAuthorized","nameLocation":"4299:12:6","nodeType":"FunctionDefinition","parameters":{"id":577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":576,"mutability":"mutable","name":"caller","nameLocation":"4320:6:6","nodeType":"VariableDeclaration","scope":615,"src":"4312:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":575,"name":"address","nodeType":"ElementaryTypeName","src":"4312:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4311:16:6"},"returnParameters":{"id":580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":615,"src":"4349:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":578,"name":"bool","nodeType":"ElementaryTypeName","src":"4349:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4348:6:6"},"scope":859,"src":"4290:480:6","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[277],"body":{"id":653,"nodeType":"Block","src":"5027:273:6","statements":[{"assignments":[625],"declarations":[{"constant":false,"id":625,"mutability":"mutable","name":"defaultSupport","nameLocation":"5042:14:6","nodeType":"VariableDeclaration","scope":653,"src":"5037:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":624,"name":"bool","nodeType":"ElementaryTypeName","src":"5037:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":646,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":626,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"5059:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":628,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5079:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$278_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$278_$","typeString":"type(contract IERC165)"}],"id":627,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5074:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5074:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$278","typeString":"type(contract IERC165)"}},"id":630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5088:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"5074:25:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5059:40:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":632,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"5115:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":634,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"5135:16:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$54_$","typeString":"type(contract IERC1155Receiver)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$54_$","typeString":"type(contract IERC1155Receiver)"}],"id":633,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5130:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5130:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1155Receiver_$54","typeString":"type(contract IERC1155Receiver)"}},"id":636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5153:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"5130:34:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5115:49:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5059:105:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":639,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"5180:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":641,"name":"IERC6551Account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"5200:15:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$1046_$","typeString":"type(contract IERC6551Account)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$1046_$","typeString":"type(contract IERC6551Account)"}],"id":640,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5195:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5195:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC6551Account_$1046","typeString":"type(contract IERC6551Account)"}},"id":643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5217:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"5195:33:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5180:48:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5059:169:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5037:191:6"},{"condition":{"id":647,"name":"defaultSupport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"5243:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":650,"nodeType":"IfStatement","src":"5239:31:6","trueBody":{"expression":{"hexValue":"74727565","id":648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5266:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":623,"id":649,"nodeType":"Return","src":"5259:11:6"}},{"expression":{"hexValue":"66616c7365","id":651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5288:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":623,"id":652,"nodeType":"Return","src":"5281:12:6"}]},"documentation":{"id":616,"nodeType":"StructuredDocumentation","src":"4776:126:6","text":"@dev Returns true if a given interfaceId is supported by this account. This method can be\n extended by an override."},"functionSelector":"01ffc9a7","id":654,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"4916:17:6","nodeType":"FunctionDefinition","overrides":{"id":620,"nodeType":"OverrideSpecifier","overrides":[],"src":"4991:8:6"},"parameters":{"id":619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":618,"mutability":"mutable","name":"interfaceId","nameLocation":"4941:11:6","nodeType":"VariableDeclaration","scope":654,"src":"4934:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":617,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4934:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4933:20:6"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":654,"src":"5017:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":621,"name":"bool","nodeType":"ElementaryTypeName","src":"5017:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5016:6:6"},"scope":859,"src":"4907:393:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[265],"body":{"id":700,"nodeType":"Block","src":"5604:367:6","statements":[{"assignments":[670,672,674],"declarations":[{"constant":false,"id":670,"mutability":"mutable","name":"chainId","nameLocation":"5636:7:6","nodeType":"VariableDeclaration","scope":700,"src":"5628:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"5628:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":672,"mutability":"mutable","name":"tokenContract","nameLocation":"5665:13:6","nodeType":"VariableDeclaration","scope":700,"src":"5657:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":671,"name":"address","nodeType":"ElementaryTypeName","src":"5657:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":674,"mutability":"mutable","name":"tokenId","nameLocation":"5700:7:6","nodeType":"VariableDeclaration","scope":700,"src":"5692:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":673,"name":"uint256","nodeType":"ElementaryTypeName","src":"5692:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":678,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":675,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1172,"src":"5720:17:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$1172_$","typeString":"type(library ERC6551AccountLib)"}},"id":676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5738:5:6","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":1149,"src":"5720:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5720:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5614:131:6"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":679,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"5773:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":680,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5784:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5790:7:6","memberName":"chainid","nodeType":"MemberAccess","src":"5784:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5773:24:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":683,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"5813:13:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":684,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5830:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5834:6:6","memberName":"sender","nodeType":"MemberAccess","src":"5830:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5813:27:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5773:67:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":688,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"5856:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":689,"name":"receivedTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":661,"src":"5867:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5856:26:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5773:109:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":695,"nodeType":"IfStatement","src":"5756:160:6","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":692,"name":"OwnershipCycle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":299,"src":"5900:14:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5900:16:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":694,"nodeType":"RevertStatement","src":"5893:23:6"}},{"expression":{"expression":{"expression":{"id":696,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5934:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Account_$859","typeString":"contract Account"}},"id":697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5939:16:6","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":701,"src":"5934:21:6","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) view external returns (bytes4)"}},"id":698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5956:8:6","memberName":"selector","nodeType":"MemberAccess","src":"5934:30:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":668,"id":699,"nodeType":"Return","src":"5927:37:6"}]},"documentation":{"id":655,"nodeType":"StructuredDocumentation","src":"5306:134:6","text":"@dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\n This function can be overriden."},"functionSelector":"150b7a02","id":701,"implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"5454:16:6","nodeType":"FunctionDefinition","overrides":{"id":665,"nodeType":"OverrideSpecifier","overrides":[],"src":"5578:8:6"},"parameters":{"id":664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":657,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":701,"src":"5480:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":656,"name":"address","nodeType":"ElementaryTypeName","src":"5480:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":659,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":701,"src":"5497:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":658,"name":"address","nodeType":"ElementaryTypeName","src":"5497:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":661,"mutability":"mutable","name":"receivedTokenId","nameLocation":"5522:15:6","nodeType":"VariableDeclaration","scope":701,"src":"5514:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":660,"name":"uint256","nodeType":"ElementaryTypeName","src":"5514:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":663,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":701,"src":"5547:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":662,"name":"bytes","nodeType":"ElementaryTypeName","src":"5547:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5470:95:6"},"returnParameters":{"id":668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":667,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":701,"src":"5596:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":666,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5596:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5595:8:6"},"scope":859,"src":"5445:526:6","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[35],"body":{"id":722,"nodeType":"Block","src":"6222:55:6","statements":[{"expression":{"expression":{"expression":{"id":718,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6239:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Account_$859","typeString":"contract Account"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6244:17:6","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":723,"src":"6239:22:6","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,uint256,bytes memory) pure external returns (bytes4)"}},"id":720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6262:8:6","memberName":"selector","nodeType":"MemberAccess","src":"6239:31:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":717,"id":721,"nodeType":"Return","src":"6232:38:6"}]},"documentation":{"id":702,"nodeType":"StructuredDocumentation","src":"5977:79:6","text":"@dev Allows ERC-1155 tokens to be received. This function can be overriden."},"functionSelector":"f23a6e61","id":723,"implemented":true,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"6070:17:6","nodeType":"FunctionDefinition","overrides":{"id":714,"nodeType":"OverrideSpecifier","overrides":[],"src":"6196:8:6"},"parameters":{"id":713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":704,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":723,"src":"6097:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":703,"name":"address","nodeType":"ElementaryTypeName","src":"6097:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":706,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":723,"src":"6114:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":705,"name":"address","nodeType":"ElementaryTypeName","src":"6114:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":723,"src":"6131:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":707,"name":"uint256","nodeType":"ElementaryTypeName","src":"6131:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":723,"src":"6148:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":709,"name":"uint256","nodeType":"ElementaryTypeName","src":"6148:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":723,"src":"6165:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":711,"name":"bytes","nodeType":"ElementaryTypeName","src":"6165:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6087:96:6"},"returnParameters":{"id":717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":723,"src":"6214:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":715,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6214:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6213:8:6"},"scope":859,"src":"6061:216:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[53],"body":{"id":746,"nodeType":"Block","src":"6558:60:6","statements":[{"expression":{"expression":{"expression":{"id":742,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6575:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Account_$859","typeString":"contract Account"}},"id":743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6580:22:6","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":747,"src":"6575:27:6","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory) pure external returns (bytes4)"}},"id":744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6603:8:6","memberName":"selector","nodeType":"MemberAccess","src":"6575:36:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":741,"id":745,"nodeType":"Return","src":"6568:43:6"}]},"documentation":{"id":724,"nodeType":"StructuredDocumentation","src":"6283:86:6","text":"@dev Allows ERC-1155 token batches to be received. This function can be overriden."},"functionSelector":"bc197c81","id":747,"implemented":true,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"6383:22:6","nodeType":"FunctionDefinition","overrides":{"id":738,"nodeType":"OverrideSpecifier","overrides":[],"src":"6532:8:6"},"parameters":{"id":737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":726,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":747,"src":"6415:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"6415:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":728,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":747,"src":"6432:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":727,"name":"address","nodeType":"ElementaryTypeName","src":"6432:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":747,"src":"6449:16:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":729,"name":"uint256","nodeType":"ElementaryTypeName","src":"6449:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":730,"nodeType":"ArrayTypeName","src":"6449:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":747,"src":"6475:16:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":732,"name":"uint256","nodeType":"ElementaryTypeName","src":"6475:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":733,"nodeType":"ArrayTypeName","src":"6475:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":747,"src":"6501:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":735,"name":"bytes","nodeType":"ElementaryTypeName","src":"6501:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6405:114:6"},"returnParameters":{"id":741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":740,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":747,"src":"6550:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":739,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6550:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6549:8:6"},"scope":859,"src":"6374:244:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":778,"nodeType":"Block","src":"6795:213:6","statements":[{"assignments":[760],"declarations":[{"constant":false,"id":760,"mutability":"mutable","name":"success","nameLocation":"6810:7:6","nodeType":"VariableDeclaration","scope":778,"src":"6805:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":759,"name":"bool","nodeType":"ElementaryTypeName","src":"6805:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":761,"nodeType":"VariableDeclarationStatement","src":"6805:12:6"},{"expression":{"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":762,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"6828:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":763,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"6837:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":764,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6827:17:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":769,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"6869: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":765,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":750,"src":"6847:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6850:4:6","memberName":"call","nodeType":"MemberAccess","src":"6847: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":768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":767,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"6862:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"6847: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":770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:27:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"6827:47:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":772,"nodeType":"ExpressionStatement","src":"6827:47:6"},{"condition":{"id":774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6889:8:6","subExpression":{"id":773,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"6890:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":777,"nodeType":"IfStatement","src":"6885:117:6","trueBody":{"id":776,"nodeType":"Block","src":"6899:103:6","statements":[{"AST":{"nodeType":"YulBlock","src":"6922:70:6","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"6951:6:6"},{"kind":"number","nodeType":"YulLiteral","src":"6959:2:6","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6947:3:6"},"nodeType":"YulFunctionCall","src":"6947:15:6"},{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"6970:6:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6964:5:6"},"nodeType":"YulFunctionCall","src":"6964:13:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6940:6:6"},"nodeType":"YulFunctionCall","src":"6940:38:6"},"nodeType":"YulExpressionStatement","src":"6940:38:6"}]},"evmVersion":"london","externalReferences":[{"declaration":757,"isOffset":false,"isSlot":false,"src":"6951:6:6","valueSize":1},{"declaration":757,"isOffset":false,"isSlot":false,"src":"6970:6:6","valueSize":1}],"id":775,"nodeType":"InlineAssembly","src":"6913:79:6"}]}}]},"documentation":{"id":748,"nodeType":"StructuredDocumentation","src":"6624:34:6","text":"@dev Executes a low-level call"},"id":779,"implemented":true,"kind":"function","modifiers":[],"name":"_call","nameLocation":"6672:5:6","nodeType":"FunctionDefinition","parameters":{"id":755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":750,"mutability":"mutable","name":"to","nameLocation":"6695:2:6","nodeType":"VariableDeclaration","scope":779,"src":"6687:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":749,"name":"address","nodeType":"ElementaryTypeName","src":"6687:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":752,"mutability":"mutable","name":"value","nameLocation":"6715:5:6","nodeType":"VariableDeclaration","scope":779,"src":"6707:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":751,"name":"uint256","nodeType":"ElementaryTypeName","src":"6707:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":754,"mutability":"mutable","name":"data","nameLocation":"6745:4:6","nodeType":"VariableDeclaration","scope":779,"src":"6730:19:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":753,"name":"bytes","nodeType":"ElementaryTypeName","src":"6730:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6677:78:6"},"returnParameters":{"id":758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":757,"mutability":"mutable","name":"result","nameLocation":"6787:6:6","nodeType":"VariableDeclaration","scope":779,"src":"6774:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":756,"name":"bytes","nodeType":"ElementaryTypeName","src":"6774:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6773:21:6"},"scope":859,"src":"6663:345:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":806,"nodeType":"Block","src":"7186:205:6","statements":[{"assignments":[790],"declarations":[{"constant":false,"id":790,"mutability":"mutable","name":"success","nameLocation":"7201:7:6","nodeType":"VariableDeclaration","scope":806,"src":"7196:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":789,"name":"bool","nodeType":"ElementaryTypeName","src":"7196:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":791,"nodeType":"VariableDeclarationStatement","src":"7196:12:6"},{"expression":{"id":799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":792,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"7219:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":793,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"7228:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":794,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7218:17:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":797,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"7252:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":795,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":782,"src":"7238:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7241:10:6","memberName":"staticcall","nodeType":"MemberAccess","src":"7238:13:6","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":798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7238:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"7218:39:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":800,"nodeType":"ExpressionStatement","src":"7218:39:6"},{"condition":{"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7272:8:6","subExpression":{"id":801,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"7273:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":805,"nodeType":"IfStatement","src":"7268:117:6","trueBody":{"id":804,"nodeType":"Block","src":"7282:103:6","statements":[{"AST":{"nodeType":"YulBlock","src":"7305:70:6","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"7334:6:6"},{"kind":"number","nodeType":"YulLiteral","src":"7342:2:6","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7330:3:6"},"nodeType":"YulFunctionCall","src":"7330:15:6"},{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"7353:6:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7347:5:6"},"nodeType":"YulFunctionCall","src":"7347:13:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7323:6:6"},"nodeType":"YulFunctionCall","src":"7323:38:6"},"nodeType":"YulExpressionStatement","src":"7323:38:6"}]},"evmVersion":"london","externalReferences":[{"declaration":787,"isOffset":false,"isSlot":false,"src":"7334:6:6","valueSize":1},{"declaration":787,"isOffset":false,"isSlot":false,"src":"7353:6:6","valueSize":1}],"id":803,"nodeType":"InlineAssembly","src":"7296:79:6"}]}}]},"documentation":{"id":780,"nodeType":"StructuredDocumentation","src":"7014:41:6","text":"@dev Executes a low-level static call"},"id":807,"implemented":true,"kind":"function","modifiers":[],"name":"_callStatic","nameLocation":"7069:11:6","nodeType":"FunctionDefinition","parameters":{"id":785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":782,"mutability":"mutable","name":"to","nameLocation":"7089:2:6","nodeType":"VariableDeclaration","scope":807,"src":"7081:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":781,"name":"address","nodeType":"ElementaryTypeName","src":"7081:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":784,"mutability":"mutable","name":"data","nameLocation":"7108:4:6","nodeType":"VariableDeclaration","scope":807,"src":"7093:19:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":783,"name":"bytes","nodeType":"ElementaryTypeName","src":"7093:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7080:33:6"},"returnParameters":{"id":788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":787,"mutability":"mutable","name":"result","nameLocation":"7174:6:6","nodeType":"VariableDeclaration","scope":807,"src":"7161:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":786,"name":"bytes","nodeType":"ElementaryTypeName","src":"7161:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7160:21:6"},"scope":859,"src":"7060:331:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":829,"nodeType":"Block","src":"7466:190:6","statements":[{"assignments":[815],"declarations":[{"constant":false,"id":815,"mutability":"mutable","name":"signature","nameLocation":"7483:9:6","nodeType":"VariableDeclaration","scope":829,"src":"7476:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":814,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7476:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":819,"initialValue":{"arguments":[{"id":817,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":809,"src":"7512:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":816,"name":"parseFirst4Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"7495:16:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7495:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"7476:42:6"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":820,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"7566:9:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783039356561376233","id":821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7579:10:6","typeDescriptions":{"typeIdentifier":"t_rational_157198259_by_1","typeString":"int_const 157198259"},"value":"0x095ea7b3"},"src":"7566:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":826,"nodeType":"IfStatement","src":"7562:66:6","trueBody":{"id":825,"nodeType":"Block","src":"7591:37:6","statements":[{"expression":{"hexValue":"66616c7365","id":823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7612:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":813,"id":824,"nodeType":"Return","src":"7605:12:6"}]}},{"expression":{"hexValue":"74727565","id":827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7645:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":813,"id":828,"nodeType":"Return","src":"7638:11:6"}]},"id":830,"implemented":true,"kind":"function","modifiers":[],"name":"allowedMethod","nameLocation":"7406:13:6","nodeType":"FunctionDefinition","parameters":{"id":810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":809,"mutability":"mutable","name":"_data","nameLocation":"7435:5:6","nodeType":"VariableDeclaration","scope":830,"src":"7420:20:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":808,"name":"bytes","nodeType":"ElementaryTypeName","src":"7420:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7419:22:6"},"returnParameters":{"id":813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":830,"src":"7460:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":811,"name":"bool","nodeType":"ElementaryTypeName","src":"7460:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7459:6:6"},"scope":859,"src":"7397:259:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":844,"nodeType":"Block","src":"7739:41:6","statements":[{"expression":{"arguments":[{"baseExpression":{"id":839,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":832,"src":"7763:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"34","id":840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7770:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"7763:9:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7756:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":837,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7756:6:6","typeDescriptions":{}}},"id":842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7756:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":836,"id":843,"nodeType":"Return","src":"7749:24:6"}]},"functionSelector":"d0ad2535","id":845,"implemented":true,"kind":"function","modifiers":[],"name":"parseFirst4Bytes","nameLocation":"7671:16:6","nodeType":"FunctionDefinition","parameters":{"id":833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":832,"mutability":"mutable","name":"_data","nameLocation":"7703:5:6","nodeType":"VariableDeclaration","scope":845,"src":"7688:20:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":831,"name":"bytes","nodeType":"ElementaryTypeName","src":"7688:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7687:22:6"},"returnParameters":{"id":836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":845,"src":"7731:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":834,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7731:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7730:8:6"},"scope":859,"src":"7662:118:6","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":857,"nodeType":"Block","src":"7835:83:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":851,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"7867:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":850,"name":"allowedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":830,"src":"7853:13:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$returns$_t_bool_$","typeString":"function (bytes calldata) returns (bool)"}},"id":852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7853:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6574686f6420616c6c206e6f7420616c6c6f776564","id":853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7875:24:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483","typeString":"literal_string \"Method all not allowed\""},"value":"Method all not allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483","typeString":"literal_string \"Method all not allowed\""}],"id":849,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7845:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7845:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":855,"nodeType":"ExpressionStatement","src":"7845:55:6"},{"id":856,"nodeType":"PlaceholderStatement","src":"7910:1:6"}]},"id":858,"name":"onlyAllowedMethod","nameLocation":"7795:17:6","nodeType":"ModifierDefinition","parameters":{"id":848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":847,"mutability":"mutable","name":"_data","nameLocation":"7828:5:6","nodeType":"VariableDeclaration","scope":858,"src":"7813:20:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"7813:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7812:22:6"},"src":"7786:132:6","virtual":false,"visibility":"internal"}],"scope":860,"src":"695:7225:6","usedErrors":[289,291,293,295,299]}],"src":"39:7882:6"},"id":6},"contracts/AccountRegistryBridge.sol":{"ast":{"absolutePath":"contracts/AccountRegistryBridge.sol","exportedSymbols":{"AccountRegistryBridge":[914],"IERC165":[278],"IERC6551Registry":[1117]},"id":915,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":861,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"33:24:7"},{"absolutePath":"contracts/interfaces/IERC6551Registry.sol","file":"./interfaces/IERC6551Registry.sol","id":862,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":915,"sourceUnit":1118,"src":"59:43:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":863,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":915,"sourceUnit":279,"src":"103:65:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"AccountRegistryBridge","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":914,"linearizedBaseContracts":[914],"name":"AccountRegistryBridge","nameLocation":"179:21:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"06433b1b","id":866,"mutability":"constant","name":"REGISTRY","nameLocation":"231:8:7","nodeType":"VariableDeclaration","scope":914,"src":"207:78:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":864,"name":"address","nodeType":"ElementaryTypeName","src":"207:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307830323130316466423737464445303236343134383237466463363034646441463232344630393231","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"243:42:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x02101dfB77FDE026414827Fdc604ddAF224F0921"},"visibility":"public"},{"constant":true,"functionSelector":"3a4741bd","id":869,"mutability":"constant","name":"IMPLEMENTATION","nameLocation":"315:14:7","nodeType":"VariableDeclaration","scope":914,"src":"291:83:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":867,"name":"address","nodeType":"ElementaryTypeName","src":"291:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307832443235363032353531343837433366333335346444383044373644353433383341323433333538","id":868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"332:42:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x2D25602551487C3f3354dD80D76D54383A243358"},"visibility":"public"},{"body":{"id":890,"nodeType":"Block","src":"495:195:7","statements":[{"expression":{"arguments":[{"id":882,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":869,"src":"566:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"","id":883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"594:2:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},{"expression":{"id":884,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"610:5:7","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"616:7:7","memberName":"chainid","nodeType":"MemberAccess","src":"610:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":886,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"637:15:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":887,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"666:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":879,"name":"REGISTRY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"529:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":878,"name":"IERC6551Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"512:16:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Registry_$1117_$","typeString":"type(contract IERC6551Registry)"}},"id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"512:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC6551Registry_$1117","typeString":"contract IERC6551Registry"}},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"539:13:7","memberName":"createAccount","nodeType":"MemberAccess","referencedDeclaration":1100,"src":"512:40:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_address_$","typeString":"function (address,bytes32,uint256,address,uint256) external returns (address)"}},"id":888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"512:171:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":877,"id":889,"nodeType":"Return","src":"505:178:7"}]},"functionSelector":"5fbfb9cf","id":891,"implemented":true,"kind":"function","modifiers":[],"name":"createAccount","nameLocation":"390:13:7","nodeType":"FunctionDefinition","parameters":{"id":874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":871,"mutability":"mutable","name":"contractAddress","nameLocation":"421:15:7","nodeType":"VariableDeclaration","scope":891,"src":"413:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":870,"name":"address","nodeType":"ElementaryTypeName","src":"413:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":873,"mutability":"mutable","name":"tokenId","nameLocation":"454:7:7","nodeType":"VariableDeclaration","scope":891,"src":"446:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":872,"name":"uint256","nodeType":"ElementaryTypeName","src":"446:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"403:64:7"},"returnParameters":{"id":877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":891,"src":"486:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":875,"name":"address","nodeType":"ElementaryTypeName","src":"486:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"485:9:7"},"scope":914,"src":"381:309:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":912,"nodeType":"Block","src":"809:189:7","statements":[{"expression":{"arguments":[{"id":904,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":869,"src":"874:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"902:2:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},{"expression":{"id":906,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"918:5:7","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"924:7:7","memberName":"chainid","nodeType":"MemberAccess","src":"918:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":908,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"945:15:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":909,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":895,"src":"974:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":901,"name":"REGISTRY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"843:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":900,"name":"IERC6551Registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"826:16:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Registry_$1117_$","typeString":"type(contract IERC6551Registry)"}},"id":902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"826:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC6551Registry_$1117","typeString":"contract IERC6551Registry"}},"id":903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"853:7:7","memberName":"account","nodeType":"MemberAccess","referencedDeclaration":1116,"src":"826:34:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_address_$","typeString":"function (address,bytes32,uint256,address,uint256) view external returns (address)"}},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"826:165:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":899,"id":911,"nodeType":"Return","src":"819:172:7"}]},"functionSelector":"192df655","id":913,"implemented":true,"kind":"function","modifiers":[],"name":"account","nameLocation":"705:7:7","nodeType":"FunctionDefinition","parameters":{"id":896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":893,"mutability":"mutable","name":"contractAddress","nameLocation":"730:15:7","nodeType":"VariableDeclaration","scope":913,"src":"722:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":892,"name":"address","nodeType":"ElementaryTypeName","src":"722:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":895,"mutability":"mutable","name":"tokenId","nameLocation":"763:7:7","nodeType":"VariableDeclaration","scope":913,"src":"755:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":894,"name":"uint256","nodeType":"ElementaryTypeName","src":"755:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"712:64:7"},"returnParameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":913,"src":"800:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":897,"name":"address","nodeType":"ElementaryTypeName","src":"800:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"799:9:7"},"scope":914,"src":"696:302:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":915,"src":"170:830:7","usedErrors":[]}],"src":"33:967:7"},"id":7},"contracts/ChargedParticlesAccount.sol":{"ast":{"absolutePath":"contracts/ChargedParticlesAccount.sol","exportedSymbols":{"Account":[859],"AccountLocked":[293],"ChargedParticlesAccount":[1008],"ERC6551AccountLib":[1172],"ExceedsMaxLockTime":[295],"IERC1155Receiver":[54],"IERC1271":[13],"IERC165":[278],"IERC20":[132],"IERC6551Account":[1046],"IERC721":[248],"IERC721Receiver":[266],"InvalidInput":[291],"NotAuthorized":[289],"OwnershipCycle":[299],"UntrustedImplementation":[297]},"id":1009,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":916,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:8"},{"absolutePath":"contracts/Account.sol","file":"./Account.sol","id":917,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1009,"sourceUnit":860,"src":"65:23:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":918,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1009,"sourceUnit":249,"src":"89:58:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":919,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1009,"sourceUnit":133,"src":"148:56:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":920,"name":"Account","nameLocations":["242:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":859,"src":"242:7:8"},"id":921,"nodeType":"InheritanceSpecifier","src":"242:7:8"}],"canonicalName":"ChargedParticlesAccount","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":1008,"linearizedBaseContracts":[1008,859,54,266,278],"name":"ChargedParticlesAccount","nameLocation":"215:23:8","nodeType":"ContractDefinition","nodes":[{"body":{"id":943,"nodeType":"Block","src":"386:171:8","statements":[{"expression":{"arguments":[{"expression":{"id":934,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"479:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"483:6:8","memberName":"sender","nodeType":"MemberAccess","src":"479:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":938,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"511:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$1008","typeString":"contract ChargedParticlesAccount"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$1008","typeString":"contract ChargedParticlesAccount"}],"id":937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"503:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"503:7:8","typeDescriptions":{}}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"503:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":940,"name":"nftTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"530:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":931,"name":"nftTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"432:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":930,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"424:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$248_$","typeString":"type(contract IERC721)"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"424:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$248","typeString":"contract IERC721"}},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"449:16:8","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":203,"src":"424:41:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"424:126:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":942,"nodeType":"ExpressionStatement","src":"424:126:8"}]},"functionSelector":"a737a299","id":944,"implemented":true,"kind":"function","modifiers":[],"name":"covalentBond","nameLocation":"265:12:8","nodeType":"FunctionDefinition","parameters":{"id":928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":923,"mutability":"mutable","name":"nftTokenAddress","nameLocation":"295:15:8","nodeType":"VariableDeclaration","scope":944,"src":"287:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":922,"name":"address","nodeType":"ElementaryTypeName","src":"287:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":925,"mutability":"mutable","name":"nftTokenId","nameLocation":"328:10:8","nodeType":"VariableDeclaration","scope":944,"src":"320:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":924,"name":"uint256","nodeType":"ElementaryTypeName","src":"320:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":927,"mutability":"mutable","name":"nftTokenAmount","nameLocation":"356:14:8","nodeType":"VariableDeclaration","scope":944,"src":"348:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":926,"name":"uint256","nodeType":"ElementaryTypeName","src":"348:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"277:99:8"},"returnParameters":{"id":929,"nodeType":"ParameterList","parameters":[],"src":"386:0:8"},"scope":1008,"src":"256:301:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":967,"nodeType":"Block","src":"724:95:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":961,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"784:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$1008","typeString":"contract ChargedParticlesAccount"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$1008","typeString":"contract ChargedParticlesAccount"}],"id":960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"776:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":959,"name":"address","nodeType":"ElementaryTypeName","src":"776:7:8","typeDescriptions":{}}},"id":962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"776:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":963,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":946,"src":"791:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":964,"name":"nftTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"801:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":956,"name":"nftTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":948,"src":"742:15:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":955,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":248,"src":"734:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$248_$","typeString":"type(contract IERC721)"}},"id":957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"734:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$248","typeString":"contract IERC721"}},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"759:16:8","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":203,"src":"734:41:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"734:78:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":966,"nodeType":"ExpressionStatement","src":"734:78:8"}]},"functionSelector":"6b764e1b","id":968,"implemented":true,"kind":"function","modifiers":[],"name":"breakCovalentBond","nameLocation":"572:17:8","nodeType":"FunctionDefinition","parameters":{"id":953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":946,"mutability":"mutable","name":"receiver","nameLocation":"607:8:8","nodeType":"VariableDeclaration","scope":968,"src":"599:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":945,"name":"address","nodeType":"ElementaryTypeName","src":"599:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":948,"mutability":"mutable","name":"nftTokenAddress","nameLocation":"633:15:8","nodeType":"VariableDeclaration","scope":968,"src":"625:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":947,"name":"address","nodeType":"ElementaryTypeName","src":"625:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":950,"mutability":"mutable","name":"nftTokenId","nameLocation":"666:10:8","nodeType":"VariableDeclaration","scope":968,"src":"658:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":949,"name":"uint256","nodeType":"ElementaryTypeName","src":"658:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":952,"mutability":"mutable","name":"nftTokenAmount","nameLocation":"694:14:8","nodeType":"VariableDeclaration","scope":968,"src":"686:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"589:125:8"},"returnParameters":{"id":954,"nodeType":"ParameterList","parameters":[],"src":"724:0:8"},"scope":1008,"src":"563:256:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":988,"nodeType":"Block","src":"923:88:8","statements":[{"expression":{"arguments":[{"expression":{"id":979,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"965:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"969:6:8","memberName":"sender","nodeType":"MemberAccess","src":"965:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":983,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"985:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$1008","typeString":"contract ChargedParticlesAccount"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$1008","typeString":"contract ChargedParticlesAccount"}],"id":982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"977:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":981,"name":"address","nodeType":"ElementaryTypeName","src":"977:7:8","typeDescriptions":{}}},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"977:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":985,"name":"assetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":972,"src":"992:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":976,"name":"assetToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":970,"src":"940:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":975,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"933:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$132_$","typeString":"type(contract IERC20)"}},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$132","typeString":"contract IERC20"}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"952:12:8","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":131,"src":"933:31:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:71:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":987,"nodeType":"ExpressionStatement","src":"933:71:8"}]},"functionSelector":"a65e78f1","id":989,"implemented":true,"kind":"function","modifiers":[],"name":"energizeParticle","nameLocation":"834:16:8","nodeType":"FunctionDefinition","parameters":{"id":973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":970,"mutability":"mutable","name":"assetToken","nameLocation":"868:10:8","nodeType":"VariableDeclaration","scope":989,"src":"860:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":969,"name":"address","nodeType":"ElementaryTypeName","src":"860:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":972,"mutability":"mutable","name":"assetAmount","nameLocation":"896:11:8","nodeType":"VariableDeclaration","scope":989,"src":"888:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":971,"name":"uint256","nodeType":"ElementaryTypeName","src":"888:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"850:63:8"},"returnParameters":{"id":974,"nodeType":"ParameterList","parameters":[],"src":"923:0:8"},"scope":1008,"src":"825:186:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1006,"nodeType":"Block","src":"1134:65:8","statements":[{"expression":{"arguments":[{"id":1002,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"1172:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1003,"name":"assetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":995,"src":"1182:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":999,"name":"assetToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":993,"src":"1151:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":998,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"1144:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$132_$","typeString":"type(contract IERC20)"}},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1144:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$132","typeString":"contract IERC20"}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1163:8:8","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":99,"src":"1144:27:8","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1144:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1005,"nodeType":"ExpressionStatement","src":"1144:50:8"}]},"functionSelector":"ca1cc220","id":1007,"implemented":true,"kind":"function","modifiers":[],"name":"dischargeParticle","nameLocation":"1026:17:8","nodeType":"FunctionDefinition","parameters":{"id":996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":991,"mutability":"mutable","name":"receiver","nameLocation":"1059:8:8","nodeType":"VariableDeclaration","scope":1007,"src":"1051:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":990,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":993,"mutability":"mutable","name":"assetToken","nameLocation":"1083:10:8","nodeType":"VariableDeclaration","scope":1007,"src":"1075:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":992,"name":"address","nodeType":"ElementaryTypeName","src":"1075:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":995,"mutability":"mutable","name":"assetAmount","nameLocation":"1109:11:8","nodeType":"VariableDeclaration","scope":1007,"src":"1101:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":994,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1043:81:8"},"returnParameters":{"id":997,"nodeType":"ParameterList","parameters":[],"src":"1134:0:8"},"scope":1008,"src":"1017:182:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1009,"src":"206:995:8","usedErrors":[289,291,293,295,299]}],"src":"39:1163:8"},"id":8},"contracts/MinimalAccount.sol":{"ast":{"absolutePath":"contracts/MinimalAccount.sol","exportedSymbols":{"MinimalAccount":[1012]},"id":1013,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1010,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:9"},{"abstract":false,"baseContracts":[],"canonicalName":"MinimalAccount","contractDependencies":[],"contractKind":"contract","documentation":{"id":1011,"nodeType":"StructuredDocumentation","src":"65:73:9","text":" @title A smart contract account owned by a single ERC721 token"},"fullyImplemented":true,"id":1012,"linearizedBaseContracts":[1012],"name":"MinimalAccount","nameLocation":"148:14:9","nodeType":"ContractDefinition","nodes":[],"scope":1013,"src":"139:28:9","usedErrors":[]}],"src":"39:129:9"},"id":9},"contracts/interfaces/IERC6551Account.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Account.sol","exportedSymbols":{"IERC6551Account":[1046]},"id":1047,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1014,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:10"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Account","contractDependencies":[],"contractKind":"interface","documentation":{"id":1015,"nodeType":"StructuredDocumentation","src":"65:67:10","text":"@dev the ERC-165 identifier for this interface is `0x6faff5f1`"},"fullyImplemented":false,"id":1046,"linearizedBaseContracts":[1046],"name":"IERC6551Account","nameLocation":"142:15:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1016,"nodeType":"StructuredDocumentation","src":"164:236:10","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":1019,"implemented":false,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1017,"nodeType":"ParameterList","parameters":[],"src":"412:2:10"},"returnParameters":{"id":1018,"nodeType":"ParameterList","parameters":[],"src":"431:0:10"},"scope":1046,"src":"405:27:10","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":1020,"nodeType":"StructuredDocumentation","src":"438:387:10","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 chain 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":1029,"implemented":false,"kind":"function","modifiers":[],"name":"token","nameLocation":"839:5:10","nodeType":"FunctionDefinition","parameters":{"id":1021,"nodeType":"ParameterList","parameters":[],"src":"844:2:10"},"returnParameters":{"id":1028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1023,"mutability":"mutable","name":"chainId","nameLocation":"902:7:10","nodeType":"VariableDeclaration","scope":1029,"src":"894:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1022,"name":"uint256","nodeType":"ElementaryTypeName","src":"894:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1025,"mutability":"mutable","name":"tokenContract","nameLocation":"919:13:10","nodeType":"VariableDeclaration","scope":1029,"src":"911:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1024,"name":"address","nodeType":"ElementaryTypeName","src":"911:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1027,"mutability":"mutable","name":"tokenId","nameLocation":"942:7:10","nodeType":"VariableDeclaration","scope":1029,"src":"934:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1026,"name":"uint256","nodeType":"ElementaryTypeName","src":"934:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"893:57:10"},"scope":1046,"src":"830:121:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1030,"nodeType":"StructuredDocumentation","src":"957:148:10","text":" @dev Returns a value that SHOULD be modified each time the account changes state.\n @return The current account state"},"functionSelector":"c19d93fb","id":1035,"implemented":false,"kind":"function","modifiers":[],"name":"state","nameLocation":"1119:5:10","nodeType":"FunctionDefinition","parameters":{"id":1031,"nodeType":"ParameterList","parameters":[],"src":"1124:2:10"},"returnParameters":{"id":1034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1033,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1035,"src":"1150:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1032,"name":"uint256","nodeType":"ElementaryTypeName","src":"1150:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1149:9:10"},"scope":1046,"src":"1110:49:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1036,"nodeType":"StructuredDocumentation","src":"1165:773:10","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":1045,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSigner","nameLocation":"1952:13:10","nodeType":"FunctionDefinition","parameters":{"id":1041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1038,"mutability":"mutable","name":"signer","nameLocation":"1974:6:10","nodeType":"VariableDeclaration","scope":1045,"src":"1966:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1037,"name":"address","nodeType":"ElementaryTypeName","src":"1966:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1040,"mutability":"mutable","name":"context","nameLocation":"1997:7:10","nodeType":"VariableDeclaration","scope":1045,"src":"1982:22:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1039,"name":"bytes","nodeType":"ElementaryTypeName","src":"1982:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1965:40:10"},"returnParameters":{"id":1044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1043,"mutability":"mutable","name":"magicValue","nameLocation":"2060:10:10","nodeType":"VariableDeclaration","scope":1045,"src":"2053:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1042,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2053:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2052:19:10"},"scope":1046,"src":"1943:129:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1047,"src":"132:1942:10","usedErrors":[]}],"src":"39:2037:10"},"id":10},"contracts/interfaces/IERC6551Executable.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Executable.sol","exportedSymbols":{"IERC6551Executable":[1064]},"id":1065,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1048,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Executable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1049,"nodeType":"StructuredDocumentation","src":"65:67:11","text":"@dev the ERC-165 identifier for this interface is `0x51945447`"},"fullyImplemented":false,"id":1064,"linearizedBaseContracts":[1064],"name":"IERC6551Executable","nameLocation":"142:18:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1050,"nodeType":"StructuredDocumentation","src":"167:815:11","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":1063,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"996:7:11","nodeType":"FunctionDefinition","parameters":{"id":1059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1052,"mutability":"mutable","name":"to","nameLocation":"1012:2:11","nodeType":"VariableDeclaration","scope":1063,"src":"1004:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1051,"name":"address","nodeType":"ElementaryTypeName","src":"1004:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1054,"mutability":"mutable","name":"value","nameLocation":"1024:5:11","nodeType":"VariableDeclaration","scope":1063,"src":"1016:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1053,"name":"uint256","nodeType":"ElementaryTypeName","src":"1016:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1056,"mutability":"mutable","name":"data","nameLocation":"1046:4:11","nodeType":"VariableDeclaration","scope":1063,"src":"1031:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1055,"name":"bytes","nodeType":"ElementaryTypeName","src":"1031:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1058,"mutability":"mutable","name":"operation","nameLocation":"1058:9:11","nodeType":"VariableDeclaration","scope":1063,"src":"1052:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1057,"name":"uint8","nodeType":"ElementaryTypeName","src":"1052:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1003:65:11"},"returnParameters":{"id":1062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1063,"src":"1119:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1060,"name":"bytes","nodeType":"ElementaryTypeName","src":"1119:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1118:14:11"},"scope":1064,"src":"987:146:11","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":1065,"src":"132:1003:11","usedErrors":[]}],"src":"39:1097:11"},"id":11},"contracts/interfaces/IERC6551Registry.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Registry.sol","exportedSymbols":{"IERC6551Registry":[1117]},"id":1118,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1066,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Registry","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1117,"linearizedBaseContracts":[1117],"name":"IERC6551Registry","nameLocation":"74:16:12","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1067,"nodeType":"StructuredDocumentation","src":"97:112:12","text":" @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation."},"eventSelector":"79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722","id":1081,"name":"ERC6551AccountCreated","nameLocation":"220:21:12","nodeType":"EventDefinition","parameters":{"id":1080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1069,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"259:7:12","nodeType":"VariableDeclaration","scope":1081,"src":"251:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1068,"name":"address","nodeType":"ElementaryTypeName","src":"251:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1071,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"292:14:12","nodeType":"VariableDeclaration","scope":1081,"src":"276:30:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1070,"name":"address","nodeType":"ElementaryTypeName","src":"276:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1073,"indexed":false,"mutability":"mutable","name":"salt","nameLocation":"324:4:12","nodeType":"VariableDeclaration","scope":1081,"src":"316:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1072,"name":"bytes32","nodeType":"ElementaryTypeName","src":"316:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1075,"indexed":false,"mutability":"mutable","name":"chainId","nameLocation":"346:7:12","nodeType":"VariableDeclaration","scope":1081,"src":"338:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1074,"name":"uint256","nodeType":"ElementaryTypeName","src":"338:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1077,"indexed":true,"mutability":"mutable","name":"tokenContract","nameLocation":"379:13:12","nodeType":"VariableDeclaration","scope":1081,"src":"363:29:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1076,"name":"address","nodeType":"ElementaryTypeName","src":"363:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1079,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"418:7:12","nodeType":"VariableDeclaration","scope":1081,"src":"402:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1078,"name":"uint256","nodeType":"ElementaryTypeName","src":"402:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"241:190:12"},"src":"214:218:12"},{"documentation":{"id":1082,"nodeType":"StructuredDocumentation","src":"438:113:12","text":" @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails."},"errorSelector":"20188a59","id":1084,"name":"AccountCreationFailed","nameLocation":"562:21:12","nodeType":"ErrorDefinition","parameters":{"id":1083,"nodeType":"ParameterList","parameters":[],"src":"583:2:12"},"src":"556:30:12"},{"documentation":{"id":1085,"nodeType":"StructuredDocumentation","src":"592:301:12","text":" @dev Creates a token bound account for a non-fungible token.\n If account has already been created, returns the account address without calling create2.\n Emits ERC6551AccountCreated event.\n @return account The address of the token bound account"},"functionSelector":"8a54c52f","id":1100,"implemented":false,"kind":"function","modifiers":[],"name":"createAccount","nameLocation":"907:13:12","nodeType":"FunctionDefinition","parameters":{"id":1096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1087,"mutability":"mutable","name":"implementation","nameLocation":"938:14:12","nodeType":"VariableDeclaration","scope":1100,"src":"930:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1086,"name":"address","nodeType":"ElementaryTypeName","src":"930:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1089,"mutability":"mutable","name":"salt","nameLocation":"970:4:12","nodeType":"VariableDeclaration","scope":1100,"src":"962:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1088,"name":"bytes32","nodeType":"ElementaryTypeName","src":"962:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1091,"mutability":"mutable","name":"chainId","nameLocation":"992:7:12","nodeType":"VariableDeclaration","scope":1100,"src":"984:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1090,"name":"uint256","nodeType":"ElementaryTypeName","src":"984:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1093,"mutability":"mutable","name":"tokenContract","nameLocation":"1017:13:12","nodeType":"VariableDeclaration","scope":1100,"src":"1009:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1092,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1095,"mutability":"mutable","name":"tokenId","nameLocation":"1048:7:12","nodeType":"VariableDeclaration","scope":1100,"src":"1040:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1094,"name":"uint256","nodeType":"ElementaryTypeName","src":"1040:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"920:141:12"},"returnParameters":{"id":1099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1098,"mutability":"mutable","name":"account","nameLocation":"1088:7:12","nodeType":"VariableDeclaration","scope":1100,"src":"1080:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1097,"name":"address","nodeType":"ElementaryTypeName","src":"1080:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1079:17:12"},"scope":1117,"src":"898:199:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1101,"nodeType":"StructuredDocumentation","src":"1103:167:12","text":" @dev Returns the computed token bound account address for a non-fungible token.\n @return account The address of the token bound account"},"functionSelector":"246a0021","id":1116,"implemented":false,"kind":"function","modifiers":[],"name":"account","nameLocation":"1284:7:12","nodeType":"FunctionDefinition","parameters":{"id":1112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1103,"mutability":"mutable","name":"implementation","nameLocation":"1309:14:12","nodeType":"VariableDeclaration","scope":1116,"src":"1301:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1102,"name":"address","nodeType":"ElementaryTypeName","src":"1301:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1105,"mutability":"mutable","name":"salt","nameLocation":"1341:4:12","nodeType":"VariableDeclaration","scope":1116,"src":"1333:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1104,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1333:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1107,"mutability":"mutable","name":"chainId","nameLocation":"1363:7:12","nodeType":"VariableDeclaration","scope":1116,"src":"1355:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1355:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1109,"mutability":"mutable","name":"tokenContract","nameLocation":"1388:13:12","nodeType":"VariableDeclaration","scope":1116,"src":"1380:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1108,"name":"address","nodeType":"ElementaryTypeName","src":"1380:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1111,"mutability":"mutable","name":"tokenId","nameLocation":"1419:7:12","nodeType":"VariableDeclaration","scope":1116,"src":"1411:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1110,"name":"uint256","nodeType":"ElementaryTypeName","src":"1411:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1291:141:12"},"returnParameters":{"id":1115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1114,"mutability":"mutable","name":"account","nameLocation":"1464:7:12","nodeType":"VariableDeclaration","scope":1116,"src":"1456:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1113,"name":"address","nodeType":"ElementaryTypeName","src":"1456:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1455:17:12"},"scope":1117,"src":"1275:198:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1118,"src":"64:1411:12","usedErrors":[1084]}],"src":"39:1437:12"},"id":12},"contracts/lib/ERC6551AccountLib.sol":{"ast":{"absolutePath":"contracts/lib/ERC6551AccountLib.sol","exportedSymbols":{"ERC6551AccountLib":[1172]},"id":1173,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1119,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:13"},{"abstract":false,"baseContracts":[],"canonicalName":"ERC6551AccountLib","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1172,"linearizedBaseContracts":[1172],"name":"ERC6551AccountLib","nameLocation":"66:17:13","nodeType":"ContractDefinition","nodes":[{"body":{"id":1148,"nodeType":"Block","src":"231:265:13","statements":[{"assignments":[1129],"declarations":[{"constant":false,"id":1129,"mutability":"mutable","name":"footer","nameLocation":"254:6:13","nodeType":"VariableDeclaration","scope":1148,"src":"241:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1128,"name":"bytes","nodeType":"ElementaryTypeName","src":"241:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1134,"initialValue":{"arguments":[{"hexValue":"30783630","id":1132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"273:4:13","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"}],"id":1131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"263:9:13","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1130,"name":"bytes","nodeType":"ElementaryTypeName","src":"267:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"263:15:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"241:37:13"},{"AST":{"nodeType":"YulBlock","src":"298:127:13","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"address","nodeType":"YulIdentifier","src":"374:7:13"},"nodeType":"YulFunctionCall","src":"374:9:13"},{"arguments":[{"name":"footer","nodeType":"YulIdentifier","src":"389:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"397:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"385:3:13"},"nodeType":"YulFunctionCall","src":"385:17:13"},{"kind":"number","nodeType":"YulLiteral","src":"404:4:13","type":"","value":"0x4d"},{"kind":"number","nodeType":"YulLiteral","src":"410:4:13","type":"","value":"0xad"}],"functionName":{"name":"extcodecopy","nodeType":"YulIdentifier","src":"362:11:13"},"nodeType":"YulFunctionCall","src":"362:53:13"},"nodeType":"YulExpressionStatement","src":"362:53:13"}]},"evmVersion":"london","externalReferences":[{"declaration":1129,"isOffset":false,"isSlot":false,"src":"389:6:13","valueSize":1}],"id":1135,"nodeType":"InlineAssembly","src":"289:136:13"},{"expression":{"arguments":[{"id":1138,"name":"footer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1129,"src":"453:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"462:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1139,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:13","typeDescriptions":{}}},{"id":1142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"471:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1141,"name":"address","nodeType":"ElementaryTypeName","src":"471:7:13","typeDescriptions":{}}},{"id":1144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"480:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1143,"name":"uint256","nodeType":"ElementaryTypeName","src":"480:7:13","typeDescriptions":{}}}],"id":1145,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"461:27:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(address),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(address),type(uint256))"}],"expression":{"id":1136,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"442:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"446:6:13","memberName":"decode","nodeType":"MemberAccess","src":"442:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"442:47:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_payable_$_t_uint256_$","typeString":"tuple(uint256,address payable,uint256)"}},"functionReturnParameters":1127,"id":1147,"nodeType":"Return","src":"435:54:13"}]},"id":1149,"implemented":true,"kind":"function","modifiers":[],"name":"token","nameLocation":"99:5:13","nodeType":"FunctionDefinition","parameters":{"id":1120,"nodeType":"ParameterList","parameters":[],"src":"104:2:13"},"returnParameters":{"id":1127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1149,"src":"167:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1121,"name":"uint256","nodeType":"ElementaryTypeName","src":"167:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1149,"src":"188:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1123,"name":"address","nodeType":"ElementaryTypeName","src":"188:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1149,"src":"209:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1125,"name":"uint256","nodeType":"ElementaryTypeName","src":"209:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"153:73:13"},"scope":1172,"src":"90:406:13","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1170,"nodeType":"Block","src":"550:253:13","statements":[{"assignments":[1155],"declarations":[{"constant":false,"id":1155,"mutability":"mutable","name":"footer","nameLocation":"573:6:13","nodeType":"VariableDeclaration","scope":1170,"src":"560:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1154,"name":"bytes","nodeType":"ElementaryTypeName","src":"560:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1160,"initialValue":{"arguments":[{"hexValue":"30783230","id":1158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"592:4:13","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"id":1157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"582:9:13","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1156,"name":"bytes","nodeType":"ElementaryTypeName","src":"586:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"582:15:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"560:37:13"},{"AST":{"nodeType":"YulBlock","src":"617:133:13","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"address","nodeType":"YulIdentifier","src":"699:7:13"},"nodeType":"YulFunctionCall","src":"699:9:13"},{"arguments":[{"name":"footer","nodeType":"YulIdentifier","src":"714:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"722:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"710:3:13"},"nodeType":"YulFunctionCall","src":"710:17:13"},{"kind":"number","nodeType":"YulLiteral","src":"729:4:13","type":"","value":"0x2d"},{"kind":"number","nodeType":"YulLiteral","src":"735:4:13","type":"","value":"0x4d"}],"functionName":{"name":"extcodecopy","nodeType":"YulIdentifier","src":"687:11:13"},"nodeType":"YulFunctionCall","src":"687:53:13"},"nodeType":"YulExpressionStatement","src":"687:53:13"}]},"evmVersion":"london","externalReferences":[{"declaration":1155,"isOffset":false,"isSlot":false,"src":"714:6:13","valueSize":1}],"id":1161,"nodeType":"InlineAssembly","src":"608:142:13"},{"expression":{"arguments":[{"id":1164,"name":"footer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1155,"src":"778:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"787:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1165,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:13","typeDescriptions":{}}}],"id":1167,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"786:9:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":1162,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"767:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"771:6:13","memberName":"decode","nodeType":"MemberAccess","src":"767:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"767:29:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1153,"id":1169,"nodeType":"Return","src":"760:36:13"}]},"id":1171,"implemented":true,"kind":"function","modifiers":[],"name":"salt","nameLocation":"511:4:13","nodeType":"FunctionDefinition","parameters":{"id":1150,"nodeType":"ParameterList","parameters":[],"src":"515:2:13"},"returnParameters":{"id":1153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1171,"src":"541:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1151,"name":"uint256","nodeType":"ElementaryTypeName","src":"541:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"540:9:13"},"scope":1172,"src":"502:301:13","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1173,"src":"58:747:13","usedErrors":[]}],"src":"32:774:13"},"id":13}},"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 ERC1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. _Available since v4.1._","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 _data"}}},"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.17+commit.8df45f5f\"},\"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 ERC1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. _Available since v4.1._\",\"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 _data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"london\",\"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 v4.4.1 (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n *\\n * _Available since v4.1._\\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 _data\\n */\\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"IERC1155Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"_Available since v3.1._","kind":"dev","methods":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","ids":"An array containing ids of each token being transferred (order and length must match values array)","operator":"The address which initiated the batch transfer (i.e. msg.sender)","values":"An array containing amounts of each token being transferred (order and length must match ids array)"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"}},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","id":"The ID of the token being transferred","operator":"The address which initiated the transfer (i.e. msg.sender)","value":"The amount of tokens being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"}},"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[EIP 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":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"_Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"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[EIP 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/token/ERC1155/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. 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":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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.17+commit.8df45f5f\"},\"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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\":\"london\",\"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 v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC721 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":"ERC721 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.17+commit.8df45f5f\"},\"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 ERC721 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\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"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 v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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.17+commit.8df45f5f\"},\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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\":\"london\",\"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 v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/Account.sol":{"Account":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccountLocked","type":"error"},{"inputs":[],"name":"ExceedsMaxLockTime","type":"error"},{"inputs":[],"name":"InvalidInput","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"OwnershipCycle","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockedUntil","type":"uint256"}],"name":"LockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"OverrideUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"hasPermission","type":"bool"}],"name":"PermissionUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockedUntil","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"receivedTokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"parseFirst4Bytes","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"permissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"callers","type":"address[]"},{"internalType":"bool[]","name":"_permissions","type":"bool[]"}],"name":"setPermissions","outputs":[],"stateMutability":"nonpayable","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":{"kind":"dev","methods":{"executeCall(address,uint256,bytes)":{"details":"executes a low-level call against an account if the caller is authorized to make calls"},"isAuthorized(address)":{"details":"Returns the authorization status for a given caller"},"isLocked()":{"details":"returns the current lock status of the account as a boolean"},"lock(uint256)":{"details":"locks the account until a certain timestamp"},"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Allows ERC-1155 token batches to be received. This function can be overriden."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Allows ERC-1155 tokens to be received. This function can be overriden."},"onERC721Received(address,address,uint256,bytes)":{"details":"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden."},"owner()":{"details":"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account."},"setPermissions(address[],bool[])":{"details":"grants a given caller execution permissions"},"supportsInterface(bytes4)":{"details":"Returns true if a given interfaceId is supported by this account. This method can be extended by an override."},"token()":{"details":"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account."}},"stateVariables":{"lockedUntil":{"details":"timestamp at which this account will be unlocked"},"permissions":{"details":"mapping from owner => caller => has permissions"}},"title":"A smart contract account owned by a single ERC721 token","version":1},"evm":{"bytecode":{"functionDebugData":{"@_379":{"entryPoint":null,"id":379,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506110b7806100206000396000f3fe6080604052600436106100e15760003560e01c8063bc197c811161007f578063dd46706411610059578063dd4670641461028c578063f23a6e61146102ac578063fc0c546a146102d8578063fe9fbb801461031057600080fd5b8063bc197c811461021c578063ce0617ec14610248578063d0ad25351461026c57600080fd5b80631f9838b5116100bb5780631f9838b51461017d5780638da5cb5b146101b85780639e5d4c49146101e5578063a4e2d6341461020557600080fd5b806301ffc9a7146100ed578063039721b114610122578063150b7a021461014457600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b5061010d610108366004610a06565b610330565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004610a83565b610397565b005b34801561015057600080fd5b5061016461015f366004610bbe565b610560565b6040516001600160e01b03199091168152602001610119565b34801561018957600080fd5b5061010d610198366004610c2a565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101c457600080fd5b506101cd6105c8565b6040516001600160a01b039091168152602001610119565b6101f86101f3366004610ca5565b61065e565b6040516101199190610cf5565b34801561021157600080fd5b50600054421061010d565b34801561022857600080fd5b50610164610237366004610db8565b63bc197c8160e01b95945050505050565b34801561025457600080fd5b5061025e60005481565b604051908152602001610119565b34801561027857600080fd5b50610164610287366004610e66565b610715565b34801561029857600080fd5b506101426102a7366004610ea8565b610736565b3480156102b857600080fd5b506101646102c7366004610ec1565b63f23a6e6160e01b95945050505050565b3480156102e457600080fd5b506102ed6107fb565b604080519384526001600160a01b03909216602084015290820152606001610119565b34801561031c57600080fd5b5061010d61032b366004610f2a565b610813565b6000806001600160e01b031983166301ffc9a760e01b148061036257506001600160e01b03198316630271189760e51b145b8061037d57506001600160e01b03198316636faff5f160e01b145b9050801561038e5750600192915050565b50600092915050565b6000544210156103ba57604051636315bfbb60e01b815260040160405180910390fd5b60006103c46105c8565b9050336001600160a01b038216146103ef5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104105760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156105575784848281811061042d5761042d610f47565b90506020020160208101906104429190610f5d565b6001600160a01b03841660009081526001602052604081209089898581811061046d5761046d610f47565b90506020020160208101906104829190610f2a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106104de576104de610f47565b90506020020160208101906104f39190610f2a565b87878581811061050557610505610f47565b905060200201602081019061051a9190610f5d565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a18061054f81610f95565b915050610413565b50505050505050565b60008060008061056e6108fc565b925092509250468314801561058b57506001600160a01b03821633145b801561059657508581145b156105b45760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806105d66108fc565b9250925092504683146105ed576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106569190610fae565b935050505090565b606061066933610813565b6106865760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156106a957604051636315bfbb60e01b815260040160405180910390fd5b82826106b5828261094f565b6106fe5760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b61070a8787878761098a565b979650505050505050565b60006107246004828486610fcb565b61072d91610ff5565b90505b92915050565b61073e6105c8565b6001600160a01b0316336001600160a01b03161461076f5760405163ea8e4eb560e01b815260040160405180910390fd5b60005442101561079257604051636315bfbb60e01b815260040160405180910390fd5b6107a0426301e13380611025565b8111156107c0576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b60008060006108086108fc565b925092509250909192565b60008060006108206108fc565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa15801561086e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108929190610fae565b9050806001600160a01b0316856001600160a01b0316036108b857506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff16156108f157506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c808060200190518101906109439190611038565b93509350935050909192565b60008061095c8484610715565b90506001600160e01b0319811663095ea7b360e01b03610980576000915050610730565b5060019392505050565b60606000856001600160a01b03168585856040516109a9929190611071565b60006040518083038185875af1925050503d80600081146109e6576040519150601f19603f3d011682016040523d82523d6000602084013e6109eb565b606091505b5092509050806109fd57815160208301fd5b50949350505050565b600060208284031215610a1857600080fd5b81356001600160e01b031981168114610a3057600080fd5b9392505050565b60008083601f840112610a4957600080fd5b50813567ffffffffffffffff811115610a6157600080fd5b6020830191508360208260051b8501011115610a7c57600080fd5b9250929050565b60008060008060408587031215610a9957600080fd5b843567ffffffffffffffff80821115610ab157600080fd5b610abd88838901610a37565b90965094506020870135915080821115610ad657600080fd5b50610ae387828801610a37565b95989497509550505050565b6001600160a01b0381168114610b0457600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b4657610b46610b07565b604052919050565b600082601f830112610b5f57600080fd5b813567ffffffffffffffff811115610b7957610b79610b07565b610b8c601f8201601f1916602001610b1d565b818152846020838601011115610ba157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610bd457600080fd5b8435610bdf81610aef565b93506020850135610bef81610aef565b925060408501359150606085013567ffffffffffffffff811115610c1257600080fd5b610c1e87828801610b4e565b91505092959194509250565b60008060408385031215610c3d57600080fd5b8235610c4881610aef565b91506020830135610c5881610aef565b809150509250929050565b60008083601f840112610c7557600080fd5b50813567ffffffffffffffff811115610c8d57600080fd5b602083019150836020828501011115610a7c57600080fd5b60008060008060608587031215610cbb57600080fd5b8435610cc681610aef565b935060208501359250604085013567ffffffffffffffff811115610ce957600080fd5b610ae387828801610c63565b600060208083528351808285015260005b81811015610d2257858101830151858201604001528201610d06565b506000604082860101526040601f19601f8301168501019250505092915050565b600082601f830112610d5457600080fd5b8135602067ffffffffffffffff821115610d7057610d70610b07565b8160051b610d7f828201610b1d565b9283528481018201928281019087851115610d9957600080fd5b83870192505b8483101561070a57823582529183019190830190610d9f565b600080600080600060a08688031215610dd057600080fd5b8535610ddb81610aef565b94506020860135610deb81610aef565b9350604086013567ffffffffffffffff80821115610e0857600080fd5b610e1489838a01610d43565b94506060880135915080821115610e2a57600080fd5b610e3689838a01610d43565b93506080880135915080821115610e4c57600080fd5b50610e5988828901610b4e565b9150509295509295909350565b60008060208385031215610e7957600080fd5b823567ffffffffffffffff811115610e9057600080fd5b610e9c85828601610c63565b90969095509350505050565b600060208284031215610eba57600080fd5b5035919050565b600080600080600060a08688031215610ed957600080fd5b8535610ee481610aef565b94506020860135610ef481610aef565b93506040860135925060608601359150608086013567ffffffffffffffff811115610f1e57600080fd5b610e5988828901610b4e565b600060208284031215610f3c57600080fd5b8135610a3081610aef565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610f6f57600080fd5b81358015158114610a3057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610fa757610fa7610f7f565b5060010190565b600060208284031215610fc057600080fd5b8151610a3081610aef565b60008085851115610fdb57600080fd5b83861115610fe857600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561101d5780818660040360031b1b83161692505b505092915050565b8082018082111561073057610730610f7f565b60008060006060848603121561104d57600080fd5b83519250602084015161105f81610aef565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220dc2989fc2d7d69dcec23fe8447d3a09339d83c7966a9a187c18bb2f80312146164736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B7 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE1 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBC197C81 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xDD467064 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xFE9FBB80 EQ PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1F9838B5 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x9E5D4C49 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xE8 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xA06 JUMP JUMPDEST PUSH2 0x330 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 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0xA83 JUMP JUMPDEST PUSH2 0x397 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xBBE JUMP JUMPDEST PUSH2 0x560 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xC2A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x1F8 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA5 JUMP JUMPDEST PUSH2 0x65E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xCF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x10D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x237 CALLDATASIZE PUSH1 0x4 PUSH2 0xDB8 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25E PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x715 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA8 JUMP JUMPDEST PUSH2 0x736 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xEC1 JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2ED PUSH2 0x7FB JUMP JUMPDEST 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 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0xF2A JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x362 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x37D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x38E JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x3BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C4 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x3EF JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x410 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x557 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x42D JUMPI PUSH2 0x42D PUSH2 0xF47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x442 SWAP2 SWAP1 PUSH2 0xF5D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x46D JUMPI PUSH2 0x46D PUSH2 0xF47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x482 SWAP2 SWAP1 PUSH2 0xF2A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x4DE JUMPI PUSH2 0x4DE PUSH2 0xF47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4F3 SWAP2 SWAP1 PUSH2 0xF2A JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x505 JUMPI PUSH2 0x505 PUSH2 0xF47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x51A SWAP2 SWAP1 PUSH2 0xF5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x54F DUP2 PUSH2 0xF95 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x413 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x56E PUSH2 0x8FC JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x58B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x596 JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x5D6 PUSH2 0x8FC JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x5ED JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x632 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 0x656 SWAP2 SWAP1 PUSH2 0xFAE JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x669 CALLER PUSH2 0x813 JUMP JUMPDEST PUSH2 0x686 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 PUSH2 0x6B5 DUP3 DUP3 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x6FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x70A DUP8 DUP8 DUP8 DUP8 PUSH2 0x98A JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x724 PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0xFCB JUMP JUMPDEST PUSH2 0x72D SWAP2 PUSH2 0xFF5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x73E PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x76F JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x792 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7A0 TIMESTAMP PUSH4 0x1E13380 PUSH2 0x1025 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x808 PUSH2 0x8FC JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x820 PUSH2 0x8FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0x86E 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 0x892 SWAP2 SWAP1 PUSH2 0xFAE JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x8B8 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x8F1 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x943 SWAP2 SWAP1 PUSH2 0x1038 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x95C DUP5 DUP5 PUSH2 0x715 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0x980 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x730 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9A9 SWAP3 SWAP2 SWAP1 PUSH2 0x1071 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 0x9E6 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 0x9EB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x9FD JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xA30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xA7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xAB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xABD DUP9 DUP4 DUP10 ADD PUSH2 0xA37 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE3 DUP8 DUP3 DUP9 ADD PUSH2 0xA37 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB46 JUMPI PUSH2 0xB46 PUSH2 0xB07 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB79 JUMPI PUSH2 0xB79 PUSH2 0xB07 JUMP JUMPDEST PUSH2 0xB8C PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xB1D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xBDF DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xBEF DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1E DUP8 DUP3 DUP9 ADD PUSH2 0xB4E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xC48 DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xC58 DUP2 PUSH2 0xAEF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xC75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xA7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xCC6 DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAE3 DUP8 DUP3 DUP9 ADD PUSH2 0xC63 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD22 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xD06 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xD70 JUMPI PUSH2 0xD70 PUSH2 0xB07 JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0xD7F DUP3 DUP3 ADD PUSH2 0xB1D JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x70A JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0xD9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xDD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xDDB DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xDEB DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE14 DUP10 DUP4 DUP11 ADD PUSH2 0xD43 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE36 DUP10 DUP4 DUP11 ADD PUSH2 0xD43 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE59 DUP9 DUP3 DUP10 ADD PUSH2 0xB4E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE9C DUP6 DUP3 DUP7 ADD PUSH2 0xC63 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xED9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xEE4 DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xEF4 DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE59 DUP9 DUP3 DUP10 ADD PUSH2 0xB4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA30 DUP2 PUSH2 0xAEF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xA30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0xFA7 JUMPI PUSH2 0xFA7 PUSH2 0xF7F JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA30 DUP2 PUSH2 0xAEF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0xFDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0xFE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x101D JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x730 JUMPI PUSH2 0x730 PUSH2 0xF7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x104D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x105F DUP2 PUSH2 0xAEF JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0x29 DUP10 0xFC 0x2D PUSH30 0x69DCEC23FE8447D3A09339D83C7966A9A187C18BB2F80312146164736F6C PUSH4 0x43000811 STOP CALLER ","sourceMap":"695:7225:6:-:0;;;1775:16;;;;;;;;;;695:7225;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_384":{"entryPoint":null,"id":384,"parameterSlots":0,"returnSlots":0},"@_call_779":{"entryPoint":2442,"id":779,"parameterSlots":4,"returnSlots":1},"@allowedMethod_830":{"entryPoint":2383,"id":830,"parameterSlots":2,"returnSlots":1},"@executeCall_410":{"entryPoint":1630,"id":410,"parameterSlots":4,"returnSlots":1},"@isAuthorized_615":{"entryPoint":2067,"id":615,"parameterSlots":1,"returnSlots":1},"@isLocked_524":{"entryPoint":null,"id":524,"parameterSlots":0,"returnSlots":1},"@lock_512":{"entryPoint":1846,"id":512,"parameterSlots":1,"returnSlots":0},"@lockedUntil_309":{"entryPoint":null,"id":309,"parameterSlots":0,"returnSlots":0},"@onERC1155BatchReceived_747":{"entryPoint":null,"id":747,"parameterSlots":5,"returnSlots":1},"@onERC1155Received_723":{"entryPoint":null,"id":723,"parameterSlots":5,"returnSlots":1},"@onERC721Received_701":{"entryPoint":1376,"id":701,"parameterSlots":4,"returnSlots":1},"@owner_573":{"entryPoint":1480,"id":573,"parameterSlots":0,"returnSlots":1},"@parseFirst4Bytes_845":{"entryPoint":1813,"id":845,"parameterSlots":2,"returnSlots":1},"@permissions_316":{"entryPoint":null,"id":316,"parameterSlots":0,"returnSlots":0},"@setPermissions_483":{"entryPoint":919,"id":483,"parameterSlots":4,"returnSlots":0},"@supportsInterface_654":{"entryPoint":816,"id":654,"parameterSlots":1,"returnSlots":1},"@token_1149":{"entryPoint":2300,"id":1149,"parameterSlots":0,"returnSlots":3},"@token_539":{"entryPoint":2043,"id":539,"parameterSlots":0,"returnSlots":3},"abi_decode_array_address_dyn_calldata":{"entryPoint":2615,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":3395,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":2894,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3171,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3882,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4014,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3114,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr":{"entryPoint":3512,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":3006,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr":{"entryPoint":3777,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr":{"entryPoint":3237,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr":{"entryPoint":2691,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":3933,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":2566,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":3686,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":3752,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory":{"entryPoint":4152,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4209,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"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":3317,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__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},"allocate_memory":{"entryPoint":2845,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":4043,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":4133,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":4085,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":3989,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3967,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3911,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2823,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":2799,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:12772:14","statements":[{"nodeType":"YulBlock","src":"6:3:14","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:14","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:14"},"nodeType":"YulFunctionCall","src":"131:12:14"},"nodeType":"YulExpressionStatement","src":"131:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:14"},"nodeType":"YulFunctionCall","src":"100:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:14"},"nodeType":"YulFunctionCall","src":"96:32:14"},"nodeType":"YulIf","src":"93:52:14"},{"nodeType":"YulVariableDeclaration","src":"154:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:14"},"nodeType":"YulFunctionCall","src":"167:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:14"},"nodeType":"YulFunctionCall","src":"256:12:14"},"nodeType":"YulExpressionStatement","src":"256:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:14"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:14","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:14"},"nodeType":"YulFunctionCall","src":"230:20:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:14"},"nodeType":"YulFunctionCall","src":"219:32:14"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:14"},"nodeType":"YulFunctionCall","src":"209:43:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:14"},"nodeType":"YulFunctionCall","src":"202:51:14"},"nodeType":"YulIf","src":"199:71:14"},{"nodeType":"YulAssignment","src":"279:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:14"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:14","type":""}],"src":"14:286:14"},{"body":{"nodeType":"YulBlock","src":"400:92:14","statements":[{"nodeType":"YulAssignment","src":"410:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:14"},"nodeType":"YulFunctionCall","src":"418:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:14"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:14"},"nodeType":"YulFunctionCall","src":"470:14:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:14"},"nodeType":"YulFunctionCall","src":"463:22:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:14"},"nodeType":"YulFunctionCall","src":"445:41:14"},"nodeType":"YulExpressionStatement","src":"445:41:14"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:14","type":""}],"src":"305:187:14"},{"body":{"nodeType":"YulBlock","src":"581:283:14","statements":[{"body":{"nodeType":"YulBlock","src":"630:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"639:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"642:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"632:6:14"},"nodeType":"YulFunctionCall","src":"632:12:14"},"nodeType":"YulExpressionStatement","src":"632:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"609:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"617:4:14","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"605:3:14"},"nodeType":"YulFunctionCall","src":"605:17:14"},{"name":"end","nodeType":"YulIdentifier","src":"624:3:14"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"601:3:14"},"nodeType":"YulFunctionCall","src":"601:27:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"594:6:14"},"nodeType":"YulFunctionCall","src":"594:35:14"},"nodeType":"YulIf","src":"591:55:14"},{"nodeType":"YulAssignment","src":"655:30:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"678:6:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"665:12:14"},"nodeType":"YulFunctionCall","src":"665:20:14"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"655:6:14"}]},{"body":{"nodeType":"YulBlock","src":"728:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"737:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"740:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"730:6:14"},"nodeType":"YulFunctionCall","src":"730:12:14"},"nodeType":"YulExpressionStatement","src":"730:12:14"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"700:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"708:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"697:2:14"},"nodeType":"YulFunctionCall","src":"697:30:14"},"nodeType":"YulIf","src":"694:50:14"},{"nodeType":"YulAssignment","src":"753:29:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"769:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"777:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:14"},"nodeType":"YulFunctionCall","src":"765:17:14"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"753:8:14"}]},{"body":{"nodeType":"YulBlock","src":"842:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"851:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"854:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"844:6:14"},"nodeType":"YulFunctionCall","src":"844:12:14"},"nodeType":"YulExpressionStatement","src":"844:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"805:6:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"817:1:14","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"820:6:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"813:3:14"},"nodeType":"YulFunctionCall","src":"813:14:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"801:3:14"},"nodeType":"YulFunctionCall","src":"801:27:14"},{"kind":"number","nodeType":"YulLiteral","src":"830:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"797:3:14"},"nodeType":"YulFunctionCall","src":"797:38:14"},{"name":"end","nodeType":"YulIdentifier","src":"837:3:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"794:2:14"},"nodeType":"YulFunctionCall","src":"794:47:14"},"nodeType":"YulIf","src":"791:67:14"}]},"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"544:6:14","type":""},{"name":"end","nodeType":"YulTypedName","src":"552:3:14","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"560:8:14","type":""},{"name":"length","nodeType":"YulTypedName","src":"570:6:14","type":""}],"src":"497:367:14"},{"body":{"nodeType":"YulBlock","src":"1023:616:14","statements":[{"body":{"nodeType":"YulBlock","src":"1069:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1078:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1081:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1071:6:14"},"nodeType":"YulFunctionCall","src":"1071:12:14"},"nodeType":"YulExpressionStatement","src":"1071:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1044:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"1053:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1040:3:14"},"nodeType":"YulFunctionCall","src":"1040:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"1065:2:14","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1036:3:14"},"nodeType":"YulFunctionCall","src":"1036:32:14"},"nodeType":"YulIf","src":"1033:52:14"},{"nodeType":"YulVariableDeclaration","src":"1094:37:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1108:12:14"},"nodeType":"YulFunctionCall","src":"1108:23:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1098:6:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1140:28:14","value":{"kind":"number","nodeType":"YulLiteral","src":"1150:18:14","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1144:2:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"1195:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1204:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1207:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1197:6:14"},"nodeType":"YulFunctionCall","src":"1197:12:14"},"nodeType":"YulExpressionStatement","src":"1197:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1183:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"1191:2:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1180:2:14"},"nodeType":"YulFunctionCall","src":"1180:14:14"},"nodeType":"YulIf","src":"1177:34:14"},{"nodeType":"YulVariableDeclaration","src":"1220:96:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1288:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"1299:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1284:3:14"},"nodeType":"YulFunctionCall","src":"1284:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1308:7:14"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1246:37:14"},"nodeType":"YulFunctionCall","src":"1246:70:14"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"1224:8:14","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"1234:8:14","type":""}]},{"nodeType":"YulAssignment","src":"1325:18:14","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"1335:8:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1325:6:14"}]},{"nodeType":"YulAssignment","src":"1352:18:14","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1362:8:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1352:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"1379:48:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1412:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"1423:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1408:3:14"},"nodeType":"YulFunctionCall","src":"1408:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1395:12:14"},"nodeType":"YulFunctionCall","src":"1395:32:14"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"1456:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1465:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1468:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1458:6:14"},"nodeType":"YulFunctionCall","src":"1458:12:14"},"nodeType":"YulExpressionStatement","src":"1458:12:14"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1442:8:14"},{"name":"_1","nodeType":"YulIdentifier","src":"1452:2:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1439:2:14"},"nodeType":"YulFunctionCall","src":"1439:16:14"},"nodeType":"YulIf","src":"1436:36:14"},{"nodeType":"YulVariableDeclaration","src":"1481:98:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1549:9:14"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1560:8:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1545:3:14"},"nodeType":"YulFunctionCall","src":"1545:24:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1571:7:14"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1507:37:14"},"nodeType":"YulFunctionCall","src":"1507:72:14"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"1485:8:14","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"1495:8:14","type":""}]},{"nodeType":"YulAssignment","src":"1588:18:14","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1598:8:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1588:6:14"}]},{"nodeType":"YulAssignment","src":"1615:18:14","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1625:8:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1615:6:14"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"965:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"976:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"988:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"996:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1004:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1012:6:14","type":""}],"src":"869:770:14"},{"body":{"nodeType":"YulBlock","src":"1689:86:14","statements":[{"body":{"nodeType":"YulBlock","src":"1753:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1762:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1765:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1755:6:14"},"nodeType":"YulFunctionCall","src":"1755:12:14"},"nodeType":"YulExpressionStatement","src":"1755:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1712:5:14"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1723:5:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1738:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1743:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1734:3:14"},"nodeType":"YulFunctionCall","src":"1734:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"1747:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1730:3:14"},"nodeType":"YulFunctionCall","src":"1730:19:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1719:3:14"},"nodeType":"YulFunctionCall","src":"1719:31:14"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1709:2:14"},"nodeType":"YulFunctionCall","src":"1709:42:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1702:6:14"},"nodeType":"YulFunctionCall","src":"1702:50:14"},"nodeType":"YulIf","src":"1699:70:14"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1678:5:14","type":""}],"src":"1644:131:14"},{"body":{"nodeType":"YulBlock","src":"1812:95:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1829:1:14","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1836:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1841:10:14","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1832:3:14"},"nodeType":"YulFunctionCall","src":"1832:20:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1822:6:14"},"nodeType":"YulFunctionCall","src":"1822:31:14"},"nodeType":"YulExpressionStatement","src":"1822:31:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1869:1:14","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1872:4:14","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1862:6:14"},"nodeType":"YulFunctionCall","src":"1862:15:14"},"nodeType":"YulExpressionStatement","src":"1862:15:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1893:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1896:4:14","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1886:6:14"},"nodeType":"YulFunctionCall","src":"1886:15:14"},"nodeType":"YulExpressionStatement","src":"1886:15:14"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1780:127:14"},{"body":{"nodeType":"YulBlock","src":"1957:230:14","statements":[{"nodeType":"YulAssignment","src":"1967:19:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1983:2:14","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1977:5:14"},"nodeType":"YulFunctionCall","src":"1977:9:14"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1967:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"1995:58:14","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2017:6:14"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2033:4:14"},{"kind":"number","nodeType":"YulLiteral","src":"2039:2:14","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2029:3:14"},"nodeType":"YulFunctionCall","src":"2029:13:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2048:2:14","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2044:3:14"},"nodeType":"YulFunctionCall","src":"2044:7:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2025:3:14"},"nodeType":"YulFunctionCall","src":"2025:27:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2013:3:14"},"nodeType":"YulFunctionCall","src":"2013:40:14"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1999:10:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"2128:22:14","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2130:16:14"},"nodeType":"YulFunctionCall","src":"2130:18:14"},"nodeType":"YulExpressionStatement","src":"2130:18:14"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2071:10:14"},{"kind":"number","nodeType":"YulLiteral","src":"2083:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2068:2:14"},"nodeType":"YulFunctionCall","src":"2068:34:14"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2107:10:14"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2119:6:14"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2104:2:14"},"nodeType":"YulFunctionCall","src":"2104:22:14"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2065:2:14"},"nodeType":"YulFunctionCall","src":"2065:62:14"},"nodeType":"YulIf","src":"2062:88:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2166:2:14","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2170:10:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2159:6:14"},"nodeType":"YulFunctionCall","src":"2159:22:14"},"nodeType":"YulExpressionStatement","src":"2159:22:14"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1937:4:14","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1946:6:14","type":""}],"src":"1912:275:14"},{"body":{"nodeType":"YulBlock","src":"2244:478:14","statements":[{"body":{"nodeType":"YulBlock","src":"2293:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2302:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2305:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2295:6:14"},"nodeType":"YulFunctionCall","src":"2295:12:14"},"nodeType":"YulExpressionStatement","src":"2295:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2272:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"2280:4:14","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2268:3:14"},"nodeType":"YulFunctionCall","src":"2268:17:14"},{"name":"end","nodeType":"YulIdentifier","src":"2287:3:14"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2264:3:14"},"nodeType":"YulFunctionCall","src":"2264:27:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2257:6:14"},"nodeType":"YulFunctionCall","src":"2257:35:14"},"nodeType":"YulIf","src":"2254:55:14"},{"nodeType":"YulVariableDeclaration","src":"2318:30:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2341:6:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2328:12:14"},"nodeType":"YulFunctionCall","src":"2328:20:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2322:2:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"2387:22:14","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2389:16:14"},"nodeType":"YulFunctionCall","src":"2389:18:14"},"nodeType":"YulExpressionStatement","src":"2389:18:14"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2363:2:14"},{"kind":"number","nodeType":"YulLiteral","src":"2367:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2360:2:14"},"nodeType":"YulFunctionCall","src":"2360:26:14"},"nodeType":"YulIf","src":"2357:52:14"},{"nodeType":"YulVariableDeclaration","src":"2418:70:14","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2461:2:14"},{"kind":"number","nodeType":"YulLiteral","src":"2465:4:14","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2457:3:14"},"nodeType":"YulFunctionCall","src":"2457:13:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2476:2:14","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2472:3:14"},"nodeType":"YulFunctionCall","src":"2472:7:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2453:3:14"},"nodeType":"YulFunctionCall","src":"2453:27:14"},{"kind":"number","nodeType":"YulLiteral","src":"2482:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2449:3:14"},"nodeType":"YulFunctionCall","src":"2449:38:14"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2433:15:14"},"nodeType":"YulFunctionCall","src":"2433:55:14"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"2422:7:14","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2504:7:14"},{"name":"_1","nodeType":"YulIdentifier","src":"2513:2:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2497:6:14"},"nodeType":"YulFunctionCall","src":"2497:19:14"},"nodeType":"YulExpressionStatement","src":"2497:19:14"},{"body":{"nodeType":"YulBlock","src":"2564:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2573:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2576:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2566:6:14"},"nodeType":"YulFunctionCall","src":"2566:12:14"},"nodeType":"YulExpressionStatement","src":"2566:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2539:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"2547:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2535:3:14"},"nodeType":"YulFunctionCall","src":"2535:15:14"},{"kind":"number","nodeType":"YulLiteral","src":"2552:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2531:3:14"},"nodeType":"YulFunctionCall","src":"2531:26:14"},{"name":"end","nodeType":"YulIdentifier","src":"2559:3:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2528:2:14"},"nodeType":"YulFunctionCall","src":"2528:35:14"},"nodeType":"YulIf","src":"2525:55:14"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2606:7:14"},{"kind":"number","nodeType":"YulLiteral","src":"2615:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2602:3:14"},"nodeType":"YulFunctionCall","src":"2602:18:14"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2626:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"2634:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2622:3:14"},"nodeType":"YulFunctionCall","src":"2622:17:14"},{"name":"_1","nodeType":"YulIdentifier","src":"2641:2:14"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2589:12:14"},"nodeType":"YulFunctionCall","src":"2589:55:14"},"nodeType":"YulExpressionStatement","src":"2589:55:14"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2668:7:14"},{"name":"_1","nodeType":"YulIdentifier","src":"2677:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2664:3:14"},"nodeType":"YulFunctionCall","src":"2664:16:14"},{"kind":"number","nodeType":"YulLiteral","src":"2682:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2660:3:14"},"nodeType":"YulFunctionCall","src":"2660:27:14"},{"kind":"number","nodeType":"YulLiteral","src":"2689:1:14","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2653:6:14"},"nodeType":"YulFunctionCall","src":"2653:38:14"},"nodeType":"YulExpressionStatement","src":"2653:38:14"},{"nodeType":"YulAssignment","src":"2700:16:14","value":{"name":"array_1","nodeType":"YulIdentifier","src":"2709:7:14"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2700:5:14"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2218:6:14","type":""},{"name":"end","nodeType":"YulTypedName","src":"2226:3:14","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2234:5:14","type":""}],"src":"2192:530:14"},{"body":{"nodeType":"YulBlock","src":"2857:535:14","statements":[{"body":{"nodeType":"YulBlock","src":"2904:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2916:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2906:6:14"},"nodeType":"YulFunctionCall","src":"2906:12:14"},"nodeType":"YulExpressionStatement","src":"2906:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2878:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"2887:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2874:3:14"},"nodeType":"YulFunctionCall","src":"2874:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"2899:3:14","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2870:3:14"},"nodeType":"YulFunctionCall","src":"2870:33:14"},"nodeType":"YulIf","src":"2867:53:14"},{"nodeType":"YulVariableDeclaration","src":"2929:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2942:12:14"},"nodeType":"YulFunctionCall","src":"2942:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2933:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2999:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2974:24:14"},"nodeType":"YulFunctionCall","src":"2974:31:14"},"nodeType":"YulExpressionStatement","src":"2974:31:14"},{"nodeType":"YulAssignment","src":"3014:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"3024:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3014:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"3038:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3070:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3081:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3066:3:14"},"nodeType":"YulFunctionCall","src":"3066:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3053:12:14"},"nodeType":"YulFunctionCall","src":"3053:32:14"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3042:7:14","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3119:7:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3094:24:14"},"nodeType":"YulFunctionCall","src":"3094:33:14"},"nodeType":"YulExpressionStatement","src":"3094:33:14"},{"nodeType":"YulAssignment","src":"3136:17:14","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3146:7:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3136:6:14"}]},{"nodeType":"YulAssignment","src":"3162:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3200:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3185:3:14"},"nodeType":"YulFunctionCall","src":"3185:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3172:12:14"},"nodeType":"YulFunctionCall","src":"3172:32:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3162:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"3213:46:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3244:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3255:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3240:3:14"},"nodeType":"YulFunctionCall","src":"3240:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3227:12:14"},"nodeType":"YulFunctionCall","src":"3227:32:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3217:6:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"3302:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3311:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3314:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3304:6:14"},"nodeType":"YulFunctionCall","src":"3304:12:14"},"nodeType":"YulExpressionStatement","src":"3304:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3274:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"3282:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3271:2:14"},"nodeType":"YulFunctionCall","src":"3271:30:14"},"nodeType":"YulIf","src":"3268:50:14"},{"nodeType":"YulAssignment","src":"3327:59:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3358:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"3369:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3354:3:14"},"nodeType":"YulFunctionCall","src":"3354:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3378:7:14"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"3337:16:14"},"nodeType":"YulFunctionCall","src":"3337:49:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3327:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2799:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2810:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2822:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2830:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2838:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2846:6:14","type":""}],"src":"2727:665:14"},{"body":{"nodeType":"YulBlock","src":"3496:103:14","statements":[{"nodeType":"YulAssignment","src":"3506:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3518:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3529:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3514:3:14"},"nodeType":"YulFunctionCall","src":"3514:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3506:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:14"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3563:6:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3575:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3580:10:14","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3571:3:14"},"nodeType":"YulFunctionCall","src":"3571:20:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3559:3:14"},"nodeType":"YulFunctionCall","src":"3559:33:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3541:6:14"},"nodeType":"YulFunctionCall","src":"3541:52:14"},"nodeType":"YulExpressionStatement","src":"3541:52:14"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3465:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3476:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3487:4:14","type":""}],"src":"3397:202:14"},{"body":{"nodeType":"YulBlock","src":"3691:301:14","statements":[{"body":{"nodeType":"YulBlock","src":"3737:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3746:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3749:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3739:6:14"},"nodeType":"YulFunctionCall","src":"3739:12:14"},"nodeType":"YulExpressionStatement","src":"3739:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3712:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"3721:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:14"},"nodeType":"YulFunctionCall","src":"3708:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"3733:2:14","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3704:3:14"},"nodeType":"YulFunctionCall","src":"3704:32:14"},"nodeType":"YulIf","src":"3701:52:14"},{"nodeType":"YulVariableDeclaration","src":"3762:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3788:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3775:12:14"},"nodeType":"YulFunctionCall","src":"3775:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3766:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3832:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3807:24:14"},"nodeType":"YulFunctionCall","src":"3807:31:14"},"nodeType":"YulExpressionStatement","src":"3807:31:14"},{"nodeType":"YulAssignment","src":"3847:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"3857:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3847:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"3871:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3903:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3914:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3899:3:14"},"nodeType":"YulFunctionCall","src":"3899:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3886:12:14"},"nodeType":"YulFunctionCall","src":"3886:32:14"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3875:7:14","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3952:7:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3927:24:14"},"nodeType":"YulFunctionCall","src":"3927:33:14"},"nodeType":"YulExpressionStatement","src":"3927:33:14"},{"nodeType":"YulAssignment","src":"3969:17:14","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3979:7:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3969:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3649:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3660:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3672:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3680:6:14","type":""}],"src":"3604:388:14"},{"body":{"nodeType":"YulBlock","src":"4098:102:14","statements":[{"nodeType":"YulAssignment","src":"4108:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4120:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"4131:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4116:3:14"},"nodeType":"YulFunctionCall","src":"4116:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4108:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4150:9:14"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4165:6:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4181:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"4186:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4177:3:14"},"nodeType":"YulFunctionCall","src":"4177:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"4190:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4173:3:14"},"nodeType":"YulFunctionCall","src":"4173:19:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4161:3:14"},"nodeType":"YulFunctionCall","src":"4161:32:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4143:6:14"},"nodeType":"YulFunctionCall","src":"4143:51:14"},"nodeType":"YulExpressionStatement","src":"4143:51:14"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4067:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4078:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4089:4:14","type":""}],"src":"3997:203:14"},{"body":{"nodeType":"YulBlock","src":"4277:275:14","statements":[{"body":{"nodeType":"YulBlock","src":"4326:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4335:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4338:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4328:6:14"},"nodeType":"YulFunctionCall","src":"4328:12:14"},"nodeType":"YulExpressionStatement","src":"4328:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4305:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"4313:4:14","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4301:3:14"},"nodeType":"YulFunctionCall","src":"4301:17:14"},{"name":"end","nodeType":"YulIdentifier","src":"4320:3:14"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4297:3:14"},"nodeType":"YulFunctionCall","src":"4297:27:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4290:6:14"},"nodeType":"YulFunctionCall","src":"4290:35:14"},"nodeType":"YulIf","src":"4287:55:14"},{"nodeType":"YulAssignment","src":"4351:30:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4374:6:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4361:12:14"},"nodeType":"YulFunctionCall","src":"4361:20:14"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4351:6:14"}]},{"body":{"nodeType":"YulBlock","src":"4424:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4433:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4436:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4426:6:14"},"nodeType":"YulFunctionCall","src":"4426:12:14"},"nodeType":"YulExpressionStatement","src":"4426:12:14"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4396:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"4404:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4393:2:14"},"nodeType":"YulFunctionCall","src":"4393:30:14"},"nodeType":"YulIf","src":"4390:50:14"},{"nodeType":"YulAssignment","src":"4449:29:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4465:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"4473:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:14"},"nodeType":"YulFunctionCall","src":"4461:17:14"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"4449:8:14"}]},{"body":{"nodeType":"YulBlock","src":"4530:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4539:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4542:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4532:6:14"},"nodeType":"YulFunctionCall","src":"4532:12:14"},"nodeType":"YulExpressionStatement","src":"4532:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4501:6:14"},{"name":"length","nodeType":"YulIdentifier","src":"4509:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4497:3:14"},"nodeType":"YulFunctionCall","src":"4497:19:14"},{"kind":"number","nodeType":"YulLiteral","src":"4518:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:14"},"nodeType":"YulFunctionCall","src":"4493:30:14"},{"name":"end","nodeType":"YulIdentifier","src":"4525:3:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4490:2:14"},"nodeType":"YulFunctionCall","src":"4490:39:14"},"nodeType":"YulIf","src":"4487:59:14"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4240:6:14","type":""},{"name":"end","nodeType":"YulTypedName","src":"4248:3:14","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"4256:8:14","type":""},{"name":"length","nodeType":"YulTypedName","src":"4266:6:14","type":""}],"src":"4205:347:14"},{"body":{"nodeType":"YulBlock","src":"4680:489:14","statements":[{"body":{"nodeType":"YulBlock","src":"4726:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4735:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4738:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4728:6:14"},"nodeType":"YulFunctionCall","src":"4728:12:14"},"nodeType":"YulExpressionStatement","src":"4728:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4701:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"4710:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4697:3:14"},"nodeType":"YulFunctionCall","src":"4697:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"4722:2:14","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4693:3:14"},"nodeType":"YulFunctionCall","src":"4693:32:14"},"nodeType":"YulIf","src":"4690:52:14"},{"nodeType":"YulVariableDeclaration","src":"4751:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4777:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4764:12:14"},"nodeType":"YulFunctionCall","src":"4764:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4755:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4821:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4796:24:14"},"nodeType":"YulFunctionCall","src":"4796:31:14"},"nodeType":"YulExpressionStatement","src":"4796:31:14"},{"nodeType":"YulAssignment","src":"4836:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"4846:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4836:6:14"}]},{"nodeType":"YulAssignment","src":"4860:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"4898:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4883:3:14"},"nodeType":"YulFunctionCall","src":"4883:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4870:12:14"},"nodeType":"YulFunctionCall","src":"4870:32:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4860:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"4911:46:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4942:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"4953:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4938:3:14"},"nodeType":"YulFunctionCall","src":"4938:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4925:12:14"},"nodeType":"YulFunctionCall","src":"4925:32:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4915:6:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"5000:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5009:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5012:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5002:6:14"},"nodeType":"YulFunctionCall","src":"5002:12:14"},"nodeType":"YulExpressionStatement","src":"5002:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4972:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"4980:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4969:2:14"},"nodeType":"YulFunctionCall","src":"4969:30:14"},"nodeType":"YulIf","src":"4966:50:14"},{"nodeType":"YulVariableDeclaration","src":"5025:84:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5081:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"5092:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5077:3:14"},"nodeType":"YulFunctionCall","src":"5077:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5101:7:14"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"5051:25:14"},"nodeType":"YulFunctionCall","src":"5051:58:14"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"5029:8:14","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"5039:8:14","type":""}]},{"nodeType":"YulAssignment","src":"5118:18:14","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"5128:8:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5118:6:14"}]},{"nodeType":"YulAssignment","src":"5145:18:14","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"5155:8:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5145:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4622:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4633:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4645:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4653:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4661:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4669:6:14","type":""}],"src":"4557:612:14"},{"body":{"nodeType":"YulBlock","src":"5293:427:14","statements":[{"nodeType":"YulVariableDeclaration","src":"5303:12:14","value":{"kind":"number","nodeType":"YulLiteral","src":"5313:2:14","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5307:2:14","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5331:9:14"},{"name":"_1","nodeType":"YulIdentifier","src":"5342:2:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5324:6:14"},"nodeType":"YulFunctionCall","src":"5324:21:14"},"nodeType":"YulExpressionStatement","src":"5324:21:14"},{"nodeType":"YulVariableDeclaration","src":"5354:27:14","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5374:6:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5368:5:14"},"nodeType":"YulFunctionCall","src":"5368:13:14"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5358:6:14","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5401:9:14"},{"name":"_1","nodeType":"YulIdentifier","src":"5412:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5397:3:14"},"nodeType":"YulFunctionCall","src":"5397:18:14"},{"name":"length","nodeType":"YulIdentifier","src":"5417:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5390:6:14"},"nodeType":"YulFunctionCall","src":"5390:34:14"},"nodeType":"YulExpressionStatement","src":"5390:34:14"},{"nodeType":"YulVariableDeclaration","src":"5433:10:14","value":{"kind":"number","nodeType":"YulLiteral","src":"5442:1:14","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5437:1:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"5502:90:14","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5531:9:14"},{"name":"i","nodeType":"YulIdentifier","src":"5542:1:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5527:3:14"},"nodeType":"YulFunctionCall","src":"5527:17:14"},{"kind":"number","nodeType":"YulLiteral","src":"5546:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5523:3:14"},"nodeType":"YulFunctionCall","src":"5523:26:14"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5565:6:14"},{"name":"i","nodeType":"YulIdentifier","src":"5573:1:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5561:3:14"},"nodeType":"YulFunctionCall","src":"5561:14:14"},{"name":"_1","nodeType":"YulIdentifier","src":"5577:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5557:3:14"},"nodeType":"YulFunctionCall","src":"5557:23:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5551:5:14"},"nodeType":"YulFunctionCall","src":"5551:30:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5516:6:14"},"nodeType":"YulFunctionCall","src":"5516:66:14"},"nodeType":"YulExpressionStatement","src":"5516:66:14"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5463:1:14"},{"name":"length","nodeType":"YulIdentifier","src":"5466:6:14"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5460:2:14"},"nodeType":"YulFunctionCall","src":"5460:13:14"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5474:19:14","statements":[{"nodeType":"YulAssignment","src":"5476:15:14","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5485:1:14"},{"name":"_1","nodeType":"YulIdentifier","src":"5488:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5481:3:14"},"nodeType":"YulFunctionCall","src":"5481:10:14"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5476:1:14"}]}]},"pre":{"nodeType":"YulBlock","src":"5456:3:14","statements":[]},"src":"5452:140:14"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5616:9:14"},{"name":"length","nodeType":"YulIdentifier","src":"5627:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5612:3:14"},"nodeType":"YulFunctionCall","src":"5612:22:14"},{"kind":"number","nodeType":"YulLiteral","src":"5636:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5608:3:14"},"nodeType":"YulFunctionCall","src":"5608:31:14"},{"kind":"number","nodeType":"YulLiteral","src":"5641:1:14","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5601:6:14"},"nodeType":"YulFunctionCall","src":"5601:42:14"},"nodeType":"YulExpressionStatement","src":"5601:42:14"},{"nodeType":"YulAssignment","src":"5652:62:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5668:9:14"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5687:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"5695:2:14","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5683:3:14"},"nodeType":"YulFunctionCall","src":"5683:15:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5704:2:14","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5700:3:14"},"nodeType":"YulFunctionCall","src":"5700:7:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5679:3:14"},"nodeType":"YulFunctionCall","src":"5679:29:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5664:3:14"},"nodeType":"YulFunctionCall","src":"5664:45:14"},{"kind":"number","nodeType":"YulLiteral","src":"5711:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5660:3:14"},"nodeType":"YulFunctionCall","src":"5660:54:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5652:4:14"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5262:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5273:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5284:4:14","type":""}],"src":"5174:546:14"},{"body":{"nodeType":"YulBlock","src":"5789:648:14","statements":[{"body":{"nodeType":"YulBlock","src":"5838:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5847:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5850:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5840:6:14"},"nodeType":"YulFunctionCall","src":"5840:12:14"},"nodeType":"YulExpressionStatement","src":"5840:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5817:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"5825:4:14","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5813:3:14"},"nodeType":"YulFunctionCall","src":"5813:17:14"},{"name":"end","nodeType":"YulIdentifier","src":"5832:3:14"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5809:3:14"},"nodeType":"YulFunctionCall","src":"5809:27:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5802:6:14"},"nodeType":"YulFunctionCall","src":"5802:35:14"},"nodeType":"YulIf","src":"5799:55:14"},{"nodeType":"YulVariableDeclaration","src":"5863:30:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5886:6:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5873:12:14"},"nodeType":"YulFunctionCall","src":"5873:20:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5867:2:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5902:14:14","value":{"kind":"number","nodeType":"YulLiteral","src":"5912:4:14","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5906:2:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"5955:22:14","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5957:16:14"},"nodeType":"YulFunctionCall","src":"5957:18:14"},"nodeType":"YulExpressionStatement","src":"5957:18:14"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5931:2:14"},{"kind":"number","nodeType":"YulLiteral","src":"5935:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5928:2:14"},"nodeType":"YulFunctionCall","src":"5928:26:14"},"nodeType":"YulIf","src":"5925:52:14"},{"nodeType":"YulVariableDeclaration","src":"5986:20:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6000:1:14","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"6003:2:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5996:3:14"},"nodeType":"YulFunctionCall","src":"5996:10:14"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"5990:2:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6015:39:14","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6046:2:14"},{"name":"_2","nodeType":"YulIdentifier","src":"6050:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6042:3:14"},"nodeType":"YulFunctionCall","src":"6042:11:14"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"6026:15:14"},"nodeType":"YulFunctionCall","src":"6026:28:14"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"6019:3:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6063:16:14","value":{"name":"dst","nodeType":"YulIdentifier","src":"6076:3:14"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"6067:5:14","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6095:3:14"},{"name":"_1","nodeType":"YulIdentifier","src":"6100:2:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6088:6:14"},"nodeType":"YulFunctionCall","src":"6088:15:14"},"nodeType":"YulExpressionStatement","src":"6088:15:14"},{"nodeType":"YulAssignment","src":"6112:19:14","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6123:3:14"},{"name":"_2","nodeType":"YulIdentifier","src":"6128:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6119:3:14"},"nodeType":"YulFunctionCall","src":"6119:12:14"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"6112:3:14"}]},{"nodeType":"YulVariableDeclaration","src":"6140:38:14","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6162:6:14"},{"name":"_3","nodeType":"YulIdentifier","src":"6170:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6158:3:14"},"nodeType":"YulFunctionCall","src":"6158:15:14"},{"name":"_2","nodeType":"YulIdentifier","src":"6175:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6154:3:14"},"nodeType":"YulFunctionCall","src":"6154:24:14"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"6144:6:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"6206:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6215:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6218:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6208:6:14"},"nodeType":"YulFunctionCall","src":"6208:12:14"},"nodeType":"YulExpressionStatement","src":"6208:12:14"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"6193:6:14"},{"name":"end","nodeType":"YulIdentifier","src":"6201:3:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6190:2:14"},"nodeType":"YulFunctionCall","src":"6190:15:14"},"nodeType":"YulIf","src":"6187:35:14"},{"nodeType":"YulVariableDeclaration","src":"6231:26:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6246:6:14"},{"name":"_2","nodeType":"YulIdentifier","src":"6254:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6242:3:14"},"nodeType":"YulFunctionCall","src":"6242:15:14"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"6235:3:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"6322:86:14","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6343:3:14"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6361:3:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6348:12:14"},"nodeType":"YulFunctionCall","src":"6348:17:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6336:6:14"},"nodeType":"YulFunctionCall","src":"6336:30:14"},"nodeType":"YulExpressionStatement","src":"6336:30:14"},{"nodeType":"YulAssignment","src":"6379:19:14","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6390:3:14"},{"name":"_2","nodeType":"YulIdentifier","src":"6395:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6386:3:14"},"nodeType":"YulFunctionCall","src":"6386:12:14"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"6379:3:14"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6277:3:14"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"6282:6:14"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6274:2:14"},"nodeType":"YulFunctionCall","src":"6274:15:14"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6290:23:14","statements":[{"nodeType":"YulAssignment","src":"6292:19:14","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6303:3:14"},{"name":"_2","nodeType":"YulIdentifier","src":"6308:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6299:3:14"},"nodeType":"YulFunctionCall","src":"6299:12:14"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"6292:3:14"}]}]},"pre":{"nodeType":"YulBlock","src":"6270:3:14","statements":[]},"src":"6266:142:14"},{"nodeType":"YulAssignment","src":"6417:14:14","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"6426:5:14"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"6417:5:14"}]}]},"name":"abi_decode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5763:6:14","type":""},{"name":"end","nodeType":"YulTypedName","src":"5771:3:14","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"5779:5:14","type":""}],"src":"5725:712:14"},{"body":{"nodeType":"YulBlock","src":"6639:874:14","statements":[{"body":{"nodeType":"YulBlock","src":"6686:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6695:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6698:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6688:6:14"},"nodeType":"YulFunctionCall","src":"6688:12:14"},"nodeType":"YulExpressionStatement","src":"6688:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6660:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"6669:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6656:3:14"},"nodeType":"YulFunctionCall","src":"6656:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"6681:3:14","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6652:3:14"},"nodeType":"YulFunctionCall","src":"6652:33:14"},"nodeType":"YulIf","src":"6649:53:14"},{"nodeType":"YulVariableDeclaration","src":"6711:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6737:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6724:12:14"},"nodeType":"YulFunctionCall","src":"6724:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6715:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6781:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"6756:24:14"},"nodeType":"YulFunctionCall","src":"6756:31:14"},"nodeType":"YulExpressionStatement","src":"6756:31:14"},{"nodeType":"YulAssignment","src":"6796:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"6806:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6796:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"6820:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6852:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"6863:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6848:3:14"},"nodeType":"YulFunctionCall","src":"6848:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6835:12:14"},"nodeType":"YulFunctionCall","src":"6835:32:14"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"6824:7:14","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"6901:7:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"6876:24:14"},"nodeType":"YulFunctionCall","src":"6876:33:14"},"nodeType":"YulExpressionStatement","src":"6876:33:14"},{"nodeType":"YulAssignment","src":"6918:17:14","value":{"name":"value_1","nodeType":"YulIdentifier","src":"6928:7:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6918:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"6944:46:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6975:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"6986:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6971:3:14"},"nodeType":"YulFunctionCall","src":"6971:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6958:12:14"},"nodeType":"YulFunctionCall","src":"6958:32:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6948:6:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6999:28:14","value":{"kind":"number","nodeType":"YulLiteral","src":"7009:18:14","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7003:2:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"7054:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7063:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7066:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7056:6:14"},"nodeType":"YulFunctionCall","src":"7056:12:14"},"nodeType":"YulExpressionStatement","src":"7056:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7042:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"7050:2:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7039:2:14"},"nodeType":"YulFunctionCall","src":"7039:14:14"},"nodeType":"YulIf","src":"7036:34:14"},{"nodeType":"YulAssignment","src":"7079:71:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7122:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"7133:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7118:3:14"},"nodeType":"YulFunctionCall","src":"7118:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7142:7:14"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"7089:28:14"},"nodeType":"YulFunctionCall","src":"7089:61:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7079:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"7159:48:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7192:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"7203:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7188:3:14"},"nodeType":"YulFunctionCall","src":"7188:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7175:12:14"},"nodeType":"YulFunctionCall","src":"7175:32:14"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"7163:8:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"7236:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7245:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7248:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7238:6:14"},"nodeType":"YulFunctionCall","src":"7238:12:14"},"nodeType":"YulExpressionStatement","src":"7238:12:14"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"7222:8:14"},{"name":"_1","nodeType":"YulIdentifier","src":"7232:2:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7219:2:14"},"nodeType":"YulFunctionCall","src":"7219:16:14"},"nodeType":"YulIf","src":"7216:36:14"},{"nodeType":"YulAssignment","src":"7261:73:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7304:9:14"},{"name":"offset_1","nodeType":"YulIdentifier","src":"7315:8:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7300:3:14"},"nodeType":"YulFunctionCall","src":"7300:24:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7326:7:14"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"7271:28:14"},"nodeType":"YulFunctionCall","src":"7271:63:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7261:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"7343:49:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7376:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"7387:3:14","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7372:3:14"},"nodeType":"YulFunctionCall","src":"7372:19:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7359:12:14"},"nodeType":"YulFunctionCall","src":"7359:33:14"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"7347:8:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"7421:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7430:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7433:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7423:6:14"},"nodeType":"YulFunctionCall","src":"7423:12:14"},"nodeType":"YulExpressionStatement","src":"7423:12:14"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"7407:8:14"},{"name":"_1","nodeType":"YulIdentifier","src":"7417:2:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7404:2:14"},"nodeType":"YulFunctionCall","src":"7404:16:14"},"nodeType":"YulIf","src":"7401:36:14"},{"nodeType":"YulAssignment","src":"7446:61:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7477:9:14"},{"name":"offset_2","nodeType":"YulIdentifier","src":"7488:8:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7473:3:14"},"nodeType":"YulFunctionCall","src":"7473:24:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7499:7:14"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"7456:16:14"},"nodeType":"YulFunctionCall","src":"7456:51:14"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"7446:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6573:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6584:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6596:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6604:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6612:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6620:6:14","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6628:6:14","type":""}],"src":"6442:1071:14"},{"body":{"nodeType":"YulBlock","src":"7619:76:14","statements":[{"nodeType":"YulAssignment","src":"7629:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7641:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"7652:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7637:3:14"},"nodeType":"YulFunctionCall","src":"7637:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7629:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7671:9:14"},{"name":"value0","nodeType":"YulIdentifier","src":"7682:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7664:6:14"},"nodeType":"YulFunctionCall","src":"7664:25:14"},"nodeType":"YulExpressionStatement","src":"7664:25:14"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7588:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7599:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7610:4:14","type":""}],"src":"7518:177:14"},{"body":{"nodeType":"YulBlock","src":"7789:320:14","statements":[{"body":{"nodeType":"YulBlock","src":"7835:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7844:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7847:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7837:6:14"},"nodeType":"YulFunctionCall","src":"7837:12:14"},"nodeType":"YulExpressionStatement","src":"7837:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7810:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"7819:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7806:3:14"},"nodeType":"YulFunctionCall","src":"7806:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"7831:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7802:3:14"},"nodeType":"YulFunctionCall","src":"7802:32:14"},"nodeType":"YulIf","src":"7799:52:14"},{"nodeType":"YulVariableDeclaration","src":"7860:37:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7887:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7874:12:14"},"nodeType":"YulFunctionCall","src":"7874:23:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7864:6:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"7940:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7949:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7952:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7942:6:14"},"nodeType":"YulFunctionCall","src":"7942:12:14"},"nodeType":"YulExpressionStatement","src":"7942:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7912:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"7920:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7909:2:14"},"nodeType":"YulFunctionCall","src":"7909:30:14"},"nodeType":"YulIf","src":"7906:50:14"},{"nodeType":"YulVariableDeclaration","src":"7965:84:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8021:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"8032:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8017:3:14"},"nodeType":"YulFunctionCall","src":"8017:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8041:7:14"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"7991:25:14"},"nodeType":"YulFunctionCall","src":"7991:58:14"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"7969:8:14","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"7979:8:14","type":""}]},{"nodeType":"YulAssignment","src":"8058:18:14","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"8068:8:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8058:6:14"}]},{"nodeType":"YulAssignment","src":"8085:18:14","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"8095:8:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8085:6:14"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7747:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7758:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7770:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7778:6:14","type":""}],"src":"7700:409:14"},{"body":{"nodeType":"YulBlock","src":"8184:110:14","statements":[{"body":{"nodeType":"YulBlock","src":"8230:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8239:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8242:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8232:6:14"},"nodeType":"YulFunctionCall","src":"8232:12:14"},"nodeType":"YulExpressionStatement","src":"8232:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8205:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"8214:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8201:3:14"},"nodeType":"YulFunctionCall","src":"8201:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"8226:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8197:3:14"},"nodeType":"YulFunctionCall","src":"8197:32:14"},"nodeType":"YulIf","src":"8194:52:14"},{"nodeType":"YulAssignment","src":"8255:33:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8278:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8265:12:14"},"nodeType":"YulFunctionCall","src":"8265:23:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8255:6:14"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8150:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8161:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8173:6:14","type":""}],"src":"8114:180:14"},{"body":{"nodeType":"YulBlock","src":"8446:587:14","statements":[{"body":{"nodeType":"YulBlock","src":"8493:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8502:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8505:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8495:6:14"},"nodeType":"YulFunctionCall","src":"8495:12:14"},"nodeType":"YulExpressionStatement","src":"8495:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8467:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"8476:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8463:3:14"},"nodeType":"YulFunctionCall","src":"8463:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"8488:3:14","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8459:3:14"},"nodeType":"YulFunctionCall","src":"8459:33:14"},"nodeType":"YulIf","src":"8456:53:14"},{"nodeType":"YulVariableDeclaration","src":"8518:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8544:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8531:12:14"},"nodeType":"YulFunctionCall","src":"8531:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8522:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8588:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"8563:24:14"},"nodeType":"YulFunctionCall","src":"8563:31:14"},"nodeType":"YulExpressionStatement","src":"8563:31:14"},{"nodeType":"YulAssignment","src":"8603:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"8613:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8603:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"8627:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8659:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"8670:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8655:3:14"},"nodeType":"YulFunctionCall","src":"8655:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8642:12:14"},"nodeType":"YulFunctionCall","src":"8642:32:14"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8631:7:14","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8708:7:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"8683:24:14"},"nodeType":"YulFunctionCall","src":"8683:33:14"},"nodeType":"YulExpressionStatement","src":"8683:33:14"},{"nodeType":"YulAssignment","src":"8725:17:14","value":{"name":"value_1","nodeType":"YulIdentifier","src":"8735:7:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8725:6:14"}]},{"nodeType":"YulAssignment","src":"8751:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8778:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"8789:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8774:3:14"},"nodeType":"YulFunctionCall","src":"8774:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8761:12:14"},"nodeType":"YulFunctionCall","src":"8761:32:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"8751:6:14"}]},{"nodeType":"YulAssignment","src":"8802:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8829:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"8840:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8825:3:14"},"nodeType":"YulFunctionCall","src":"8825:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8812:12:14"},"nodeType":"YulFunctionCall","src":"8812:32:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"8802:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"8853:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8884:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"8895:3:14","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8880:3:14"},"nodeType":"YulFunctionCall","src":"8880:19:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8867:12:14"},"nodeType":"YulFunctionCall","src":"8867:33:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8857:6:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"8943:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8952:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8955:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8945:6:14"},"nodeType":"YulFunctionCall","src":"8945:12:14"},"nodeType":"YulExpressionStatement","src":"8945:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8915:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"8923:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8912:2:14"},"nodeType":"YulFunctionCall","src":"8912:30:14"},"nodeType":"YulIf","src":"8909:50:14"},{"nodeType":"YulAssignment","src":"8968:59:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8999:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"9010:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8995:3:14"},"nodeType":"YulFunctionCall","src":"8995:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9019:7:14"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"8978:16:14"},"nodeType":"YulFunctionCall","src":"8978:49:14"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"8968:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8380:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8391:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8403:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8411:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8419:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8427:6:14","type":""},{"name":"value4","nodeType":"YulTypedName","src":"8435:6:14","type":""}],"src":"8299:734:14"},{"body":{"nodeType":"YulBlock","src":"9195:188:14","statements":[{"nodeType":"YulAssignment","src":"9205:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9217:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"9228:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9213:3:14"},"nodeType":"YulFunctionCall","src":"9213:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9205:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9247:9:14"},{"name":"value0","nodeType":"YulIdentifier","src":"9258:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9240:6:14"},"nodeType":"YulFunctionCall","src":"9240:25:14"},"nodeType":"YulExpressionStatement","src":"9240:25:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9285:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"9296:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9281:3:14"},"nodeType":"YulFunctionCall","src":"9281:18:14"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9305:6:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9321:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"9326:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9317:3:14"},"nodeType":"YulFunctionCall","src":"9317:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"9330:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9313:3:14"},"nodeType":"YulFunctionCall","src":"9313:19:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9301:3:14"},"nodeType":"YulFunctionCall","src":"9301:32:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9274:6:14"},"nodeType":"YulFunctionCall","src":"9274:60:14"},"nodeType":"YulExpressionStatement","src":"9274:60:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9354:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"9365:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9350:3:14"},"nodeType":"YulFunctionCall","src":"9350:18:14"},{"name":"value2","nodeType":"YulIdentifier","src":"9370:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9343:6:14"},"nodeType":"YulFunctionCall","src":"9343:34:14"},"nodeType":"YulExpressionStatement","src":"9343:34:14"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9148:9:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9159:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9167:6:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9175:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9186:4:14","type":""}],"src":"9038:345:14"},{"body":{"nodeType":"YulBlock","src":"9458:177:14","statements":[{"body":{"nodeType":"YulBlock","src":"9504:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9513:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9516:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9506:6:14"},"nodeType":"YulFunctionCall","src":"9506:12:14"},"nodeType":"YulExpressionStatement","src":"9506:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9479:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"9488:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9475:3:14"},"nodeType":"YulFunctionCall","src":"9475:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"9500:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9471:3:14"},"nodeType":"YulFunctionCall","src":"9471:32:14"},"nodeType":"YulIf","src":"9468:52:14"},{"nodeType":"YulVariableDeclaration","src":"9529:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9555:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9542:12:14"},"nodeType":"YulFunctionCall","src":"9542:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9533:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9599:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"9574:24:14"},"nodeType":"YulFunctionCall","src":"9574:31:14"},"nodeType":"YulExpressionStatement","src":"9574:31:14"},{"nodeType":"YulAssignment","src":"9614:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"9624:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9614:6:14"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9424:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9435:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9447:6:14","type":""}],"src":"9388:247:14"},{"body":{"nodeType":"YulBlock","src":"9672:95:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9689:1:14","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9696:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9701:10:14","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9692:3:14"},"nodeType":"YulFunctionCall","src":"9692:20:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9682:6:14"},"nodeType":"YulFunctionCall","src":"9682:31:14"},"nodeType":"YulExpressionStatement","src":"9682:31:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9729:1:14","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9732:4:14","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9722:6:14"},"nodeType":"YulFunctionCall","src":"9722:15:14"},"nodeType":"YulExpressionStatement","src":"9722:15:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9753:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9756:4:14","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9746:6:14"},"nodeType":"YulFunctionCall","src":"9746:15:14"},"nodeType":"YulExpressionStatement","src":"9746:15:14"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9640:127:14"},{"body":{"nodeType":"YulBlock","src":"9839:206:14","statements":[{"body":{"nodeType":"YulBlock","src":"9885:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9894:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9897:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9887:6:14"},"nodeType":"YulFunctionCall","src":"9887:12:14"},"nodeType":"YulExpressionStatement","src":"9887:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9860:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"9869:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9856:3:14"},"nodeType":"YulFunctionCall","src":"9856:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"9881:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9852:3:14"},"nodeType":"YulFunctionCall","src":"9852:32:14"},"nodeType":"YulIf","src":"9849:52:14"},{"nodeType":"YulVariableDeclaration","src":"9910:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9936:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9923:12:14"},"nodeType":"YulFunctionCall","src":"9923:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9914:5:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"9999:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10008:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10011:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10001:6:14"},"nodeType":"YulFunctionCall","src":"10001:12:14"},"nodeType":"YulExpressionStatement","src":"10001:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9968:5:14"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9989:5:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9982:6:14"},"nodeType":"YulFunctionCall","src":"9982:13:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9975:6:14"},"nodeType":"YulFunctionCall","src":"9975:21:14"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9965:2:14"},"nodeType":"YulFunctionCall","src":"9965:32:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9958:6:14"},"nodeType":"YulFunctionCall","src":"9958:40:14"},"nodeType":"YulIf","src":"9955:60:14"},{"nodeType":"YulAssignment","src":"10024:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"10034:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10024:6:14"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9805:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9816:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9828:6:14","type":""}],"src":"9772:273:14"},{"body":{"nodeType":"YulBlock","src":"10201:234:14","statements":[{"nodeType":"YulAssignment","src":"10211:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10223:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"10234:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10219:3:14"},"nodeType":"YulFunctionCall","src":"10219:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10211:4:14"}]},{"nodeType":"YulVariableDeclaration","src":"10246:29:14","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10264:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"10269:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10260:3:14"},"nodeType":"YulFunctionCall","src":"10260:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"10273:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10256:3:14"},"nodeType":"YulFunctionCall","src":"10256:19:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10250:2:14","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10291:9:14"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10306:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"10314:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10302:3:14"},"nodeType":"YulFunctionCall","src":"10302:15:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10284:6:14"},"nodeType":"YulFunctionCall","src":"10284:34:14"},"nodeType":"YulExpressionStatement","src":"10284:34:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10338:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"10349:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10334:3:14"},"nodeType":"YulFunctionCall","src":"10334:18:14"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10358:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"10366:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10354:3:14"},"nodeType":"YulFunctionCall","src":"10354:15:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10327:6:14"},"nodeType":"YulFunctionCall","src":"10327:43:14"},"nodeType":"YulExpressionStatement","src":"10327:43:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10390:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"10401:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10386:3:14"},"nodeType":"YulFunctionCall","src":"10386:18:14"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"10420:6:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10413:6:14"},"nodeType":"YulFunctionCall","src":"10413:14:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10406:6:14"},"nodeType":"YulFunctionCall","src":"10406:22:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10379:6:14"},"nodeType":"YulFunctionCall","src":"10379:50:14"},"nodeType":"YulExpressionStatement","src":"10379:50:14"}]},"name":"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10154:9:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10165:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10173:6:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10181:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10192:4:14","type":""}],"src":"10050:385:14"},{"body":{"nodeType":"YulBlock","src":"10472:95:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10489:1:14","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10496:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10501:10:14","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10492:3:14"},"nodeType":"YulFunctionCall","src":"10492:20:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10482:6:14"},"nodeType":"YulFunctionCall","src":"10482:31:14"},"nodeType":"YulExpressionStatement","src":"10482:31:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10529:1:14","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10532:4:14","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10522:6:14"},"nodeType":"YulFunctionCall","src":"10522:15:14"},"nodeType":"YulExpressionStatement","src":"10522:15:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10553:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10556:4:14","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10546:6:14"},"nodeType":"YulFunctionCall","src":"10546:15:14"},"nodeType":"YulExpressionStatement","src":"10546:15:14"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"10440:127:14"},{"body":{"nodeType":"YulBlock","src":"10619:88:14","statements":[{"body":{"nodeType":"YulBlock","src":"10650:22:14","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10652:16:14"},"nodeType":"YulFunctionCall","src":"10652:18:14"},"nodeType":"YulExpressionStatement","src":"10652:18:14"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10635:5:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10646:1:14","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10642:3:14"},"nodeType":"YulFunctionCall","src":"10642:6:14"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10632:2:14"},"nodeType":"YulFunctionCall","src":"10632:17:14"},"nodeType":"YulIf","src":"10629:43:14"},{"nodeType":"YulAssignment","src":"10681:20:14","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10692:5:14"},{"kind":"number","nodeType":"YulLiteral","src":"10699:1:14","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10688:3:14"},"nodeType":"YulFunctionCall","src":"10688:13:14"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"10681:3:14"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10601:5:14","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"10611:3:14","type":""}],"src":"10572:135:14"},{"body":{"nodeType":"YulBlock","src":"10793:170:14","statements":[{"body":{"nodeType":"YulBlock","src":"10839:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10848:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10851:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10841:6:14"},"nodeType":"YulFunctionCall","src":"10841:12:14"},"nodeType":"YulExpressionStatement","src":"10841:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10814:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"10823:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10810:3:14"},"nodeType":"YulFunctionCall","src":"10810:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"10835:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10806:3:14"},"nodeType":"YulFunctionCall","src":"10806:32:14"},"nodeType":"YulIf","src":"10803:52:14"},{"nodeType":"YulVariableDeclaration","src":"10864:29:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10883:9:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10877:5:14"},"nodeType":"YulFunctionCall","src":"10877:16:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10868:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10927:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"10902:24:14"},"nodeType":"YulFunctionCall","src":"10902:31:14"},"nodeType":"YulExpressionStatement","src":"10902:31:14"},{"nodeType":"YulAssignment","src":"10942:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"10952:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10942:6:14"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10759:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10770:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10782:6:14","type":""}],"src":"10712:251:14"},{"body":{"nodeType":"YulBlock","src":"11142:172:14","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11159:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"11170:2:14","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11152:6:14"},"nodeType":"YulFunctionCall","src":"11152:21:14"},"nodeType":"YulExpressionStatement","src":"11152:21:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11193:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"11204:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11189:3:14"},"nodeType":"YulFunctionCall","src":"11189:18:14"},{"kind":"number","nodeType":"YulLiteral","src":"11209:2:14","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11182:6:14"},"nodeType":"YulFunctionCall","src":"11182:30:14"},"nodeType":"YulExpressionStatement","src":"11182:30:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11232:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"11243:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11228:3:14"},"nodeType":"YulFunctionCall","src":"11228:18:14"},{"hexValue":"4d6574686f6420616c6c206e6f7420616c6c6f776564","kind":"string","nodeType":"YulLiteral","src":"11248:24:14","type":"","value":"Method all not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11221:6:14"},"nodeType":"YulFunctionCall","src":"11221:52:14"},"nodeType":"YulExpressionStatement","src":"11221:52:14"},{"nodeType":"YulAssignment","src":"11282:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11294:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"11305:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11290:3:14"},"nodeType":"YulFunctionCall","src":"11290:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11282:4:14"}]}]},"name":"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11119:9:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11133:4:14","type":""}],"src":"10968:346:14"},{"body":{"nodeType":"YulBlock","src":"11449:201:14","statements":[{"body":{"nodeType":"YulBlock","src":"11487:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11496:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11499:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11489:6:14"},"nodeType":"YulFunctionCall","src":"11489:12:14"},"nodeType":"YulExpressionStatement","src":"11489:12:14"}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"11465:10:14"},{"name":"endIndex","nodeType":"YulIdentifier","src":"11477:8:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11462:2:14"},"nodeType":"YulFunctionCall","src":"11462:24:14"},"nodeType":"YulIf","src":"11459:44:14"},{"body":{"nodeType":"YulBlock","src":"11536:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11545:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11548:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11538:6:14"},"nodeType":"YulFunctionCall","src":"11538:12:14"},"nodeType":"YulExpressionStatement","src":"11538:12:14"}]},"condition":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"11518:8:14"},{"name":"length","nodeType":"YulIdentifier","src":"11528:6:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11515:2:14"},"nodeType":"YulFunctionCall","src":"11515:20:14"},"nodeType":"YulIf","src":"11512:40:14"},{"nodeType":"YulAssignment","src":"11561:36:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11578:6:14"},{"name":"startIndex","nodeType":"YulIdentifier","src":"11586:10:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11574:3:14"},"nodeType":"YulFunctionCall","src":"11574:23:14"},"variableNames":[{"name":"offsetOut","nodeType":"YulIdentifier","src":"11561:9:14"}]},{"nodeType":"YulAssignment","src":"11606:38:14","value":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"11623:8:14"},{"name":"startIndex","nodeType":"YulIdentifier","src":"11633:10:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11619:3:14"},"nodeType":"YulFunctionCall","src":"11619:25:14"},"variableNames":[{"name":"lengthOut","nodeType":"YulIdentifier","src":"11606:9:14"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"11383:6:14","type":""},{"name":"length","nodeType":"YulTypedName","src":"11391:6:14","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"11399:10:14","type":""},{"name":"endIndex","nodeType":"YulTypedName","src":"11411:8:14","type":""}],"returnVariables":[{"name":"offsetOut","nodeType":"YulTypedName","src":"11424:9:14","type":""},{"name":"lengthOut","nodeType":"YulTypedName","src":"11435:9:14","type":""}],"src":"11319:331:14"},{"body":{"nodeType":"YulBlock","src":"11755:223:14","statements":[{"nodeType":"YulVariableDeclaration","src":"11765:29:14","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"11788:5:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11775:12:14"},"nodeType":"YulFunctionCall","src":"11775:19:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"11769:2:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11803:30:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11817:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"11822:10:14","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11813:3:14"},"nodeType":"YulFunctionCall","src":"11813:20:14"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"11807:2:14","type":""}]},{"nodeType":"YulAssignment","src":"11842:20:14","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"11855:2:14"},{"name":"_2","nodeType":"YulIdentifier","src":"11859:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11851:3:14"},"nodeType":"YulFunctionCall","src":"11851:11:14"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"11842:5:14"}]},{"body":{"nodeType":"YulBlock","src":"11893:79:14","statements":[{"nodeType":"YulAssignment","src":"11907:55:14","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"11924:2:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11936:1:14","type":"","value":"3"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11943:1:14","type":"","value":"4"},{"name":"len","nodeType":"YulIdentifier","src":"11946:3:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11939:3:14"},"nodeType":"YulFunctionCall","src":"11939:11:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11932:3:14"},"nodeType":"YulFunctionCall","src":"11932:19:14"},{"name":"_2","nodeType":"YulIdentifier","src":"11953:2:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11928:3:14"},"nodeType":"YulFunctionCall","src":"11928:28:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11920:3:14"},"nodeType":"YulFunctionCall","src":"11920:37:14"},{"name":"_2","nodeType":"YulIdentifier","src":"11959:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11916:3:14"},"nodeType":"YulFunctionCall","src":"11916:46:14"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"11907:5:14"}]}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"11877:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"11882:1:14","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11874:2:14"},"nodeType":"YulFunctionCall","src":"11874:10:14"},"nodeType":"YulIf","src":"11871:101:14"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"11730:5:14","type":""},{"name":"len","nodeType":"YulTypedName","src":"11737:3:14","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"11745:5:14","type":""}],"src":"11655:323:14"},{"body":{"nodeType":"YulBlock","src":"12031:77:14","statements":[{"nodeType":"YulAssignment","src":"12041:16:14","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12052:1:14"},{"name":"y","nodeType":"YulIdentifier","src":"12055:1:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12048:3:14"},"nodeType":"YulFunctionCall","src":"12048:9:14"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"12041:3:14"}]},{"body":{"nodeType":"YulBlock","src":"12080:22:14","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"12082:16:14"},"nodeType":"YulFunctionCall","src":"12082:18:14"},"nodeType":"YulExpressionStatement","src":"12082:18:14"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12072:1:14"},{"name":"sum","nodeType":"YulIdentifier","src":"12075:3:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12069:2:14"},"nodeType":"YulFunctionCall","src":"12069:10:14"},"nodeType":"YulIf","src":"12066:36:14"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"12014:1:14","type":""},{"name":"y","nodeType":"YulTypedName","src":"12017:1:14","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"12023:3:14","type":""}],"src":"11983:125:14"},{"body":{"nodeType":"YulBlock","src":"12236:258:14","statements":[{"body":{"nodeType":"YulBlock","src":"12282:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12291:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12294:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12284:6:14"},"nodeType":"YulFunctionCall","src":"12284:12:14"},"nodeType":"YulExpressionStatement","src":"12284:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12257:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"12266:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12253:3:14"},"nodeType":"YulFunctionCall","src":"12253:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"12278:2:14","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12249:3:14"},"nodeType":"YulFunctionCall","src":"12249:32:14"},"nodeType":"YulIf","src":"12246:52:14"},{"nodeType":"YulAssignment","src":"12307:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12323:9:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12317:5:14"},"nodeType":"YulFunctionCall","src":"12317:16:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12307:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"12342:38:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12365:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"12376:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12361:3:14"},"nodeType":"YulFunctionCall","src":"12361:18:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12355:5:14"},"nodeType":"YulFunctionCall","src":"12355:25:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"12346:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12414:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"12389:24:14"},"nodeType":"YulFunctionCall","src":"12389:31:14"},"nodeType":"YulExpressionStatement","src":"12389:31:14"},{"nodeType":"YulAssignment","src":"12429:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"12439:5:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12429:6:14"}]},{"nodeType":"YulAssignment","src":"12453:35:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12473:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"12484:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12469:3:14"},"nodeType":"YulFunctionCall","src":"12469:18:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12463:5:14"},"nodeType":"YulFunctionCall","src":"12463:25:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"12453:6:14"}]}]},"name":"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12186:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12197:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12209:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12217:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12225:6:14","type":""}],"src":"12113:381:14"},{"body":{"nodeType":"YulBlock","src":"12646:124:14","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12669:3:14"},{"name":"value0","nodeType":"YulIdentifier","src":"12674:6:14"},{"name":"value1","nodeType":"YulIdentifier","src":"12682:6:14"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"12656:12:14"},"nodeType":"YulFunctionCall","src":"12656:33:14"},"nodeType":"YulExpressionStatement","src":"12656:33:14"},{"nodeType":"YulVariableDeclaration","src":"12698:26:14","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12712:3:14"},{"name":"value1","nodeType":"YulIdentifier","src":"12717:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12708:3:14"},"nodeType":"YulFunctionCall","src":"12708:16:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12702:2:14","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"12740:2:14"},{"kind":"number","nodeType":"YulLiteral","src":"12744:1:14","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12733:6:14"},"nodeType":"YulFunctionCall","src":"12733:13:14"},"nodeType":"YulExpressionStatement","src":"12733:13:14"},{"nodeType":"YulAssignment","src":"12755:9:14","value":{"name":"_1","nodeType":"YulIdentifier","src":"12762:2:14"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12755:3:14"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12614:3:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12619:6:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12627:6:14","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12638:3:14","type":""}],"src":"12499:271:14"}]},"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 abi_decode_array_address_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset_1), dataEnd)\n value2 := value2_1\n value3 := value3_1\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 panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\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 value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\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 abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\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 value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\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 }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let _3 := shl(5, _1)\n let dst := allocate_memory(add(_3, _2))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, _3), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\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_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), iszero(iszero(value2)))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\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_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"Method all not allowed\")\n tail := add(headStart, 96)\n }\n function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n {\n if gt(startIndex, endIndex) { revert(0, 0) }\n if gt(endIndex, length) { revert(0, 0) }\n offsetOut := add(offset, startIndex)\n lengthOut := sub(endIndex, startIndex)\n }\n function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n {\n let _1 := calldataload(array)\n let _2 := shl(224, 0xffffffff)\n value := and(_1, _2)\n if lt(len, 4)\n {\n value := and(and(_1, shl(shl(3, sub(4, len)), _2)), _2)\n }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := mload(headStart)\n let value := mload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n value2 := mload(add(headStart, 64))\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}","id":14,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100e15760003560e01c8063bc197c811161007f578063dd46706411610059578063dd4670641461028c578063f23a6e61146102ac578063fc0c546a146102d8578063fe9fbb801461031057600080fd5b8063bc197c811461021c578063ce0617ec14610248578063d0ad25351461026c57600080fd5b80631f9838b5116100bb5780631f9838b51461017d5780638da5cb5b146101b85780639e5d4c49146101e5578063a4e2d6341461020557600080fd5b806301ffc9a7146100ed578063039721b114610122578063150b7a021461014457600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b5061010d610108366004610a06565b610330565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004610a83565b610397565b005b34801561015057600080fd5b5061016461015f366004610bbe565b610560565b6040516001600160e01b03199091168152602001610119565b34801561018957600080fd5b5061010d610198366004610c2a565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101c457600080fd5b506101cd6105c8565b6040516001600160a01b039091168152602001610119565b6101f86101f3366004610ca5565b61065e565b6040516101199190610cf5565b34801561021157600080fd5b50600054421061010d565b34801561022857600080fd5b50610164610237366004610db8565b63bc197c8160e01b95945050505050565b34801561025457600080fd5b5061025e60005481565b604051908152602001610119565b34801561027857600080fd5b50610164610287366004610e66565b610715565b34801561029857600080fd5b506101426102a7366004610ea8565b610736565b3480156102b857600080fd5b506101646102c7366004610ec1565b63f23a6e6160e01b95945050505050565b3480156102e457600080fd5b506102ed6107fb565b604080519384526001600160a01b03909216602084015290820152606001610119565b34801561031c57600080fd5b5061010d61032b366004610f2a565b610813565b6000806001600160e01b031983166301ffc9a760e01b148061036257506001600160e01b03198316630271189760e51b145b8061037d57506001600160e01b03198316636faff5f160e01b145b9050801561038e5750600192915050565b50600092915050565b6000544210156103ba57604051636315bfbb60e01b815260040160405180910390fd5b60006103c46105c8565b9050336001600160a01b038216146103ef5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104105760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156105575784848281811061042d5761042d610f47565b90506020020160208101906104429190610f5d565b6001600160a01b03841660009081526001602052604081209089898581811061046d5761046d610f47565b90506020020160208101906104829190610f2a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106104de576104de610f47565b90506020020160208101906104f39190610f2a565b87878581811061050557610505610f47565b905060200201602081019061051a9190610f5d565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a18061054f81610f95565b915050610413565b50505050505050565b60008060008061056e6108fc565b925092509250468314801561058b57506001600160a01b03821633145b801561059657508581145b156105b45760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806105d66108fc565b9250925092504683146105ed576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106569190610fae565b935050505090565b606061066933610813565b6106865760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156106a957604051636315bfbb60e01b815260040160405180910390fd5b82826106b5828261094f565b6106fe5760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b61070a8787878761098a565b979650505050505050565b60006107246004828486610fcb565b61072d91610ff5565b90505b92915050565b61073e6105c8565b6001600160a01b0316336001600160a01b03161461076f5760405163ea8e4eb560e01b815260040160405180910390fd5b60005442101561079257604051636315bfbb60e01b815260040160405180910390fd5b6107a0426301e13380611025565b8111156107c0576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b60008060006108086108fc565b925092509250909192565b60008060006108206108fc565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa15801561086e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108929190610fae565b9050806001600160a01b0316856001600160a01b0316036108b857506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff16156108f157506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c808060200190518101906109439190611038565b93509350935050909192565b60008061095c8484610715565b90506001600160e01b0319811663095ea7b360e01b03610980576000915050610730565b5060019392505050565b60606000856001600160a01b03168585856040516109a9929190611071565b60006040518083038185875af1925050503d80600081146109e6576040519150601f19603f3d011682016040523d82523d6000602084013e6109eb565b606091505b5092509050806109fd57815160208301fd5b50949350505050565b600060208284031215610a1857600080fd5b81356001600160e01b031981168114610a3057600080fd5b9392505050565b60008083601f840112610a4957600080fd5b50813567ffffffffffffffff811115610a6157600080fd5b6020830191508360208260051b8501011115610a7c57600080fd5b9250929050565b60008060008060408587031215610a9957600080fd5b843567ffffffffffffffff80821115610ab157600080fd5b610abd88838901610a37565b90965094506020870135915080821115610ad657600080fd5b50610ae387828801610a37565b95989497509550505050565b6001600160a01b0381168114610b0457600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b4657610b46610b07565b604052919050565b600082601f830112610b5f57600080fd5b813567ffffffffffffffff811115610b7957610b79610b07565b610b8c601f8201601f1916602001610b1d565b818152846020838601011115610ba157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610bd457600080fd5b8435610bdf81610aef565b93506020850135610bef81610aef565b925060408501359150606085013567ffffffffffffffff811115610c1257600080fd5b610c1e87828801610b4e565b91505092959194509250565b60008060408385031215610c3d57600080fd5b8235610c4881610aef565b91506020830135610c5881610aef565b809150509250929050565b60008083601f840112610c7557600080fd5b50813567ffffffffffffffff811115610c8d57600080fd5b602083019150836020828501011115610a7c57600080fd5b60008060008060608587031215610cbb57600080fd5b8435610cc681610aef565b935060208501359250604085013567ffffffffffffffff811115610ce957600080fd5b610ae387828801610c63565b600060208083528351808285015260005b81811015610d2257858101830151858201604001528201610d06565b506000604082860101526040601f19601f8301168501019250505092915050565b600082601f830112610d5457600080fd5b8135602067ffffffffffffffff821115610d7057610d70610b07565b8160051b610d7f828201610b1d565b9283528481018201928281019087851115610d9957600080fd5b83870192505b8483101561070a57823582529183019190830190610d9f565b600080600080600060a08688031215610dd057600080fd5b8535610ddb81610aef565b94506020860135610deb81610aef565b9350604086013567ffffffffffffffff80821115610e0857600080fd5b610e1489838a01610d43565b94506060880135915080821115610e2a57600080fd5b610e3689838a01610d43565b93506080880135915080821115610e4c57600080fd5b50610e5988828901610b4e565b9150509295509295909350565b60008060208385031215610e7957600080fd5b823567ffffffffffffffff811115610e9057600080fd5b610e9c85828601610c63565b90969095509350505050565b600060208284031215610eba57600080fd5b5035919050565b600080600080600060a08688031215610ed957600080fd5b8535610ee481610aef565b94506020860135610ef481610aef565b93506040860135925060608601359150608086013567ffffffffffffffff811115610f1e57600080fd5b610e5988828901610b4e565b600060208284031215610f3c57600080fd5b8135610a3081610aef565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610f6f57600080fd5b81358015158114610a3057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610fa757610fa7610f7f565b5060010190565b600060208284031215610fc057600080fd5b8151610a3081610aef565b60008085851115610fdb57600080fd5b83861115610fe857600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561101d5780818660040360031b1b83161692505b505092915050565b8082018082111561073057610730610f7f565b60008060006060848603121561104d57600080fd5b83519250602084015161105f81610aef565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220dc2989fc2d7d69dcec23fe8447d3a09339d83c7966a9a187c18bb2f80312146164736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE1 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBC197C81 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xDD467064 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xFE9FBB80 EQ PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1F9838B5 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x9E5D4C49 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xE8 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xA06 JUMP JUMPDEST PUSH2 0x330 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 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0xA83 JUMP JUMPDEST PUSH2 0x397 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xBBE JUMP JUMPDEST PUSH2 0x560 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xC2A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x1F8 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA5 JUMP JUMPDEST PUSH2 0x65E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xCF5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x10D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x237 CALLDATASIZE PUSH1 0x4 PUSH2 0xDB8 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25E PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0xE66 JUMP JUMPDEST PUSH2 0x715 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA8 JUMP JUMPDEST PUSH2 0x736 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xEC1 JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2ED PUSH2 0x7FB JUMP JUMPDEST 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 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0xF2A JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x362 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x37D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x38E JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x3BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C4 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x3EF JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x410 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x557 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x42D JUMPI PUSH2 0x42D PUSH2 0xF47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x442 SWAP2 SWAP1 PUSH2 0xF5D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x46D JUMPI PUSH2 0x46D PUSH2 0xF47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x482 SWAP2 SWAP1 PUSH2 0xF2A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x4DE JUMPI PUSH2 0x4DE PUSH2 0xF47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4F3 SWAP2 SWAP1 PUSH2 0xF2A JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x505 JUMPI PUSH2 0x505 PUSH2 0xF47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x51A SWAP2 SWAP1 PUSH2 0xF5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x54F DUP2 PUSH2 0xF95 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x413 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x56E PUSH2 0x8FC JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x58B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x596 JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x5D6 PUSH2 0x8FC JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x5ED JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x632 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 0x656 SWAP2 SWAP1 PUSH2 0xFAE JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x669 CALLER PUSH2 0x813 JUMP JUMPDEST PUSH2 0x686 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 PUSH2 0x6B5 DUP3 DUP3 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x6FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x70A DUP8 DUP8 DUP8 DUP8 PUSH2 0x98A JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x724 PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0xFCB JUMP JUMPDEST PUSH2 0x72D SWAP2 PUSH2 0xFF5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x73E PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x76F JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x792 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7A0 TIMESTAMP PUSH4 0x1E13380 PUSH2 0x1025 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x808 PUSH2 0x8FC JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x820 PUSH2 0x8FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0x86E 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 0x892 SWAP2 SWAP1 PUSH2 0xFAE JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x8B8 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x8F1 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x943 SWAP2 SWAP1 PUSH2 0x1038 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x95C DUP5 DUP5 PUSH2 0x715 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0x980 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x730 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9A9 SWAP3 SWAP2 SWAP1 PUSH2 0x1071 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 0x9E6 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 0x9EB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0x9FD JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xA30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xA7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xAB1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xABD DUP9 DUP4 DUP10 ADD PUSH2 0xA37 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xAD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE3 DUP8 DUP3 DUP9 ADD PUSH2 0xA37 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB46 JUMPI PUSH2 0xB46 PUSH2 0xB07 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB79 JUMPI PUSH2 0xB79 PUSH2 0xB07 JUMP JUMPDEST PUSH2 0xB8C PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xB1D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xBA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xBD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xBDF DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xBEF DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1E DUP8 DUP3 DUP9 ADD PUSH2 0xB4E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xC48 DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xC58 DUP2 PUSH2 0xAEF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xC75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xA7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xCC6 DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAE3 DUP8 DUP3 DUP9 ADD PUSH2 0xC63 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD22 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xD06 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xD70 JUMPI PUSH2 0xD70 PUSH2 0xB07 JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0xD7F DUP3 DUP3 ADD PUSH2 0xB1D JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x70A JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0xD9F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xDD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xDDB DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xDEB DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE14 DUP10 DUP4 DUP11 ADD PUSH2 0xD43 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE36 DUP10 DUP4 DUP11 ADD PUSH2 0xD43 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE59 DUP9 DUP3 DUP10 ADD PUSH2 0xB4E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE9C DUP6 DUP3 DUP7 ADD PUSH2 0xC63 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xED9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xEE4 DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xEF4 DUP2 PUSH2 0xAEF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE59 DUP9 DUP3 DUP10 ADD PUSH2 0xB4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA30 DUP2 PUSH2 0xAEF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xA30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0xFA7 JUMPI PUSH2 0xFA7 PUSH2 0xF7F JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA30 DUP2 PUSH2 0xAEF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0xFDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0xFE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x101D JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x730 JUMPI PUSH2 0x730 PUSH2 0xF7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x104D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x105F DUP2 PUSH2 0xAEF JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0x29 DUP10 0xFC 0x2D PUSH30 0x69DCEC23FE8447D3A09339D83C7966A9A187C18BB2F80312146164736F6C PUSH4 0x43000811 STOP CALLER ","sourceMap":"695:7225:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4907:393;;;;;;;;;;-1:-1:-1;4907:393:6;;;;;:::i;:::-;;:::i;:::-;;;470:14:14;;463:22;445:41;;433:2;418:18;4907:393:6;;;;;;;;2375:528;;;;;;;;;;-1:-1:-1;2375:528:6;;;;;:::i;:::-;;:::i;:::-;;5445:526;;;;;;;;;;-1:-1:-1;5445:526:6;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3559:33:14;;;3541:52;;3529:2;3514:18;5445:526:6;3397:202:14;956:63:6;;;;;;;;;;-1:-1:-1;956:63:6;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;3909:310;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;4161:32:14;;;4143:51;;4131:2;4116:18;3909:310:6;3997:203:14;2020:292:6;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3294:100::-;;;;;;;;;;-1:-1:-1;3335:4:6;3358:11;3372:15;-1:-1:-1;3294:100:6;;6374:244;;;;;;;;;;-1:-1:-1;6374:244:6;;;;;:::i;:::-;-1:-1:-1;;;6374:244:6;;;;;;;;862:26;;;;;;;;;;;;;;;;;;;7664:25:14;;;7652:2;7637:18;862:26:6;7518:177:14;7662:118:6;;;;;;;;;;-1:-1:-1;7662:118:6;;;;;:::i;:::-;;:::i;2966:249::-;;;;;;;;;;-1:-1:-1;2966:249:6;;;;;:::i;:::-;;:::i;6061:216::-;;;;;;;;;;-1:-1:-1;6061:216:6;;;;;:::i;:::-;-1:-1:-1;;;6061:216:6;;;;;;;;3526:220;;;;;;;;;;;;;:::i;:::-;;;;9240:25:14;;;-1:-1:-1;;;;;9301:32:14;;;9296:2;9281:18;;9274:60;9350:18;;;9343:34;9228:2;9213:18;3526:220:6;9038:345:14;4290:480:6;;;;;;;;;;-1:-1:-1;4290:480:6;;;;;:::i;:::-;;:::i;4907:393::-;5017:4;;-1:-1:-1;;;;;;5059:40:6;;-1:-1:-1;;;5059:40:6;;:105;;-1:-1:-1;;;;;;;5115:49:6;;-1:-1:-1;;;5115:49:6;5059:105;:169;;;-1:-1:-1;;;;;;;5180:48:6;;-1:-1:-1;;;5180:48:6;5059:169;5037:191;;5243:14;5239:31;;;-1:-1:-1;5266:4:6;;4907:393;-1:-1:-1;;4907:393:6:o;5239:31::-;-1:-1:-1;5288:5:6;;4907:393;-1:-1:-1;;4907:393:6:o;2375:528::-;3335:4;3358:11;3372:15;-1:-1:-1;1713:38:6;;;1736:15;;-1:-1:-1;;;1736:15:6;;;;;;;;;;;1713:38;2511:14:::1;2528:7;:5;:7::i;:::-;2511:24:::0;-1:-1:-1;2549:10:6::1;-1:-1:-1::0;;;;;2549:20:6;::::1;;2545:48;;2578:15;;-1:-1:-1::0;;;2578:15:6::1;;;;;;;;;;;2545:48;2621:7:::0;2650:29;;::::1;2646:56;;2688:14;;-1:-1:-1::0;;;2688:14:6::1;;;;;;;;;;;2646:56;2718:9;2713:184;2737:6;2733:1;:10;2713:184;;;2798:12;;2811:1;2798:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2764:19:6;::::1;;::::0;;;:11:::1;:19;::::0;;;;;2784:7;;2792:1;2784:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2764:31:6::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;2764:31:6;:49;;-1:-1:-1;;2764:49:6::1;::::0;::::1;;::::0;;;::::1;::::0;;2832:54:::1;2850:6:::0;2858:7;;2866:1;2858:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2870:12;;2883:1;2870:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2832:54;::::0;;-1:-1:-1;;;;;10302:15:14;;;10284:34;;10354:15;;;;10349:2;10334:18;;10327:43;10413:14;10406:22;10386:18;;;10379:50;10234:2;10219:18;2832:54:6::1;;;;;;;2745:3:::0;::::1;::::0;::::1;:::i;:::-;;;;2713:184;;;;2501:402;;2375:528:::0;;;;:::o;5445:526::-;5596:6;5628:15;5657:21;5692:15;5720:25;:23;:25::i;:::-;5614:131;;;;;;5784:13;5773:7;:24;:67;;;;-1:-1:-1;;;;;;5813:27:6;;5830:10;5813:27;5773:67;:109;;;;;5867:15;5856:7;:26;5773:109;5756:160;;;5900:16;;-1:-1:-1;;;5900:16:6;;;;;;;;;;;5756:160;-1:-1:-1;;;;5934:30:6;5445:526;-1:-1:-1;;;;;;;5445:526:6:o;3909:310::-;3947:7;3980:15;4009:21;4044:15;4072:25;:23;:25::i;:::-;3966:131;;;;;;4123:13;4112:7;:24;4108:47;;4153:1;4138:17;;;;;3909:310;:::o;4108:47::-;4173:39;;-1:-1:-1;;;4173:39:6;;;;;7664:25:14;;;-1:-1:-1;;;;;4173:30:6;;;;;7637:18:14;;4173:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4166:46;;;;;3909:310;:::o;2020:292::-;2197:12;1550:24;1563:10;1550:12;:24::i;:::-;1545:53;;1583:15;;-1:-1:-1;;;1583:15:6;;;;;;;;;;;1545:53;3335:4;3358:11;3372:15;-1:-1:-1;1713:38:6::1;;;1736:15;;-1:-1:-1::0;;;1736:15:6::1;;;;;;;;;;;1713:38;2182:4:::2;;7853:20;7867:5;;7853:13;:20::i;:::-;7845:55;;;::::0;-1:-1:-1;;;7845:55:6;;11170:2:14;7845:55:6::2;::::0;::::2;11152:21:14::0;11209:2;11189:18;;;11182:30;-1:-1:-1;;;11228:18:14;;;11221:52;11290:18;;7845:55:6::2;;;;;;;;2283:22:::3;2289:2;2293:5;2300:4;;2283:5;:22::i;:::-;2276:29:::0;2020:292;-1:-1:-1;;;;;;;2020:292:6:o;7662:118::-;7731:6;7763:9;7770:1;7731:6;7763:5;;:9;:::i;:::-;7756:17;;;:::i;:::-;7749:24;;7662:118;;;;;:::o;2966:249::-;1378:7;:5;:7::i;:::-;-1:-1:-1;;;;;1364:21:6;:10;-1:-1:-1;;;;;1364:21:6;;1360:49;;1394:15;;-1:-1:-1;;;1394:15:6;;;;;;;;;;;1360:49;3335:4;3358:11;3372:15;-1:-1:-1;1713:38:6::1;;;1736:15;;-1:-1:-1::0;;;1736:15:6::1;;;;;;;;;;;1713:38;3063:26:::2;:15;3081:8;3063:26;:::i;:::-;3048:12;:41;3044:86;;;3110:20;;-1:-1:-1::0;;;3110:20:6::2;;;;;;;;;;;3044:86;3141:11;:26:::0;;;3183:25:::2;::::0;7664::14;;;3183::6::2;::::0;7652:2:14;7637:18;3183:25:6::2;;;;;;;2966:249:::0;:::o;3526:220::-;3603:15;3632:21;3667:15;3714:25;:23;:25::i;:::-;3707:32;;;;;;3526:220;;;:::o;4290:480::-;4349:4;4393:21;4428:15;4456:25;:23;:25::i;:::-;4508:39;;-1:-1:-1;;;4508:39:6;;;;;7664:25:14;;;4365:116:6;;-1:-1:-1;4365:116:6;-1:-1:-1;4491:14:6;;-1:-1:-1;;;;;;4508:30:6;;;;;7637:18:14;;4508:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4491:56;;4605:6;-1:-1:-1;;;;;4595:16:6;:6;-1:-1:-1;;;;;4595:16:6;;4591:33;;-1:-1:-1;4620:4:6;;4290:480;-1:-1:-1;;;;4290:480:6:o;4591:33::-;-1:-1:-1;;;;;4700:19:6;;;;;;;:11;:19;;;;;;;;:27;;;;;;;;;;;;4696:44;;;-1:-1:-1;4736:4:6;;4290:480;-1:-1:-1;;;;4290:480:6:o;4696:44::-;-1:-1:-1;4758:5:6;;4290:480;-1:-1:-1;;;;4290:480:6:o;90:406:13:-;263:15;;;273:4;263:15;;;;;;;;;167:7;;;;;;;;263:15;;;;;;;;;;;-1:-1:-1;263:15:13;241:37;;410:4;404;397;389:6;385:17;374:9;362:53;453:6;442:47;;;;;;;;;;;;:::i;:::-;435:54;;;;;;;90:406;;;:::o;7397:259:6:-;7460:4;7476:16;7495:23;7512:5;;7495:16;:23::i;:::-;7476:42;-1:-1:-1;;;;;;;7566:23:6;;-1:-1:-1;;;7566:23:6;7562:66;;7612:5;7605:12;;;;;7562:66;-1:-1:-1;7645:4:6;;7397:259;-1:-1:-1;;;7397:259:6:o;6663:345::-;6774:19;6805:12;6847:2;-1:-1:-1;;;;;6847:7:6;6862:5;6869:4;;6847:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6827:47:6;-1:-1:-1;6827:47:6;-1:-1:-1;6827:47:6;6885:117;;6970:6;6964:13;6959:2;6951:6;6947:15;6940:38;6885:117;6795:213;6663:345;;;;;;:::o;14:286:14:-;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:14;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:14:o;497:367::-;560:8;570:6;624:3;617:4;609:6;605:17;601:27;591:55;;642:1;639;632:12;591:55;-1:-1:-1;665:20:14;;708:18;697:30;;694:50;;;740:1;737;730:12;694:50;777:4;769:6;765:17;753:29;;837:3;830:4;820:6;817:1;813:14;805:6;801:27;797:38;794:47;791:67;;;854:1;851;844:12;791:67;497:367;;;;;:::o;869:770::-;988:6;996;1004;1012;1065:2;1053:9;1044:7;1040:23;1036:32;1033:52;;;1081:1;1078;1071:12;1033:52;1121:9;1108:23;1150:18;1191:2;1183:6;1180:14;1177:34;;;1207:1;1204;1197:12;1177:34;1246:70;1308:7;1299:6;1288:9;1284:22;1246:70;:::i;:::-;1335:8;;-1:-1:-1;1220:96:14;-1:-1:-1;1423:2:14;1408:18;;1395:32;;-1:-1:-1;1439:16:14;;;1436:36;;;1468:1;1465;1458:12;1436:36;;1507:72;1571:7;1560:8;1549:9;1545:24;1507:72;:::i;:::-;869:770;;;;-1:-1:-1;1598:8:14;-1:-1:-1;;;;869:770:14:o;1644:131::-;-1:-1:-1;;;;;1719:31:14;;1709:42;;1699:70;;1765:1;1762;1755:12;1699:70;1644:131;:::o;1780:127::-;1841:10;1836:3;1832:20;1829:1;1822:31;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;1912:275;1983:2;1977:9;2048:2;2029:13;;-1:-1:-1;;2025:27:14;2013:40;;2083:18;2068:34;;2104:22;;;2065:62;2062:88;;;2130:18;;:::i;:::-;2166:2;2159:22;1912:275;;-1:-1:-1;1912:275:14:o;2192:530::-;2234:5;2287:3;2280:4;2272:6;2268:17;2264:27;2254:55;;2305:1;2302;2295:12;2254:55;2341:6;2328:20;2367:18;2363:2;2360:26;2357:52;;;2389:18;;:::i;:::-;2433:55;2476:2;2457:13;;-1:-1:-1;;2453:27:14;2482:4;2449:38;2433:55;:::i;:::-;2513:2;2504:7;2497:19;2559:3;2552:4;2547:2;2539:6;2535:15;2531:26;2528:35;2525:55;;;2576:1;2573;2566:12;2525:55;2641:2;2634:4;2626:6;2622:17;2615:4;2606:7;2602:18;2589:55;2689:1;2664:16;;;2682:4;2660:27;2653:38;;;;2668:7;2192:530;-1:-1:-1;;;2192:530:14:o;2727:665::-;2822:6;2830;2838;2846;2899:3;2887:9;2878:7;2874:23;2870:33;2867:53;;;2916:1;2913;2906:12;2867:53;2955:9;2942:23;2974:31;2999:5;2974:31;:::i;:::-;3024:5;-1:-1:-1;3081:2:14;3066:18;;3053:32;3094:33;3053:32;3094:33;:::i;:::-;3146:7;-1:-1:-1;3200:2:14;3185:18;;3172:32;;-1:-1:-1;3255:2:14;3240:18;;3227:32;3282:18;3271:30;;3268:50;;;3314:1;3311;3304:12;3268:50;3337:49;3378:7;3369:6;3358:9;3354:22;3337:49;:::i;:::-;3327:59;;;2727:665;;;;;;;:::o;3604:388::-;3672:6;3680;3733:2;3721:9;3712:7;3708:23;3704:32;3701:52;;;3749:1;3746;3739:12;3701:52;3788:9;3775:23;3807:31;3832:5;3807:31;:::i;:::-;3857:5;-1:-1:-1;3914:2:14;3899:18;;3886:32;3927:33;3886:32;3927:33;:::i;:::-;3979:7;3969:17;;;3604:388;;;;;:::o;4205:347::-;4256:8;4266:6;4320:3;4313:4;4305:6;4301:17;4297:27;4287:55;;4338:1;4335;4328:12;4287:55;-1:-1:-1;4361:20:14;;4404:18;4393:30;;4390:50;;;4436:1;4433;4426:12;4390:50;4473:4;4465:6;4461:17;4449:29;;4525:3;4518:4;4509:6;4501;4497:19;4493:30;4490:39;4487:59;;;4542:1;4539;4532:12;4557:612;4645:6;4653;4661;4669;4722:2;4710:9;4701:7;4697:23;4693:32;4690:52;;;4738:1;4735;4728:12;4690:52;4777:9;4764:23;4796:31;4821:5;4796:31;:::i;:::-;4846:5;-1:-1:-1;4898:2:14;4883:18;;4870:32;;-1:-1:-1;4953:2:14;4938:18;;4925:32;4980:18;4969:30;;4966:50;;;5012:1;5009;5002:12;4966:50;5051:58;5101:7;5092:6;5081:9;5077:22;5051:58;:::i;5174:546::-;5284:4;5313:2;5342;5331:9;5324:21;5374:6;5368:13;5417:6;5412:2;5401:9;5397:18;5390:34;5442:1;5452:140;5466:6;5463:1;5460:13;5452:140;;;5561:14;;;5557:23;;5551:30;5527:17;;;5546:2;5523:26;5516:66;5481:10;;5452:140;;;5456:3;5641:1;5636:2;5627:6;5616:9;5612:22;5608:31;5601:42;5711:2;5704;5700:7;5695:2;5687:6;5683:15;5679:29;5668:9;5664:45;5660:54;5652:62;;;;5174:546;;;;:::o;5725:712::-;5779:5;5832:3;5825:4;5817:6;5813:17;5809:27;5799:55;;5850:1;5847;5840:12;5799:55;5886:6;5873:20;5912:4;5935:18;5931:2;5928:26;5925:52;;;5957:18;;:::i;:::-;6003:2;6000:1;5996:10;6026:28;6050:2;6046;6042:11;6026:28;:::i;:::-;6088:15;;;6158;;;6154:24;;;6119:12;;;;6190:15;;;6187:35;;;6218:1;6215;6208:12;6187:35;6254:2;6246:6;6242:15;6231:26;;6266:142;6282:6;6277:3;6274:15;6266:142;;;6348:17;;6336:30;;6299:12;;;;6386;;;;6266:142;;6442:1071;6596:6;6604;6612;6620;6628;6681:3;6669:9;6660:7;6656:23;6652:33;6649:53;;;6698:1;6695;6688:12;6649:53;6737:9;6724:23;6756:31;6781:5;6756:31;:::i;:::-;6806:5;-1:-1:-1;6863:2:14;6848:18;;6835:32;6876:33;6835:32;6876:33;:::i;:::-;6928:7;-1:-1:-1;6986:2:14;6971:18;;6958:32;7009:18;7039:14;;;7036:34;;;7066:1;7063;7056:12;7036:34;7089:61;7142:7;7133:6;7122:9;7118:22;7089:61;:::i;:::-;7079:71;;7203:2;7192:9;7188:18;7175:32;7159:48;;7232:2;7222:8;7219:16;7216:36;;;7248:1;7245;7238:12;7216:36;7271:63;7326:7;7315:8;7304:9;7300:24;7271:63;:::i;:::-;7261:73;;7387:3;7376:9;7372:19;7359:33;7343:49;;7417:2;7407:8;7404:16;7401:36;;;7433:1;7430;7423:12;7401:36;;7456:51;7499:7;7488:8;7477:9;7473:24;7456:51;:::i;:::-;7446:61;;;6442:1071;;;;;;;;:::o;7700:409::-;7770:6;7778;7831:2;7819:9;7810:7;7806:23;7802:32;7799:52;;;7847:1;7844;7837:12;7799:52;7887:9;7874:23;7920:18;7912:6;7909:30;7906:50;;;7952:1;7949;7942:12;7906:50;7991:58;8041:7;8032:6;8021:9;8017:22;7991:58;:::i;:::-;8068:8;;7965:84;;-1:-1:-1;7700:409:14;-1:-1:-1;;;;7700:409:14:o;8114:180::-;8173:6;8226:2;8214:9;8205:7;8201:23;8197:32;8194:52;;;8242:1;8239;8232:12;8194:52;-1:-1:-1;8265:23:14;;8114:180;-1:-1:-1;8114:180:14:o;8299:734::-;8403:6;8411;8419;8427;8435;8488:3;8476:9;8467:7;8463:23;8459:33;8456:53;;;8505:1;8502;8495:12;8456:53;8544:9;8531:23;8563:31;8588:5;8563:31;:::i;:::-;8613:5;-1:-1:-1;8670:2:14;8655:18;;8642:32;8683:33;8642:32;8683:33;:::i;:::-;8735:7;-1:-1:-1;8789:2:14;8774:18;;8761:32;;-1:-1:-1;8840:2:14;8825:18;;8812:32;;-1:-1:-1;8895:3:14;8880:19;;8867:33;8923:18;8912:30;;8909:50;;;8955:1;8952;8945:12;8909:50;8978:49;9019:7;9010:6;8999:9;8995:22;8978:49;:::i;9388:247::-;9447:6;9500:2;9488:9;9479:7;9475:23;9471:32;9468:52;;;9516:1;9513;9506:12;9468:52;9555:9;9542:23;9574:31;9599:5;9574:31;:::i;9640:127::-;9701:10;9696:3;9692:20;9689:1;9682:31;9732:4;9729:1;9722:15;9756:4;9753:1;9746:15;9772:273;9828:6;9881:2;9869:9;9860:7;9856:23;9852:32;9849:52;;;9897:1;9894;9887:12;9849:52;9936:9;9923:23;9989:5;9982:13;9975:21;9968:5;9965:32;9955:60;;10011:1;10008;10001:12;10440:127;10501:10;10496:3;10492:20;10489:1;10482:31;10532:4;10529:1;10522:15;10556:4;10553:1;10546:15;10572:135;10611:3;10632:17;;;10629:43;;10652:18;;:::i;:::-;-1:-1:-1;10699:1:14;10688:13;;10572:135::o;10712:251::-;10782:6;10835:2;10823:9;10814:7;10810:23;10806:32;10803:52;;;10851:1;10848;10841:12;10803:52;10883:9;10877:16;10902:31;10927:5;10902:31;:::i;11319:331::-;11424:9;11435;11477:8;11465:10;11462:24;11459:44;;;11499:1;11496;11489:12;11459:44;11528:6;11518:8;11515:20;11512:40;;;11548:1;11545;11538:12;11512:40;-1:-1:-1;;11574:23:14;;;11619:25;;;;;-1:-1:-1;11319:331:14:o;11655:323::-;-1:-1:-1;;;;;;11775:19:14;;11851:11;;;;11882:1;11874:10;;11871:101;;;11959:2;11953;11946:3;11943:1;11939:11;11936:1;11932:19;11928:28;11924:2;11920:37;11916:46;11907:55;;11871:101;;;11655:323;;;;:::o;11983:125::-;12048:9;;;12069:10;;;12066:36;;;12082:18;;:::i;12113:381::-;12209:6;12217;12225;12278:2;12266:9;12257:7;12253:23;12249:32;12246:52;;;12294:1;12291;12284:12;12246:52;12323:9;12317:16;12307:26;;12376:2;12365:9;12361:18;12355:25;12389:31;12414:5;12389:31;:::i;:::-;12439:5;12429:15;;;12484:2;12473:9;12469:18;12463:25;12453:35;;12113:381;;;;;:::o;12499:271::-;12682:6;12674;12669:3;12656:33;12638:3;12708:16;;12733:13;;;12708:16;12499:271;-1:-1:-1;12499:271:14:o"},"gasEstimates":{"creation":{"codeDepositCost":"855800","executionCost":"890","totalCost":"856690"},"external":{"executeCall(address,uint256,bytes)":"infinite","isAuthorized(address)":"infinite","isLocked()":"2381","lock(uint256)":"infinite","lockedUntil()":"2340","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"infinite","onERC1155Received(address,address,uint256,uint256,bytes)":"infinite","onERC721Received(address,address,uint256,bytes)":"infinite","owner()":"infinite","parseFirst4Bytes(bytes)":"832","permissions(address,address)":"infinite","setPermissions(address[],bool[])":"infinite","supportsInterface(bytes4)":"538","token()":"infinite"},"internal":{"_call(address,uint256,bytes calldata)":"infinite","_callStatic(address,bytes calldata)":"infinite","allowedMethod(bytes calldata)":"infinite"}},"methodIdentifiers":{"executeCall(address,uint256,bytes)":"9e5d4c49","isAuthorized(address)":"fe9fbb80","isLocked()":"a4e2d634","lock(uint256)":"dd467064","lockedUntil()":"ce0617ec","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","owner()":"8da5cb5b","parseFirst4Bytes(bytes)":"d0ad2535","permissions(address,address)":"1f9838b5","setPermissions(address[],bool[])":"039721b1","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccountLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxLockTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipCycle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockedUntil\",\"type\":\"uint256\"}],\"name\":\"LockUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"OverrideUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasPermission\",\"type\":\"bool\"}],\"name\":\"PermissionUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isAuthorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_lockedUntil\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockedUntil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"receivedTokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"parseFirst4Bytes\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"permissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"callers\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"_permissions\",\"type\":\"bool[]\"}],\"name\":\"setPermissions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"kind\":\"dev\",\"methods\":{\"executeCall(address,uint256,bytes)\":{\"details\":\"executes a low-level call against an account if the caller is authorized to make calls\"},\"isAuthorized(address)\":{\"details\":\"Returns the authorization status for a given caller\"},\"isLocked()\":{\"details\":\"returns the current lock status of the account as a boolean\"},\"lock(uint256)\":{\"details\":\"locks the account until a certain timestamp\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Allows ERC-1155 token batches to be received. This function can be overriden.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Allows ERC-1155 tokens to be received. This function can be overriden.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden.\"},\"owner()\":{\"details\":\"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account.\"},\"setPermissions(address[],bool[])\":{\"details\":\"grants a given caller execution permissions\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if a given interfaceId is supported by this account. This method can be extended by an override.\"},\"token()\":{\"details\":\"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account.\"}},\"stateVariables\":{\"lockedUntil\":{\"details\":\"timestamp at which this account will be unlocked\"},\"permissions\":{\"details\":\"mapping from owner => caller => has permissions\"}},\"title\":\"A smart contract account owned by a single ERC721 token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Account.sol\":\"Account\"},\"evmVersion\":\"london\",\"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 v4.4.1 (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n *\\n * _Available since v4.1._\\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 _data\\n */\\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\nimport \\\"./interfaces/IERC6551Account.sol\\\";\\nimport \\\"./lib/ERC6551AccountLib.sol\\\";\\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/token/ERC1155/IERC1155Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/interfaces/IERC1271.sol\\\";\\n\\nerror NotAuthorized();\\nerror InvalidInput();\\nerror AccountLocked();\\nerror ExceedsMaxLockTime();\\nerror UntrustedImplementation();\\nerror OwnershipCycle();\\n\\n/**\\n * @title A smart contract account owned by a single ERC721 token\\n */\\ncontract Account is\\n IERC165,\\n // IERC6551Account,\\n IERC721Receiver,\\n IERC1155Receiver\\n{\\n /// @dev timestamp at which this account will be unlocked\\n uint256 public lockedUntil;\\n\\n /// @dev mapping from owner => caller => has permissions\\n mapping(address => mapping(address => bool)) public permissions;\\n\\n event OverrideUpdated(\\n address owner,\\n bytes4 selector,\\n address implementation\\n );\\n\\n event PermissionUpdated(address owner, address caller, bool hasPermission);\\n\\n event LockUpdated(uint256 lockedUntil);\\n\\n /// @dev reverts if caller is not the owner of the account\\n modifier onlyOwner() {\\n if (msg.sender != owner()) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if caller is not authorized to execute on this account\\n modifier onlyAuthorized() {\\n if (!isAuthorized(msg.sender)) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if this account is currently locked\\n modifier onlyUnlocked() {\\n if (isLocked()) revert AccountLocked();\\n _;\\n }\\n\\n constructor() {}\\n\\n /// @dev allows eth transfers by default, but allows account owner to override\\n receive() external payable {\\n }\\n\\n /// @dev executes a low-level call against an account if the caller is authorized to make calls\\n function executeCall(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) external payable onlyAuthorized onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) {\\n // emit TransactionExecuted(to, value, data);\\n\\n return _call(to, value, data);\\n }\\n\\n /// @dev grants a given caller execution permissions\\n function setPermissions(\\n address[] calldata callers,\\n bool[] calldata _permissions\\n ) external onlyUnlocked {\\n address _owner = owner();\\n if (msg.sender != _owner) revert NotAuthorized();\\n\\n uint256 length = callers.length;\\n\\n if (_permissions.length != length) revert InvalidInput();\\n\\n for (uint256 i = 0; i < length; i++) {\\n permissions[_owner][callers[i]] = _permissions[i];\\n emit PermissionUpdated(_owner, callers[i], _permissions[i]);\\n }\\n }\\n\\n /// @dev locks the account until a certain timestamp\\n function lock(uint256 _lockedUntil) external onlyOwner onlyUnlocked {\\n if (_lockedUntil > block.timestamp + 365 days)\\n revert ExceedsMaxLockTime();\\n\\n lockedUntil = _lockedUntil;\\n\\n emit LockUpdated(_lockedUntil);\\n }\\n\\n /// @dev returns the current lock status of the account as a boolean\\n function isLocked() public view returns (bool) {\\n return lockedUntil > block.timestamp;\\n }\\n\\n /// @dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\\n /// owns this account.\\n function token()\\n external\\n view\\n returns (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n )\\n {\\n return ERC6551AccountLib.token();\\n }\\n\\n /// @dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\\n /// of the token has full permissions on the account.\\n function owner() public view returns (address) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (chainId != block.chainid) return address(0);\\n\\n return IERC721(tokenContract).ownerOf(tokenId);\\n }\\n\\n /// @dev Returns the authorization status for a given caller\\n function isAuthorized(address caller) public view returns (bool) {\\n (\\n ,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n address _owner = IERC721(tokenContract).ownerOf(tokenId);\\n\\n // authorize token owner\\n if (caller == _owner) return true;\\n\\n // authorize caller if owner has granted permissions\\n if (permissions[_owner][caller]) return true;\\n\\n return false;\\n }\\n\\n /// @dev Returns true if a given interfaceId is supported by this account. This method can be\\n /// extended by an override.\\n function supportsInterface(bytes4 interfaceId)\\n public\\n pure \\n override\\n returns (bool)\\n {\\n bool defaultSupport = interfaceId == type(IERC165).interfaceId ||\\n interfaceId == type(IERC1155Receiver).interfaceId ||\\n interfaceId == type(IERC6551Account).interfaceId;\\n\\n if (defaultSupport) return true;\\n\\n return false;\\n }\\n\\n /// @dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\\n /// This function can be overriden.\\n function onERC721Received(\\n address,\\n address,\\n uint256 receivedTokenId,\\n bytes memory\\n ) public view override returns (bytes4) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (\\n chainId == block.chainid &&\\n tokenContract == msg.sender &&\\n tokenId == receivedTokenId\\n ) revert OwnershipCycle();\\n\\n return this.onERC721Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 tokens to be received. This function can be overriden.\\n function onERC1155Received(\\n address,\\n address,\\n uint256,\\n uint256,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 token batches to be received. This function can be overriden.\\n function onERC1155BatchReceived(\\n address,\\n address,\\n uint256[] memory,\\n uint256[] memory,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155BatchReceived.selector;\\n }\\n\\n /// @dev Executes a low-level call\\n function _call(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) internal returns (bytes memory result) {\\n bool success;\\n (success, result) = to.call{value: value}(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n /// @dev Executes a low-level static call\\n function _callStatic(address to, bytes calldata data)\\n internal\\n view\\n returns (bytes memory result)\\n {\\n bool success;\\n (success, result) = to.staticcall(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n function allowedMethod(bytes calldata _data) internal returns (bool) {\\n bytes4 signature = parseFirst4Bytes(_data);\\n // approve > 0x095ea7b3\\n\\n if (signature == 0x095ea7b3) {\\n return false;\\n }\\n\\n return true;\\n }\\n\\n function parseFirst4Bytes(bytes calldata _data) public pure returns (bytes4) {\\n return bytes4(_data[:4]);\\n }\\n\\n modifier onlyAllowedMethod(bytes calldata _data) {\\n require(allowedMethod(_data), \\\"Method all not allowed\\\");\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x6a5070fe0c7efe0c61871d07123e50ac4b37f7eb450d2faccf2408b78ab8c23a\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\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 chain 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\\n\",\"keccak256\":\"0x9972b9769e138d0f5855d5f0990dc9942977088e6fc5a9b1e289431f8e213339\",\"license\":\"UNLICENSED\"},\"contracts/lib/ERC6551AccountLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nlibrary ERC6551AccountLib {\\n function token()\\n internal\\n view\\n returns (\\n uint256,\\n address,\\n uint256\\n )\\n {\\n bytes memory footer = new bytes(0x60);\\n\\n assembly {\\n // copy 0x60 bytes from end of footer\\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\\n }\\n\\n return abi.decode(footer, (uint256, address, uint256));\\n }\\n\\n function salt() internal view returns (uint256) {\\n bytes memory footer = new bytes(0x20);\\n\\n assembly {\\n // copy 0x20 bytes from beginning of footer\\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\\n }\\n\\n return abi.decode(footer, (uint256));\\n }\\n}\\n\",\"keccak256\":\"0xf7a8eb3b4fb63068eb8ed2a1a129e4676af842541f43c1a1dc96a9f295060c45\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":309,"contract":"contracts/Account.sol:Account","label":"lockedUntil","offset":0,"slot":"0","type":"t_uint256"},{"astId":316,"contract":"contracts/Account.sol:Account","label":"permissions","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/AccountRegistryBridge.sol":{"AccountRegistryBridge":{"abi":[{"inputs":[],"name":"IMPLEMENTATION","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"account","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"createAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061029f806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806306433b1b14610051578063192df655146100885780633a4741bd1461009b5780635fbfb9cf146100b6575b600080fd5b61006c7302101dfb77fde026414827fdc604ddaf224f092181565b6040516001600160a01b03909116815260200160405180910390f35b61006c610096366004610220565b6100c9565b61006c732d25602551487c3f3354dd80d76d54383a24335881565b61006c6100c4366004610220565b61017d565b60405163246a002160e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201526000602482018190524660448301526001600160a01b038416606483015260848201839052907302101dfb77fde026414827fdc604ddaf224f09219063246a00219060a401602060405180830381865afa158015610152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610176919061024c565b9392505050565b604051638a54c52f60e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201526000602482018190524660448301526001600160a01b038416606483015260848201839052907302101dfb77fde026414827fdc604ddaf224f092190638a54c52f9060a4016020604051808303816000875af1158015610152573d6000803e3d6000fd5b6001600160a01b038116811461021d57600080fd5b50565b6000806040838503121561023357600080fd5b823561023e81610208565b946020939093013593505050565b60006020828403121561025e57600080fd5b81516101768161020856fea264697066735822122076764d0e6825b0a387a421cff599da2214256000f08c283c24ee97998cb6a4c764736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6433B1B EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x192DF655 EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x3A4741BD EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x5FBFB9CF EQ PUSH2 0xB6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6C PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x96 CALLDATASIZE PUSH1 0x4 PUSH2 0x220 JUMP JUMPDEST PUSH2 0xC9 JUMP JUMPDEST PUSH2 0x6C PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 DUP2 JUMP JUMPDEST PUSH2 0x6C PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x220 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x246A0021 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE CHAINID PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 SWAP1 PUSH4 0x246A0021 SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x152 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 0x176 SWAP2 SWAP1 PUSH2 0x24C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8A54C52F PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE CHAINID PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 SWAP1 PUSH4 0x8A54C52F SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x152 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x23E DUP2 PUSH2 0x208 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x176 DUP2 PUSH2 0x208 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH23 0x764D0E6825B0A387A421CFF599DA2214256000F08C283C 0x24 0xEE SWAP8 SWAP10 DUP13 0xB6 LOG4 0xC7 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"170:830:7:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@IMPLEMENTATION_869":{"entryPoint":null,"id":869,"parameterSlots":0,"returnSlots":0},"@REGISTRY_866":{"entryPoint":null,"id":866,"parameterSlots":0,"returnSlots":0},"@account_913":{"entryPoint":201,"id":913,"parameterSlots":2,"returnSlots":1},"@createAccount_891":{"entryPoint":381,"id":891,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":588,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":544,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_t_uint256_t_address_t_uint256__to_t_address_t_bytes32_t_uint256_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"validator_revert_address":{"entryPoint":520,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1514:14","statements":[{"nodeType":"YulBlock","src":"6:3:14","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:102:14","statements":[{"nodeType":"YulAssignment","src":"125:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:14"},"nodeType":"YulFunctionCall","src":"133:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:14"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"182:6:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"198:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"203:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"194:3:14"},"nodeType":"YulFunctionCall","src":"194:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"207:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"190:3:14"},"nodeType":"YulFunctionCall","src":"190:19:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"178:3:14"},"nodeType":"YulFunctionCall","src":"178:32:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:14"},"nodeType":"YulFunctionCall","src":"160:51:14"},"nodeType":"YulExpressionStatement","src":"160:51:14"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:14","type":""}],"src":"14:203:14"},{"body":{"nodeType":"YulBlock","src":"267:86:14","statements":[{"body":{"nodeType":"YulBlock","src":"331:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"340:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"343:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"333:6:14"},"nodeType":"YulFunctionCall","src":"333:12:14"},"nodeType":"YulExpressionStatement","src":"333:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"290:5:14"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"301:5:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"316:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"321:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"312:3:14"},"nodeType":"YulFunctionCall","src":"312:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"325:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"308:3:14"},"nodeType":"YulFunctionCall","src":"308:19:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"297:3:14"},"nodeType":"YulFunctionCall","src":"297:31:14"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"287:2:14"},"nodeType":"YulFunctionCall","src":"287:42:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"280:6:14"},"nodeType":"YulFunctionCall","src":"280:50:14"},"nodeType":"YulIf","src":"277:70:14"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"256:5:14","type":""}],"src":"222:131:14"},{"body":{"nodeType":"YulBlock","src":"445:228:14","statements":[{"body":{"nodeType":"YulBlock","src":"491:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"500:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"503:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"493:6:14"},"nodeType":"YulFunctionCall","src":"493:12:14"},"nodeType":"YulExpressionStatement","src":"493:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"466:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"475:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"462:3:14"},"nodeType":"YulFunctionCall","src":"462:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"487:2:14","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"458:3:14"},"nodeType":"YulFunctionCall","src":"458:32:14"},"nodeType":"YulIf","src":"455:52:14"},{"nodeType":"YulVariableDeclaration","src":"516:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"542:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"529:12:14"},"nodeType":"YulFunctionCall","src":"529:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"520:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"586:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"561:24:14"},"nodeType":"YulFunctionCall","src":"561:31:14"},"nodeType":"YulExpressionStatement","src":"561:31:14"},{"nodeType":"YulAssignment","src":"601:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"611:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"601:6:14"}]},{"nodeType":"YulAssignment","src":"625:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"652:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"663:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"648:3:14"},"nodeType":"YulFunctionCall","src":"648:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"635:12:14"},"nodeType":"YulFunctionCall","src":"635:32:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"625:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"403:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"414:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"426:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"434:6:14","type":""}],"src":"358:315:14"},{"body":{"nodeType":"YulBlock","src":"954:302:14","statements":[{"nodeType":"YulAssignment","src":"964:27:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"976:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"987:3:14","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"972:3:14"},"nodeType":"YulFunctionCall","src":"972:19:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"964:4:14"}]},{"nodeType":"YulVariableDeclaration","src":"1000:29:14","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1018:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1023:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1014:3:14"},"nodeType":"YulFunctionCall","src":"1014:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"1027:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1010:3:14"},"nodeType":"YulFunctionCall","src":"1010:19:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1004:2:14","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1045:9:14"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1060:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"1068:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1056:3:14"},"nodeType":"YulFunctionCall","src":"1056:15:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1038:6:14"},"nodeType":"YulFunctionCall","src":"1038:34:14"},"nodeType":"YulExpressionStatement","src":"1038:34:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1092:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"1103:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1088:3:14"},"nodeType":"YulFunctionCall","src":"1088:18:14"},{"hexValue":"","kind":"string","nodeType":"YulLiteral","src":"1108:2:14","type":"","value":""}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1081:6:14"},"nodeType":"YulFunctionCall","src":"1081:30:14"},"nodeType":"YulExpressionStatement","src":"1081:30:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1131:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"1142:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1127:3:14"},"nodeType":"YulFunctionCall","src":"1127:18:14"},{"name":"value1","nodeType":"YulIdentifier","src":"1147:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1120:6:14"},"nodeType":"YulFunctionCall","src":"1120:34:14"},"nodeType":"YulExpressionStatement","src":"1120:34:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1174:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"1185:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1170:3:14"},"nodeType":"YulFunctionCall","src":"1170:18:14"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1194:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"1202:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1190:3:14"},"nodeType":"YulFunctionCall","src":"1190:15:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1163:6:14"},"nodeType":"YulFunctionCall","src":"1163:43:14"},"nodeType":"YulExpressionStatement","src":"1163:43:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1226:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"1237:3:14","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1222:3:14"},"nodeType":"YulFunctionCall","src":"1222:19:14"},{"name":"value3","nodeType":"YulIdentifier","src":"1243:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1215:6:14"},"nodeType":"YulFunctionCall","src":"1215:35:14"},"nodeType":"YulExpressionStatement","src":"1215:35:14"}]},"name":"abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_t_uint256_t_address_t_uint256__to_t_address_t_bytes32_t_uint256_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"899:9:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"910:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"918:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"926:6:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"934:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"945:4:14","type":""}],"src":"678:578:14"},{"body":{"nodeType":"YulBlock","src":"1342:170:14","statements":[{"body":{"nodeType":"YulBlock","src":"1388:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1397:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1400:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1390:6:14"},"nodeType":"YulFunctionCall","src":"1390:12:14"},"nodeType":"YulExpressionStatement","src":"1390:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1363:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"1372:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1359:3:14"},"nodeType":"YulFunctionCall","src":"1359:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"1384:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1355:3:14"},"nodeType":"YulFunctionCall","src":"1355:32:14"},"nodeType":"YulIf","src":"1352:52:14"},{"nodeType":"YulVariableDeclaration","src":"1413:29:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1432:9:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1426:5:14"},"nodeType":"YulFunctionCall","src":"1426:16:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1417:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1476:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1451:24:14"},"nodeType":"YulFunctionCall","src":"1451:31:14"},"nodeType":"YulExpressionStatement","src":"1451:31:14"},{"nodeType":"YulAssignment","src":"1491:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"1501:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1491:6:14"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1308:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1319:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1331:6:14","type":""}],"src":"1261:251:14"}]},"contents":"{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\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 value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_t_uint256_t_address_t_uint256__to_t_address_t_bytes32_t_uint256_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), \"\")\n mstore(add(headStart, 64), value1)\n mstore(add(headStart, 96), and(value2, _1))\n mstore(add(headStart, 128), value3)\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}","id":14,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c806306433b1b14610051578063192df655146100885780633a4741bd1461009b5780635fbfb9cf146100b6575b600080fd5b61006c7302101dfb77fde026414827fdc604ddaf224f092181565b6040516001600160a01b03909116815260200160405180910390f35b61006c610096366004610220565b6100c9565b61006c732d25602551487c3f3354dd80d76d54383a24335881565b61006c6100c4366004610220565b61017d565b60405163246a002160e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201526000602482018190524660448301526001600160a01b038416606483015260848201839052907302101dfb77fde026414827fdc604ddaf224f09219063246a00219060a401602060405180830381865afa158015610152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610176919061024c565b9392505050565b604051638a54c52f60e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201526000602482018190524660448301526001600160a01b038416606483015260848201839052907302101dfb77fde026414827fdc604ddaf224f092190638a54c52f9060a4016020604051808303816000875af1158015610152573d6000803e3d6000fd5b6001600160a01b038116811461021d57600080fd5b50565b6000806040838503121561023357600080fd5b823561023e81610208565b946020939093013593505050565b60006020828403121561025e57600080fd5b81516101768161020856fea264697066735822122076764d0e6825b0a387a421cff599da2214256000f08c283c24ee97998cb6a4c764736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6433B1B EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x192DF655 EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x3A4741BD EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x5FBFB9CF EQ PUSH2 0xB6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6C PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x96 CALLDATASIZE PUSH1 0x4 PUSH2 0x220 JUMP JUMPDEST PUSH2 0xC9 JUMP JUMPDEST PUSH2 0x6C PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 DUP2 JUMP JUMPDEST PUSH2 0x6C PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x220 JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x246A0021 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE CHAINID PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 SWAP1 PUSH4 0x246A0021 SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x152 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 0x176 SWAP2 SWAP1 PUSH2 0x24C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8A54C52F PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE CHAINID PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 SWAP1 PUSH4 0x8A54C52F SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x152 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x21D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x23E DUP2 PUSH2 0x208 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x176 DUP2 PUSH2 0x208 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH23 0x764D0E6825B0A387A421CFF599DA2214256000F08C283C 0x24 0xEE SWAP8 SWAP10 DUP13 0xB6 LOG4 0xC7 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"170:830:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;207:78;;243:42;207:78;;;;;-1:-1:-1;;;;;178:32:14;;;160:51;;148:2;133:18;207:78:7;;;;;;;696:302;;;;;;:::i;:::-;;:::i;291:83::-;;332:42;291:83;;381:309;;;;;;:::i;:::-;;:::i;696:302::-;826:165;;-1:-1:-1;;;826:165:7;;332:42;826:165;;;1038:34:14;800:7:7;1088:18:14;;;1081:30;;;918:13:7;1127:18:14;;;1120:34;-1:-1:-1;;;;;1190:15:14;;1170:18;;;1163:43;1222:19;;;1215:35;;;800:7:7;243:42;;826:34;;972:19:14;;826:165:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;819:172;696:302;-1:-1:-1;;;696:302:7:o;381:309::-;512:171;;-1:-1:-1;;;512:171:7;;332:42;512:171;;;1038:34:14;486:7:7;1088:18:14;;;1081:30;;;610:13:7;1127:18:14;;;1120:34;-1:-1:-1;;;;;1190:15:14;;1170:18;;;1163:43;1222:19;;;1215:35;;;486:7:7;243:42;;512:40;;972:19:14;;512:171:7;;;;;;;;;;;;;;;;;;;;;;;222:131:14;-1:-1:-1;;;;;297:31:14;;287:42;;277:70;;343:1;340;333:12;277:70;222:131;:::o;358:315::-;426:6;434;487:2;475:9;466:7;462:23;458:32;455:52;;;503:1;500;493:12;455:52;542:9;529:23;561:31;586:5;561:31;:::i;:::-;611:5;663:2;648:18;;;;635:32;;-1:-1:-1;;;358:315:14:o;1261:251::-;1331:6;1384:2;1372:9;1363:7;1359:23;1355:32;1352:52;;;1400:1;1397;1390:12;1352:52;1432:9;1426:16;1451:31;1476:5;1451:31;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"134200","executionCost":"177","totalCost":"134377"},"external":{"IMPLEMENTATION()":"226","REGISTRY()":"182","account(address,uint256)":"infinite","createAccount(address,uint256)":"infinite"}},"methodIdentifiers":{"IMPLEMENTATION()":"3a4741bd","REGISTRY()":"06433b1b","account(address,uint256)":"192df655","createAccount(address,uint256)":"5fbfb9cf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IMPLEMENTATION\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"account\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/AccountRegistryBridge.sol\":\"AccountRegistryBridge\"},\"evmVersion\":\"london\",\"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 v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/AccountRegistryBridge.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.13;\\n\\nimport \\\"./interfaces/IERC6551Registry.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\ncontract AccountRegistryBridge {\\n address public constant REGISTRY = \\t0x02101dfB77FDE026414827Fdc604ddAF224F0921;\\n address public constant IMPLEMENTATION = 0x2D25602551487C3f3354dD80D76D54383A243358;\\n\\n function createAccount(\\n address contractAddress,\\n uint256 tokenId\\n ) external returns (address) {\\n return IERC6551Registry(REGISTRY).createAccount(\\n IMPLEMENTATION,\\n '',\\n block.chainid,\\n contractAddress,\\n tokenId\\n );\\n }\\n\\n function account(\\n address contractAddress,\\n uint256 tokenId\\n ) external view returns (address) {\\n return IERC6551Registry(REGISTRY).account(\\n IMPLEMENTATION,\\n '',\\n block.chainid,\\n contractAddress,\\n tokenId\\n );\\n }\\n}\",\"keccak256\":\"0x223193ea63f3bb18374d6c71d0d8f1a9e428b0bd460c0f7768bee35f6a2187ff\",\"license\":\"MIT\"},\"contracts/interfaces/IERC6551Registry.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\ninterface IERC6551Registry {\\n /**\\n * @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation.\\n */\\n event ERC6551AccountCreated(\\n address account,\\n address indexed implementation,\\n bytes32 salt,\\n uint256 chainId,\\n address indexed tokenContract,\\n uint256 indexed tokenId\\n );\\n\\n /**\\n * @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails.\\n */\\n error AccountCreationFailed();\\n\\n /**\\n * @dev Creates a token bound account for a non-fungible token.\\n *\\n * If account has already been created, returns the account address without calling create2.\\n *\\n * Emits ERC6551AccountCreated event.\\n *\\n * @return account The address of the token bound account\\n */\\n function createAccount(\\n address implementation,\\n bytes32 salt,\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) external returns (address account);\\n\\n /**\\n * @dev Returns the computed token bound account address for a non-fungible token.\\n *\\n * @return account The address of the token bound account\\n */\\n function account(\\n address implementation,\\n bytes32 salt,\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) external view returns (address account);\\n}\\n\",\"keccak256\":\"0x6ed4095d6c63f8d40ce6c30293efbfd8ab83a4d96a76af39aae8baa50970c352\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ChargedParticlesAccount.sol":{"ChargedParticlesAccount":{"abi":[{"inputs":[],"name":"AccountLocked","type":"error"},{"inputs":[],"name":"ExceedsMaxLockTime","type":"error"},{"inputs":[],"name":"InvalidInput","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"OwnershipCycle","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockedUntil","type":"uint256"}],"name":"LockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"OverrideUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"hasPermission","type":"bool"}],"name":"PermissionUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"nftTokenAddress","type":"address"},{"internalType":"uint256","name":"nftTokenId","type":"uint256"},{"internalType":"uint256","name":"nftTokenAmount","type":"uint256"}],"name":"breakCovalentBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftTokenAddress","type":"address"},{"internalType":"uint256","name":"nftTokenId","type":"uint256"},{"internalType":"uint256","name":"nftTokenAmount","type":"uint256"}],"name":"covalentBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"assetToken","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"dischargeParticle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"assetToken","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"energizeParticle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockedUntil","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"receivedTokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"parseFirst4Bytes","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"permissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"callers","type":"address[]"},{"internalType":"bool[]","name":"_permissions","type":"bool[]"}],"name":"setPermissions","outputs":[],"stateMutability":"nonpayable","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":{"kind":"dev","methods":{"executeCall(address,uint256,bytes)":{"details":"executes a low-level call against an account if the caller is authorized to make calls"},"isAuthorized(address)":{"details":"Returns the authorization status for a given caller"},"isLocked()":{"details":"returns the current lock status of the account as a boolean"},"lock(uint256)":{"details":"locks the account until a certain timestamp"},"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Allows ERC-1155 token batches to be received. This function can be overriden."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Allows ERC-1155 tokens to be received. This function can be overriden."},"onERC721Received(address,address,uint256,bytes)":{"details":"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden."},"owner()":{"details":"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account."},"setPermissions(address[],bool[])":{"details":"grants a given caller execution permissions"},"supportsInterface(bytes4)":{"details":"Returns true if a given interfaceId is supported by this account. This method can be extended by an override."},"token()":{"details":"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_379":{"entryPoint":null,"id":379,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50611436806100206000396000f3fe60806040526004361061010d5760003560e01c8063a737a29911610095578063d0ad253511610064578063d0ad253514610318578063dd46706414610338578063f23a6e6114610358578063fc0c546a14610384578063fe9fbb80146103bc57600080fd5b8063a737a29914610288578063bc197c81146102a8578063ca1cc220146102d4578063ce0617ec146102f457600080fd5b80636b764e1b116100dc5780636b764e1b146101e45780638da5cb5b146102045780639e5d4c4914610231578063a4e2d63414610251578063a65e78f11461026857600080fd5b806301ffc9a714610119578063039721b11461014e578063150b7a02146101705780631f9838b5146101a957600080fd5b3661011457005b600080fd5b34801561012557600080fd5b50610139610134366004610c77565b6103dc565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b5061016e610169366004610cf4565b610443565b005b34801561017c57600080fd5b5061019061018b366004610e2f565b61060c565b6040516001600160e01b03199091168152602001610145565b3480156101b557600080fd5b506101396101c4366004610e9b565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101f057600080fd5b5061016e6101ff366004610ed4565b610674565b34801561021057600080fd5b506102196106e2565b6040516001600160a01b039091168152602001610145565b61024461023f366004610f5c565b610778565b6040516101459190610fac565b34801561025d57600080fd5b506000544210610139565b34801561027457600080fd5b5061016e610283366004610ffa565b61082f565b34801561029457600080fd5b5061016e6102a3366004611026565b6108ab565b3480156102b457600080fd5b506101906102c33660046110d0565b63bc197c8160e01b95945050505050565b3480156102e057600080fd5b5061016e6102ef36600461117e565b61090d565b34801561030057600080fd5b5061030a60005481565b604051908152602001610145565b34801561032457600080fd5b506101906103333660046111bf565b610986565b34801561034457600080fd5b5061016e610353366004611201565b6109a7565b34801561036457600080fd5b5061019061037336600461121a565b63f23a6e6160e01b95945050505050565b34801561039057600080fd5b50610399610a6c565b604080519384526001600160a01b03909216602084015290820152606001610145565b3480156103c857600080fd5b506101396103d7366004611283565b610a84565b6000806001600160e01b031983166301ffc9a760e01b148061040e57506001600160e01b03198316630271189760e51b145b8061042957506001600160e01b03198316636faff5f160e01b145b9050801561043a5750600192915050565b50600092915050565b60005442101561046657604051636315bfbb60e01b815260040160405180910390fd5b60006104706106e2565b9050336001600160a01b0382161461049b5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104bc5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b81811015610603578484828181106104d9576104d96112a0565b90506020020160208101906104ee91906112c4565b6001600160a01b038416600090815260016020526040812090898985818110610519576105196112a0565b905060200201602081019061052e9190611283565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf58388888481811061058a5761058a6112a0565b905060200201602081019061059f9190611283565b8787858181106105b1576105b16112a0565b90506020020160208101906105c691906112c4565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a1806105fb816112f7565b9150506104bf565b50505050505050565b60008060008061061a610b6d565b925092509250468314801561063757506001600160a01b03821633145b801561064257508581145b156106605760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b604051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156106c457600080fd5b505af11580156106d8573d6000803e3d6000fd5b5050505050505050565b6000806000806106f0610b6d565b925092509250468314610707576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa15801561074c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107709190611310565b935050505090565b606061078333610a84565b6107a05760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156107c357604051636315bfbb60e01b815260040160405180910390fd5b82826107cf8282610bc0565b6108185760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b61082487878787610bfb565b979650505050505050565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af1158015610882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a6919061132d565b505050565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038416906342842e0e90606401600060405180830381600087803b1580156108f957600080fd5b505af1158015610603573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610980919061132d565b50505050565b6000610995600482848661134a565b61099e91611374565b90505b92915050565b6109af6106e2565b6001600160a01b0316336001600160a01b0316146109e05760405163ea8e4eb560e01b815260040160405180910390fd5b600054421015610a0357604051636315bfbb60e01b815260040160405180910390fd5b610a11426301e133806113a4565b811115610a31576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b6000806000610a79610b6d565b925092509250909192565b6000806000610a91610b6d565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa158015610adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b039190611310565b9050806001600160a01b0316856001600160a01b031603610b2957506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff1615610b6257506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610bb491906113b7565b93509350935050909192565b600080610bcd8484610986565b90506001600160e01b0319811663095ea7b360e01b03610bf15760009150506109a1565b5060019392505050565b60606000856001600160a01b0316858585604051610c1a9291906113f0565b60006040518083038185875af1925050503d8060008114610c57576040519150601f19603f3d011682016040523d82523d6000602084013e610c5c565b606091505b509250905080610c6e57815160208301fd5b50949350505050565b600060208284031215610c8957600080fd5b81356001600160e01b031981168114610ca157600080fd5b9392505050565b60008083601f840112610cba57600080fd5b50813567ffffffffffffffff811115610cd257600080fd5b6020830191508360208260051b8501011115610ced57600080fd5b9250929050565b60008060008060408587031215610d0a57600080fd5b843567ffffffffffffffff80821115610d2257600080fd5b610d2e88838901610ca8565b90965094506020870135915080821115610d4757600080fd5b50610d5487828801610ca8565b95989497509550505050565b6001600160a01b0381168114610d7557600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610db757610db7610d78565b604052919050565b600082601f830112610dd057600080fd5b813567ffffffffffffffff811115610dea57610dea610d78565b610dfd601f8201601f1916602001610d8e565b818152846020838601011115610e1257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4557600080fd5b8435610e5081610d60565b93506020850135610e6081610d60565b925060408501359150606085013567ffffffffffffffff811115610e8357600080fd5b610e8f87828801610dbf565b91505092959194509250565b60008060408385031215610eae57600080fd5b8235610eb981610d60565b91506020830135610ec981610d60565b809150509250929050565b60008060008060808587031215610eea57600080fd5b8435610ef581610d60565b93506020850135610f0581610d60565b93969395505050506040820135916060013590565b60008083601f840112610f2c57600080fd5b50813567ffffffffffffffff811115610f4457600080fd5b602083019150836020828501011115610ced57600080fd5b60008060008060608587031215610f7257600080fd5b8435610f7d81610d60565b935060208501359250604085013567ffffffffffffffff811115610fa057600080fd5b610d5487828801610f1a565b600060208083528351808285015260005b81811015610fd957858101830151858201604001528201610fbd565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561100d57600080fd5b823561101881610d60565b946020939093013593505050565b60008060006060848603121561103b57600080fd5b833561104681610d60565b95602085013595506040909401359392505050565b600082601f83011261106c57600080fd5b8135602067ffffffffffffffff82111561108857611088610d78565b8160051b611097828201610d8e565b92835284810182019282810190878511156110b157600080fd5b83870192505b84831015610824578235825291830191908301906110b7565b600080600080600060a086880312156110e857600080fd5b85356110f381610d60565b9450602086013561110381610d60565b9350604086013567ffffffffffffffff8082111561112057600080fd5b61112c89838a0161105b565b9450606088013591508082111561114257600080fd5b61114e89838a0161105b565b9350608088013591508082111561116457600080fd5b5061117188828901610dbf565b9150509295509295909350565b60008060006060848603121561119357600080fd5b833561119e81610d60565b925060208401356111ae81610d60565b929592945050506040919091013590565b600080602083850312156111d257600080fd5b823567ffffffffffffffff8111156111e957600080fd5b6111f585828601610f1a565b90969095509350505050565b60006020828403121561121357600080fd5b5035919050565b600080600080600060a0868803121561123257600080fd5b853561123d81610d60565b9450602086013561124d81610d60565b93506040860135925060608601359150608086013567ffffffffffffffff81111561127757600080fd5b61117188828901610dbf565b60006020828403121561129557600080fd5b8135610ca181610d60565b634e487b7160e01b600052603260045260246000fd5b8015158114610d7557600080fd5b6000602082840312156112d657600080fd5b8135610ca1816112b6565b634e487b7160e01b600052601160045260246000fd5b600060018201611309576113096112e1565b5060010190565b60006020828403121561132257600080fd5b8151610ca181610d60565b60006020828403121561133f57600080fd5b8151610ca1816112b6565b6000808585111561135a57600080fd5b8386111561136757600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561139c5780818660040360031b1b83161692505b505092915050565b808201808211156109a1576109a16112e1565b6000806000606084860312156113cc57600080fd5b8351925060208401516113de81610d60565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220add824d87648462c373c70c4985c65f80b93f5a59d5a1f55f17f9aa543487de964736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1436 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA737A299 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xD0AD2535 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0xFE9FBB80 EQ PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA737A299 EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0xCA1CC220 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6B764E1B GT PUSH2 0xDC JUMPI DUP1 PUSH4 0x6B764E1B EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x9E5D4C49 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xA65E78F1 EQ PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x1A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x114 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x134 CALLDATASIZE PUSH1 0x4 PUSH2 0xC77 JUMP JUMPDEST PUSH2 0x3DC 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 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xCF4 JUMP JUMPDEST PUSH2 0x443 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x18B CALLDATASIZE PUSH1 0x4 PUSH2 0xE2F JUMP JUMPDEST PUSH2 0x60C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x1C4 CALLDATASIZE PUSH1 0x4 PUSH2 0xE9B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0xED4 JUMP JUMPDEST PUSH2 0x674 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x219 PUSH2 0x6E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST PUSH2 0x244 PUSH2 0x23F CALLDATASIZE PUSH1 0x4 PUSH2 0xF5C JUMP JUMPDEST PUSH2 0x778 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0xFAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x139 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x283 CALLDATASIZE PUSH1 0x4 PUSH2 0xFFA JUMP JUMPDEST PUSH2 0x82F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x2A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x8AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x2C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D0 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x2EF CALLDATASIZE PUSH1 0x4 PUSH2 0x117E JUMP JUMPDEST PUSH2 0x90D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30A PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x333 CALLDATASIZE PUSH1 0x4 PUSH2 0x11BF JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x353 CALLDATASIZE PUSH1 0x4 PUSH2 0x1201 JUMP JUMPDEST PUSH2 0x9A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x373 CALLDATASIZE PUSH1 0x4 PUSH2 0x121A JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x399 PUSH2 0xA6C JUMP JUMPDEST 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 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x3D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1283 JUMP JUMPDEST PUSH2 0xA84 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x40E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x429 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x43A JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x470 PUSH2 0x6E2 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x49B JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x4BC JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x603 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x4D9 JUMPI PUSH2 0x4D9 PUSH2 0x12A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4EE SWAP2 SWAP1 PUSH2 0x12C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x519 JUMPI PUSH2 0x519 PUSH2 0x12A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x52E SWAP2 SWAP1 PUSH2 0x1283 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x58A JUMPI PUSH2 0x58A PUSH2 0x12A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x59F SWAP2 SWAP1 PUSH2 0x1283 JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x5B1 JUMPI PUSH2 0x5B1 PUSH2 0x12A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x5C6 SWAP2 SWAP1 PUSH2 0x12C4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x5FB DUP2 PUSH2 0x12F7 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4BF JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x61A PUSH2 0xB6D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x637 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x642 JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x6F0 PUSH2 0xB6D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x707 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x74C 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 0x770 SWAP2 SWAP1 PUSH2 0x1310 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x783 CALLER PUSH2 0xA84 JUMP JUMPDEST PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 PUSH2 0x7CF DUP3 DUP3 PUSH2 0xBC0 JUMP JUMPDEST PUSH2 0x818 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x824 DUP8 DUP8 DUP8 DUP8 PUSH2 0xBFB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x882 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 0x8A6 SWAP2 SWAP1 PUSH2 0x132D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x603 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x95C 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 0x980 SWAP2 SWAP1 PUSH2 0x132D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x995 PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x134A JUMP JUMPDEST PUSH2 0x99E SWAP2 PUSH2 0x1374 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9AF PUSH2 0x6E2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xA03 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA11 TIMESTAMP PUSH4 0x1E13380 PUSH2 0x13A4 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA79 PUSH2 0xB6D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA91 PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0xADF 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 0xB03 SWAP2 SWAP1 PUSH2 0x1310 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB29 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB62 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xBB4 SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xBCD DUP5 DUP5 PUSH2 0x986 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0xBF1 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x9A1 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xC1A SWAP3 SWAP2 SWAP1 PUSH2 0x13F0 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 0xC57 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 0xC5C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0xC6E JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xCA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD2E DUP9 DUP4 DUP10 ADD PUSH2 0xCA8 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD54 DUP8 DUP3 DUP9 ADD PUSH2 0xCA8 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xDB7 JUMPI PUSH2 0xDB7 PUSH2 0xD78 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xDD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDEA JUMPI PUSH2 0xDEA PUSH2 0xD78 JUMP JUMPDEST PUSH2 0xDFD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xD8E JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xE12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xE50 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xE60 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE8F DUP8 DUP3 DUP9 ADD PUSH2 0xDBF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xEB9 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xEC9 DUP2 PUSH2 0xD60 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xEEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xEF5 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xF05 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xF2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xF7D DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD54 DUP8 DUP3 DUP9 ADD PUSH2 0xF1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFD9 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xFBD JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x100D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1018 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x103B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1046 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x106C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1088 JUMPI PUSH2 0x1088 PUSH2 0xD78 JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0x1097 DUP3 DUP3 ADD PUSH2 0xD8E JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x10B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x824 JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0x10B7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x10E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x10F3 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1103 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x112C DUP10 DUP4 DUP11 ADD PUSH2 0x105B JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x114E DUP10 DUP4 DUP11 ADD PUSH2 0x105B JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1171 DUP9 DUP3 DUP10 ADD PUSH2 0xDBF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x119E DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x11AE DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11F5 DUP6 DUP3 DUP7 ADD PUSH2 0xF1A JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x123D DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x124D DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1171 DUP9 DUP3 DUP10 ADD PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCA1 DUP2 PUSH2 0xD60 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCA1 DUP2 PUSH2 0x12B6 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x1309 JUMPI PUSH2 0x1309 PUSH2 0x12E1 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCA1 DUP2 PUSH2 0xD60 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x133F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCA1 DUP2 PUSH2 0x12B6 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x135A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x1367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x139C JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x9A1 JUMPI PUSH2 0x9A1 PUSH2 0x12E1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x13CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x13DE DUP2 PUSH2 0xD60 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD 0xD8 0x24 0xD8 PUSH23 0x48462C373C70C4985C65F80B93F5A59D5A1F55F17F9AA5 NUMBER BASEFEE PUSH30 0xE964736F6C63430008110033000000000000000000000000000000000000 ","sourceMap":"206:995:8:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_384":{"entryPoint":null,"id":384,"parameterSlots":0,"returnSlots":0},"@_call_779":{"entryPoint":3067,"id":779,"parameterSlots":4,"returnSlots":1},"@allowedMethod_830":{"entryPoint":3008,"id":830,"parameterSlots":2,"returnSlots":1},"@breakCovalentBond_968":{"entryPoint":1652,"id":968,"parameterSlots":4,"returnSlots":0},"@covalentBond_944":{"entryPoint":2219,"id":944,"parameterSlots":3,"returnSlots":0},"@dischargeParticle_1007":{"entryPoint":2317,"id":1007,"parameterSlots":3,"returnSlots":0},"@energizeParticle_989":{"entryPoint":2095,"id":989,"parameterSlots":2,"returnSlots":0},"@executeCall_410":{"entryPoint":1912,"id":410,"parameterSlots":4,"returnSlots":1},"@isAuthorized_615":{"entryPoint":2692,"id":615,"parameterSlots":1,"returnSlots":1},"@isLocked_524":{"entryPoint":null,"id":524,"parameterSlots":0,"returnSlots":1},"@lock_512":{"entryPoint":2471,"id":512,"parameterSlots":1,"returnSlots":0},"@lockedUntil_309":{"entryPoint":null,"id":309,"parameterSlots":0,"returnSlots":0},"@onERC1155BatchReceived_747":{"entryPoint":null,"id":747,"parameterSlots":5,"returnSlots":1},"@onERC1155Received_723":{"entryPoint":null,"id":723,"parameterSlots":5,"returnSlots":1},"@onERC721Received_701":{"entryPoint":1548,"id":701,"parameterSlots":4,"returnSlots":1},"@owner_573":{"entryPoint":1762,"id":573,"parameterSlots":0,"returnSlots":1},"@parseFirst4Bytes_845":{"entryPoint":2438,"id":845,"parameterSlots":2,"returnSlots":1},"@permissions_316":{"entryPoint":null,"id":316,"parameterSlots":0,"returnSlots":0},"@setPermissions_483":{"entryPoint":1091,"id":483,"parameterSlots":4,"returnSlots":0},"@supportsInterface_654":{"entryPoint":988,"id":654,"parameterSlots":1,"returnSlots":1},"@token_1149":{"entryPoint":2925,"id":1149,"parameterSlots":0,"returnSlots":3},"@token_539":{"entryPoint":2668,"id":539,"parameterSlots":0,"returnSlots":3},"abi_decode_array_address_dyn_calldata":{"entryPoint":3240,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":4187,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":3519,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3866,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":4739,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4880,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3739,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr":{"entryPoint":4304,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4478,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":3631,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256":{"entryPoint":3796,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr":{"entryPoint":4634,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4090,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr":{"entryPoint":3932,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_uint256t_uint256":{"entryPoint":4134,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr":{"entryPoint":3316,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":4804,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4909,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3191,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":4543,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":4609,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory":{"entryPoint":5047,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":5104,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_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":4012,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__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},"allocate_memory":{"entryPoint":3470,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":4938,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":5028,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":4980,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":4855,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":4833,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4768,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3448,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3424,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":4790,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:15471:14","statements":[{"nodeType":"YulBlock","src":"6:3:14","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:14","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:14"},"nodeType":"YulFunctionCall","src":"131:12:14"},"nodeType":"YulExpressionStatement","src":"131:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:14"},"nodeType":"YulFunctionCall","src":"100:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:14"},"nodeType":"YulFunctionCall","src":"96:32:14"},"nodeType":"YulIf","src":"93:52:14"},{"nodeType":"YulVariableDeclaration","src":"154:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:14"},"nodeType":"YulFunctionCall","src":"167:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:14"},"nodeType":"YulFunctionCall","src":"256:12:14"},"nodeType":"YulExpressionStatement","src":"256:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:14"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:14","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:14"},"nodeType":"YulFunctionCall","src":"230:20:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:14"},"nodeType":"YulFunctionCall","src":"219:32:14"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:14"},"nodeType":"YulFunctionCall","src":"209:43:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:14"},"nodeType":"YulFunctionCall","src":"202:51:14"},"nodeType":"YulIf","src":"199:71:14"},{"nodeType":"YulAssignment","src":"279:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:14"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:14","type":""}],"src":"14:286:14"},{"body":{"nodeType":"YulBlock","src":"400:92:14","statements":[{"nodeType":"YulAssignment","src":"410:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:14"},"nodeType":"YulFunctionCall","src":"418:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:14"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:14"},"nodeType":"YulFunctionCall","src":"470:14:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:14"},"nodeType":"YulFunctionCall","src":"463:22:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:14"},"nodeType":"YulFunctionCall","src":"445:41:14"},"nodeType":"YulExpressionStatement","src":"445:41:14"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:14","type":""}],"src":"305:187:14"},{"body":{"nodeType":"YulBlock","src":"581:283:14","statements":[{"body":{"nodeType":"YulBlock","src":"630:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"639:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"642:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"632:6:14"},"nodeType":"YulFunctionCall","src":"632:12:14"},"nodeType":"YulExpressionStatement","src":"632:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"609:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"617:4:14","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"605:3:14"},"nodeType":"YulFunctionCall","src":"605:17:14"},{"name":"end","nodeType":"YulIdentifier","src":"624:3:14"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"601:3:14"},"nodeType":"YulFunctionCall","src":"601:27:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"594:6:14"},"nodeType":"YulFunctionCall","src":"594:35:14"},"nodeType":"YulIf","src":"591:55:14"},{"nodeType":"YulAssignment","src":"655:30:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"678:6:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"665:12:14"},"nodeType":"YulFunctionCall","src":"665:20:14"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"655:6:14"}]},{"body":{"nodeType":"YulBlock","src":"728:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"737:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"740:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"730:6:14"},"nodeType":"YulFunctionCall","src":"730:12:14"},"nodeType":"YulExpressionStatement","src":"730:12:14"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"700:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"708:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"697:2:14"},"nodeType":"YulFunctionCall","src":"697:30:14"},"nodeType":"YulIf","src":"694:50:14"},{"nodeType":"YulAssignment","src":"753:29:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"769:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"777:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:14"},"nodeType":"YulFunctionCall","src":"765:17:14"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"753:8:14"}]},{"body":{"nodeType":"YulBlock","src":"842:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"851:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"854:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"844:6:14"},"nodeType":"YulFunctionCall","src":"844:12:14"},"nodeType":"YulExpressionStatement","src":"844:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"805:6:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"817:1:14","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"820:6:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"813:3:14"},"nodeType":"YulFunctionCall","src":"813:14:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"801:3:14"},"nodeType":"YulFunctionCall","src":"801:27:14"},{"kind":"number","nodeType":"YulLiteral","src":"830:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"797:3:14"},"nodeType":"YulFunctionCall","src":"797:38:14"},{"name":"end","nodeType":"YulIdentifier","src":"837:3:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"794:2:14"},"nodeType":"YulFunctionCall","src":"794:47:14"},"nodeType":"YulIf","src":"791:67:14"}]},"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"544:6:14","type":""},{"name":"end","nodeType":"YulTypedName","src":"552:3:14","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"560:8:14","type":""},{"name":"length","nodeType":"YulTypedName","src":"570:6:14","type":""}],"src":"497:367:14"},{"body":{"nodeType":"YulBlock","src":"1023:616:14","statements":[{"body":{"nodeType":"YulBlock","src":"1069:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1078:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1081:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1071:6:14"},"nodeType":"YulFunctionCall","src":"1071:12:14"},"nodeType":"YulExpressionStatement","src":"1071:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1044:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"1053:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1040:3:14"},"nodeType":"YulFunctionCall","src":"1040:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"1065:2:14","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1036:3:14"},"nodeType":"YulFunctionCall","src":"1036:32:14"},"nodeType":"YulIf","src":"1033:52:14"},{"nodeType":"YulVariableDeclaration","src":"1094:37:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1108:12:14"},"nodeType":"YulFunctionCall","src":"1108:23:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1098:6:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1140:28:14","value":{"kind":"number","nodeType":"YulLiteral","src":"1150:18:14","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1144:2:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"1195:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1204:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1207:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1197:6:14"},"nodeType":"YulFunctionCall","src":"1197:12:14"},"nodeType":"YulExpressionStatement","src":"1197:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1183:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"1191:2:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1180:2:14"},"nodeType":"YulFunctionCall","src":"1180:14:14"},"nodeType":"YulIf","src":"1177:34:14"},{"nodeType":"YulVariableDeclaration","src":"1220:96:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1288:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"1299:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1284:3:14"},"nodeType":"YulFunctionCall","src":"1284:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1308:7:14"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1246:37:14"},"nodeType":"YulFunctionCall","src":"1246:70:14"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"1224:8:14","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"1234:8:14","type":""}]},{"nodeType":"YulAssignment","src":"1325:18:14","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"1335:8:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1325:6:14"}]},{"nodeType":"YulAssignment","src":"1352:18:14","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1362:8:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1352:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"1379:48:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1412:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"1423:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1408:3:14"},"nodeType":"YulFunctionCall","src":"1408:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1395:12:14"},"nodeType":"YulFunctionCall","src":"1395:32:14"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"1456:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1465:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1468:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1458:6:14"},"nodeType":"YulFunctionCall","src":"1458:12:14"},"nodeType":"YulExpressionStatement","src":"1458:12:14"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1442:8:14"},{"name":"_1","nodeType":"YulIdentifier","src":"1452:2:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1439:2:14"},"nodeType":"YulFunctionCall","src":"1439:16:14"},"nodeType":"YulIf","src":"1436:36:14"},{"nodeType":"YulVariableDeclaration","src":"1481:98:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1549:9:14"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1560:8:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1545:3:14"},"nodeType":"YulFunctionCall","src":"1545:24:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1571:7:14"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1507:37:14"},"nodeType":"YulFunctionCall","src":"1507:72:14"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"1485:8:14","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"1495:8:14","type":""}]},{"nodeType":"YulAssignment","src":"1588:18:14","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1598:8:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1588:6:14"}]},{"nodeType":"YulAssignment","src":"1615:18:14","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1625:8:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1615:6:14"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"965:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"976:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"988:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"996:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1004:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1012:6:14","type":""}],"src":"869:770:14"},{"body":{"nodeType":"YulBlock","src":"1689:86:14","statements":[{"body":{"nodeType":"YulBlock","src":"1753:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1762:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1765:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1755:6:14"},"nodeType":"YulFunctionCall","src":"1755:12:14"},"nodeType":"YulExpressionStatement","src":"1755:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1712:5:14"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1723:5:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1738:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1743:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1734:3:14"},"nodeType":"YulFunctionCall","src":"1734:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"1747:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1730:3:14"},"nodeType":"YulFunctionCall","src":"1730:19:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1719:3:14"},"nodeType":"YulFunctionCall","src":"1719:31:14"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1709:2:14"},"nodeType":"YulFunctionCall","src":"1709:42:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1702:6:14"},"nodeType":"YulFunctionCall","src":"1702:50:14"},"nodeType":"YulIf","src":"1699:70:14"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1678:5:14","type":""}],"src":"1644:131:14"},{"body":{"nodeType":"YulBlock","src":"1812:95:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1829:1:14","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1836:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1841:10:14","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1832:3:14"},"nodeType":"YulFunctionCall","src":"1832:20:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1822:6:14"},"nodeType":"YulFunctionCall","src":"1822:31:14"},"nodeType":"YulExpressionStatement","src":"1822:31:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1869:1:14","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1872:4:14","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1862:6:14"},"nodeType":"YulFunctionCall","src":"1862:15:14"},"nodeType":"YulExpressionStatement","src":"1862:15:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1893:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1896:4:14","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1886:6:14"},"nodeType":"YulFunctionCall","src":"1886:15:14"},"nodeType":"YulExpressionStatement","src":"1886:15:14"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1780:127:14"},{"body":{"nodeType":"YulBlock","src":"1957:230:14","statements":[{"nodeType":"YulAssignment","src":"1967:19:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1983:2:14","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1977:5:14"},"nodeType":"YulFunctionCall","src":"1977:9:14"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1967:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"1995:58:14","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2017:6:14"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2033:4:14"},{"kind":"number","nodeType":"YulLiteral","src":"2039:2:14","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2029:3:14"},"nodeType":"YulFunctionCall","src":"2029:13:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2048:2:14","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2044:3:14"},"nodeType":"YulFunctionCall","src":"2044:7:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2025:3:14"},"nodeType":"YulFunctionCall","src":"2025:27:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2013:3:14"},"nodeType":"YulFunctionCall","src":"2013:40:14"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1999:10:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"2128:22:14","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2130:16:14"},"nodeType":"YulFunctionCall","src":"2130:18:14"},"nodeType":"YulExpressionStatement","src":"2130:18:14"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2071:10:14"},{"kind":"number","nodeType":"YulLiteral","src":"2083:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2068:2:14"},"nodeType":"YulFunctionCall","src":"2068:34:14"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2107:10:14"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2119:6:14"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2104:2:14"},"nodeType":"YulFunctionCall","src":"2104:22:14"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2065:2:14"},"nodeType":"YulFunctionCall","src":"2065:62:14"},"nodeType":"YulIf","src":"2062:88:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2166:2:14","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2170:10:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2159:6:14"},"nodeType":"YulFunctionCall","src":"2159:22:14"},"nodeType":"YulExpressionStatement","src":"2159:22:14"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1937:4:14","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1946:6:14","type":""}],"src":"1912:275:14"},{"body":{"nodeType":"YulBlock","src":"2244:478:14","statements":[{"body":{"nodeType":"YulBlock","src":"2293:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2302:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2305:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2295:6:14"},"nodeType":"YulFunctionCall","src":"2295:12:14"},"nodeType":"YulExpressionStatement","src":"2295:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2272:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"2280:4:14","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2268:3:14"},"nodeType":"YulFunctionCall","src":"2268:17:14"},{"name":"end","nodeType":"YulIdentifier","src":"2287:3:14"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2264:3:14"},"nodeType":"YulFunctionCall","src":"2264:27:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2257:6:14"},"nodeType":"YulFunctionCall","src":"2257:35:14"},"nodeType":"YulIf","src":"2254:55:14"},{"nodeType":"YulVariableDeclaration","src":"2318:30:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2341:6:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2328:12:14"},"nodeType":"YulFunctionCall","src":"2328:20:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2322:2:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"2387:22:14","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2389:16:14"},"nodeType":"YulFunctionCall","src":"2389:18:14"},"nodeType":"YulExpressionStatement","src":"2389:18:14"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2363:2:14"},{"kind":"number","nodeType":"YulLiteral","src":"2367:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2360:2:14"},"nodeType":"YulFunctionCall","src":"2360:26:14"},"nodeType":"YulIf","src":"2357:52:14"},{"nodeType":"YulVariableDeclaration","src":"2418:70:14","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2461:2:14"},{"kind":"number","nodeType":"YulLiteral","src":"2465:4:14","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2457:3:14"},"nodeType":"YulFunctionCall","src":"2457:13:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2476:2:14","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2472:3:14"},"nodeType":"YulFunctionCall","src":"2472:7:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2453:3:14"},"nodeType":"YulFunctionCall","src":"2453:27:14"},{"kind":"number","nodeType":"YulLiteral","src":"2482:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2449:3:14"},"nodeType":"YulFunctionCall","src":"2449:38:14"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2433:15:14"},"nodeType":"YulFunctionCall","src":"2433:55:14"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"2422:7:14","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2504:7:14"},{"name":"_1","nodeType":"YulIdentifier","src":"2513:2:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2497:6:14"},"nodeType":"YulFunctionCall","src":"2497:19:14"},"nodeType":"YulExpressionStatement","src":"2497:19:14"},{"body":{"nodeType":"YulBlock","src":"2564:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2573:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2576:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2566:6:14"},"nodeType":"YulFunctionCall","src":"2566:12:14"},"nodeType":"YulExpressionStatement","src":"2566:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2539:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"2547:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2535:3:14"},"nodeType":"YulFunctionCall","src":"2535:15:14"},{"kind":"number","nodeType":"YulLiteral","src":"2552:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2531:3:14"},"nodeType":"YulFunctionCall","src":"2531:26:14"},{"name":"end","nodeType":"YulIdentifier","src":"2559:3:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2528:2:14"},"nodeType":"YulFunctionCall","src":"2528:35:14"},"nodeType":"YulIf","src":"2525:55:14"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2606:7:14"},{"kind":"number","nodeType":"YulLiteral","src":"2615:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2602:3:14"},"nodeType":"YulFunctionCall","src":"2602:18:14"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2626:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"2634:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2622:3:14"},"nodeType":"YulFunctionCall","src":"2622:17:14"},{"name":"_1","nodeType":"YulIdentifier","src":"2641:2:14"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2589:12:14"},"nodeType":"YulFunctionCall","src":"2589:55:14"},"nodeType":"YulExpressionStatement","src":"2589:55:14"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2668:7:14"},{"name":"_1","nodeType":"YulIdentifier","src":"2677:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2664:3:14"},"nodeType":"YulFunctionCall","src":"2664:16:14"},{"kind":"number","nodeType":"YulLiteral","src":"2682:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2660:3:14"},"nodeType":"YulFunctionCall","src":"2660:27:14"},{"kind":"number","nodeType":"YulLiteral","src":"2689:1:14","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2653:6:14"},"nodeType":"YulFunctionCall","src":"2653:38:14"},"nodeType":"YulExpressionStatement","src":"2653:38:14"},{"nodeType":"YulAssignment","src":"2700:16:14","value":{"name":"array_1","nodeType":"YulIdentifier","src":"2709:7:14"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2700:5:14"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2218:6:14","type":""},{"name":"end","nodeType":"YulTypedName","src":"2226:3:14","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2234:5:14","type":""}],"src":"2192:530:14"},{"body":{"nodeType":"YulBlock","src":"2857:535:14","statements":[{"body":{"nodeType":"YulBlock","src":"2904:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2916:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2906:6:14"},"nodeType":"YulFunctionCall","src":"2906:12:14"},"nodeType":"YulExpressionStatement","src":"2906:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2878:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"2887:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2874:3:14"},"nodeType":"YulFunctionCall","src":"2874:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"2899:3:14","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2870:3:14"},"nodeType":"YulFunctionCall","src":"2870:33:14"},"nodeType":"YulIf","src":"2867:53:14"},{"nodeType":"YulVariableDeclaration","src":"2929:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2942:12:14"},"nodeType":"YulFunctionCall","src":"2942:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2933:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2999:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2974:24:14"},"nodeType":"YulFunctionCall","src":"2974:31:14"},"nodeType":"YulExpressionStatement","src":"2974:31:14"},{"nodeType":"YulAssignment","src":"3014:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"3024:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3014:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"3038:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3070:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3081:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3066:3:14"},"nodeType":"YulFunctionCall","src":"3066:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3053:12:14"},"nodeType":"YulFunctionCall","src":"3053:32:14"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3042:7:14","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3119:7:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3094:24:14"},"nodeType":"YulFunctionCall","src":"3094:33:14"},"nodeType":"YulExpressionStatement","src":"3094:33:14"},{"nodeType":"YulAssignment","src":"3136:17:14","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3146:7:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3136:6:14"}]},{"nodeType":"YulAssignment","src":"3162:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3200:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3185:3:14"},"nodeType":"YulFunctionCall","src":"3185:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3172:12:14"},"nodeType":"YulFunctionCall","src":"3172:32:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3162:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"3213:46:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3244:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3255:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3240:3:14"},"nodeType":"YulFunctionCall","src":"3240:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3227:12:14"},"nodeType":"YulFunctionCall","src":"3227:32:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3217:6:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"3302:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3311:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3314:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3304:6:14"},"nodeType":"YulFunctionCall","src":"3304:12:14"},"nodeType":"YulExpressionStatement","src":"3304:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3274:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"3282:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3271:2:14"},"nodeType":"YulFunctionCall","src":"3271:30:14"},"nodeType":"YulIf","src":"3268:50:14"},{"nodeType":"YulAssignment","src":"3327:59:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3358:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"3369:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3354:3:14"},"nodeType":"YulFunctionCall","src":"3354:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3378:7:14"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"3337:16:14"},"nodeType":"YulFunctionCall","src":"3337:49:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3327:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2799:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2810:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2822:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2830:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2838:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2846:6:14","type":""}],"src":"2727:665:14"},{"body":{"nodeType":"YulBlock","src":"3496:103:14","statements":[{"nodeType":"YulAssignment","src":"3506:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3518:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3529:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3514:3:14"},"nodeType":"YulFunctionCall","src":"3514:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3506:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:14"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3563:6:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3575:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3580:10:14","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3571:3:14"},"nodeType":"YulFunctionCall","src":"3571:20:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3559:3:14"},"nodeType":"YulFunctionCall","src":"3559:33:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3541:6:14"},"nodeType":"YulFunctionCall","src":"3541:52:14"},"nodeType":"YulExpressionStatement","src":"3541:52:14"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3465:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3476:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3487:4:14","type":""}],"src":"3397:202:14"},{"body":{"nodeType":"YulBlock","src":"3691:301:14","statements":[{"body":{"nodeType":"YulBlock","src":"3737:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3746:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3749:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3739:6:14"},"nodeType":"YulFunctionCall","src":"3739:12:14"},"nodeType":"YulExpressionStatement","src":"3739:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3712:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"3721:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:14"},"nodeType":"YulFunctionCall","src":"3708:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"3733:2:14","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3704:3:14"},"nodeType":"YulFunctionCall","src":"3704:32:14"},"nodeType":"YulIf","src":"3701:52:14"},{"nodeType":"YulVariableDeclaration","src":"3762:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3788:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3775:12:14"},"nodeType":"YulFunctionCall","src":"3775:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3766:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3832:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3807:24:14"},"nodeType":"YulFunctionCall","src":"3807:31:14"},"nodeType":"YulExpressionStatement","src":"3807:31:14"},{"nodeType":"YulAssignment","src":"3847:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"3857:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3847:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"3871:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3903:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"3914:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3899:3:14"},"nodeType":"YulFunctionCall","src":"3899:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3886:12:14"},"nodeType":"YulFunctionCall","src":"3886:32:14"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3875:7:14","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3952:7:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3927:24:14"},"nodeType":"YulFunctionCall","src":"3927:33:14"},"nodeType":"YulExpressionStatement","src":"3927:33:14"},{"nodeType":"YulAssignment","src":"3969:17:14","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3979:7:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3969:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3649:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3660:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3672:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3680:6:14","type":""}],"src":"3604:388:14"},{"body":{"nodeType":"YulBlock","src":"4118:404:14","statements":[{"body":{"nodeType":"YulBlock","src":"4165:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4174:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4177:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4167:6:14"},"nodeType":"YulFunctionCall","src":"4167:12:14"},"nodeType":"YulExpressionStatement","src":"4167:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4139:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"4148:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4135:3:14"},"nodeType":"YulFunctionCall","src":"4135:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"4160:3:14","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4131:3:14"},"nodeType":"YulFunctionCall","src":"4131:33:14"},"nodeType":"YulIf","src":"4128:53:14"},{"nodeType":"YulVariableDeclaration","src":"4190:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4216:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4203:12:14"},"nodeType":"YulFunctionCall","src":"4203:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4194:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4260:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4235:24:14"},"nodeType":"YulFunctionCall","src":"4235:31:14"},"nodeType":"YulExpressionStatement","src":"4235:31:14"},{"nodeType":"YulAssignment","src":"4275:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"4285:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4275:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"4299:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4331:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"4342:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4327:3:14"},"nodeType":"YulFunctionCall","src":"4327:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4314:12:14"},"nodeType":"YulFunctionCall","src":"4314:32:14"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4303:7:14","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"4380:7:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4355:24:14"},"nodeType":"YulFunctionCall","src":"4355:33:14"},"nodeType":"YulExpressionStatement","src":"4355:33:14"},{"nodeType":"YulAssignment","src":"4397:17:14","value":{"name":"value_1","nodeType":"YulIdentifier","src":"4407:7:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4397:6:14"}]},{"nodeType":"YulAssignment","src":"4423:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4450:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"4461:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4446:3:14"},"nodeType":"YulFunctionCall","src":"4446:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4433:12:14"},"nodeType":"YulFunctionCall","src":"4433:32:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4423:6:14"}]},{"nodeType":"YulAssignment","src":"4474:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4501:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"4512:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4497:3:14"},"nodeType":"YulFunctionCall","src":"4497:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4484:12:14"},"nodeType":"YulFunctionCall","src":"4484:32:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4474:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4060:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4071:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4083:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4091:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4099:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4107:6:14","type":""}],"src":"3997:525:14"},{"body":{"nodeType":"YulBlock","src":"4628:102:14","statements":[{"nodeType":"YulAssignment","src":"4638:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4650:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"4661:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4646:3:14"},"nodeType":"YulFunctionCall","src":"4646:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4638:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4680:9:14"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4695:6:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4711:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"4716:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4707:3:14"},"nodeType":"YulFunctionCall","src":"4707:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"4720:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4703:3:14"},"nodeType":"YulFunctionCall","src":"4703:19:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4691:3:14"},"nodeType":"YulFunctionCall","src":"4691:32:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4673:6:14"},"nodeType":"YulFunctionCall","src":"4673:51:14"},"nodeType":"YulExpressionStatement","src":"4673:51:14"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4597:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4608:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4619:4:14","type":""}],"src":"4527:203:14"},{"body":{"nodeType":"YulBlock","src":"4807:275:14","statements":[{"body":{"nodeType":"YulBlock","src":"4856:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4865:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4868:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4858:6:14"},"nodeType":"YulFunctionCall","src":"4858:12:14"},"nodeType":"YulExpressionStatement","src":"4858:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4835:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"4843:4:14","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4831:3:14"},"nodeType":"YulFunctionCall","src":"4831:17:14"},{"name":"end","nodeType":"YulIdentifier","src":"4850:3:14"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4827:3:14"},"nodeType":"YulFunctionCall","src":"4827:27:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4820:6:14"},"nodeType":"YulFunctionCall","src":"4820:35:14"},"nodeType":"YulIf","src":"4817:55:14"},{"nodeType":"YulAssignment","src":"4881:30:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4904:6:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4891:12:14"},"nodeType":"YulFunctionCall","src":"4891:20:14"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4881:6:14"}]},{"body":{"nodeType":"YulBlock","src":"4954:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4963:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4966:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4956:6:14"},"nodeType":"YulFunctionCall","src":"4956:12:14"},"nodeType":"YulExpressionStatement","src":"4956:12:14"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4926:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"4934:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4923:2:14"},"nodeType":"YulFunctionCall","src":"4923:30:14"},"nodeType":"YulIf","src":"4920:50:14"},{"nodeType":"YulAssignment","src":"4979:29:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4995:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"5003:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4991:3:14"},"nodeType":"YulFunctionCall","src":"4991:17:14"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"4979:8:14"}]},{"body":{"nodeType":"YulBlock","src":"5060:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5069:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5072:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5062:6:14"},"nodeType":"YulFunctionCall","src":"5062:12:14"},"nodeType":"YulExpressionStatement","src":"5062:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5031:6:14"},{"name":"length","nodeType":"YulIdentifier","src":"5039:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5027:3:14"},"nodeType":"YulFunctionCall","src":"5027:19:14"},{"kind":"number","nodeType":"YulLiteral","src":"5048:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5023:3:14"},"nodeType":"YulFunctionCall","src":"5023:30:14"},{"name":"end","nodeType":"YulIdentifier","src":"5055:3:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5020:2:14"},"nodeType":"YulFunctionCall","src":"5020:39:14"},"nodeType":"YulIf","src":"5017:59:14"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4770:6:14","type":""},{"name":"end","nodeType":"YulTypedName","src":"4778:3:14","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"4786:8:14","type":""},{"name":"length","nodeType":"YulTypedName","src":"4796:6:14","type":""}],"src":"4735:347:14"},{"body":{"nodeType":"YulBlock","src":"5210:489:14","statements":[{"body":{"nodeType":"YulBlock","src":"5256:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5265:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5268:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5258:6:14"},"nodeType":"YulFunctionCall","src":"5258:12:14"},"nodeType":"YulExpressionStatement","src":"5258:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5231:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"5240:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5227:3:14"},"nodeType":"YulFunctionCall","src":"5227:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"5252:2:14","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5223:3:14"},"nodeType":"YulFunctionCall","src":"5223:32:14"},"nodeType":"YulIf","src":"5220:52:14"},{"nodeType":"YulVariableDeclaration","src":"5281:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5307:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5294:12:14"},"nodeType":"YulFunctionCall","src":"5294:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5285:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5351:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"5326:24:14"},"nodeType":"YulFunctionCall","src":"5326:31:14"},"nodeType":"YulExpressionStatement","src":"5326:31:14"},{"nodeType":"YulAssignment","src":"5366:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"5376:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5366:6:14"}]},{"nodeType":"YulAssignment","src":"5390:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5417:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"5428:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5413:3:14"},"nodeType":"YulFunctionCall","src":"5413:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5400:12:14"},"nodeType":"YulFunctionCall","src":"5400:32:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5390:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"5441:46:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5472:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"5483:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5468:3:14"},"nodeType":"YulFunctionCall","src":"5468:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5455:12:14"},"nodeType":"YulFunctionCall","src":"5455:32:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5445:6:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"5530:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5539:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5542:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5532:6:14"},"nodeType":"YulFunctionCall","src":"5532:12:14"},"nodeType":"YulExpressionStatement","src":"5532:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5502:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"5510:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5499:2:14"},"nodeType":"YulFunctionCall","src":"5499:30:14"},"nodeType":"YulIf","src":"5496:50:14"},{"nodeType":"YulVariableDeclaration","src":"5555:84:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5611:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"5622:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5607:3:14"},"nodeType":"YulFunctionCall","src":"5607:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5631:7:14"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"5581:25:14"},"nodeType":"YulFunctionCall","src":"5581:58:14"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"5559:8:14","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"5569:8:14","type":""}]},{"nodeType":"YulAssignment","src":"5648:18:14","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"5658:8:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5648:6:14"}]},{"nodeType":"YulAssignment","src":"5675:18:14","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"5685:8:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5675:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5152:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5163:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5175:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5183:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5191:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5199:6:14","type":""}],"src":"5087:612:14"},{"body":{"nodeType":"YulBlock","src":"5823:427:14","statements":[{"nodeType":"YulVariableDeclaration","src":"5833:12:14","value":{"kind":"number","nodeType":"YulLiteral","src":"5843:2:14","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5837:2:14","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5861:9:14"},{"name":"_1","nodeType":"YulIdentifier","src":"5872:2:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5854:6:14"},"nodeType":"YulFunctionCall","src":"5854:21:14"},"nodeType":"YulExpressionStatement","src":"5854:21:14"},{"nodeType":"YulVariableDeclaration","src":"5884:27:14","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5904:6:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5898:5:14"},"nodeType":"YulFunctionCall","src":"5898:13:14"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5888:6:14","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5931:9:14"},{"name":"_1","nodeType":"YulIdentifier","src":"5942:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5927:3:14"},"nodeType":"YulFunctionCall","src":"5927:18:14"},{"name":"length","nodeType":"YulIdentifier","src":"5947:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5920:6:14"},"nodeType":"YulFunctionCall","src":"5920:34:14"},"nodeType":"YulExpressionStatement","src":"5920:34:14"},{"nodeType":"YulVariableDeclaration","src":"5963:10:14","value":{"kind":"number","nodeType":"YulLiteral","src":"5972:1:14","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5967:1:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"6032:90:14","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6061:9:14"},{"name":"i","nodeType":"YulIdentifier","src":"6072:1:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6057:3:14"},"nodeType":"YulFunctionCall","src":"6057:17:14"},{"kind":"number","nodeType":"YulLiteral","src":"6076:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6053:3:14"},"nodeType":"YulFunctionCall","src":"6053:26:14"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6095:6:14"},{"name":"i","nodeType":"YulIdentifier","src":"6103:1:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6091:3:14"},"nodeType":"YulFunctionCall","src":"6091:14:14"},{"name":"_1","nodeType":"YulIdentifier","src":"6107:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6087:3:14"},"nodeType":"YulFunctionCall","src":"6087:23:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6081:5:14"},"nodeType":"YulFunctionCall","src":"6081:30:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6046:6:14"},"nodeType":"YulFunctionCall","src":"6046:66:14"},"nodeType":"YulExpressionStatement","src":"6046:66:14"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5993:1:14"},{"name":"length","nodeType":"YulIdentifier","src":"5996:6:14"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5990:2:14"},"nodeType":"YulFunctionCall","src":"5990:13:14"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6004:19:14","statements":[{"nodeType":"YulAssignment","src":"6006:15:14","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6015:1:14"},{"name":"_1","nodeType":"YulIdentifier","src":"6018:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6011:3:14"},"nodeType":"YulFunctionCall","src":"6011:10:14"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6006:1:14"}]}]},"pre":{"nodeType":"YulBlock","src":"5986:3:14","statements":[]},"src":"5982:140:14"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6146:9:14"},{"name":"length","nodeType":"YulIdentifier","src":"6157:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6142:3:14"},"nodeType":"YulFunctionCall","src":"6142:22:14"},{"kind":"number","nodeType":"YulLiteral","src":"6166:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6138:3:14"},"nodeType":"YulFunctionCall","src":"6138:31:14"},{"kind":"number","nodeType":"YulLiteral","src":"6171:1:14","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6131:6:14"},"nodeType":"YulFunctionCall","src":"6131:42:14"},"nodeType":"YulExpressionStatement","src":"6131:42:14"},{"nodeType":"YulAssignment","src":"6182:62:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6198:9:14"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6217:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"6225:2:14","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6213:3:14"},"nodeType":"YulFunctionCall","src":"6213:15:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6234:2:14","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6230:3:14"},"nodeType":"YulFunctionCall","src":"6230:7:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6209:3:14"},"nodeType":"YulFunctionCall","src":"6209:29:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6194:3:14"},"nodeType":"YulFunctionCall","src":"6194:45:14"},{"kind":"number","nodeType":"YulLiteral","src":"6241:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6190:3:14"},"nodeType":"YulFunctionCall","src":"6190:54:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6182:4:14"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5792:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5803:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5814:4:14","type":""}],"src":"5704:546:14"},{"body":{"nodeType":"YulBlock","src":"6342:228:14","statements":[{"body":{"nodeType":"YulBlock","src":"6388:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6397:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6400:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6390:6:14"},"nodeType":"YulFunctionCall","src":"6390:12:14"},"nodeType":"YulExpressionStatement","src":"6390:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6363:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"6372:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6359:3:14"},"nodeType":"YulFunctionCall","src":"6359:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"6384:2:14","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6355:3:14"},"nodeType":"YulFunctionCall","src":"6355:32:14"},"nodeType":"YulIf","src":"6352:52:14"},{"nodeType":"YulVariableDeclaration","src":"6413:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6439:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6426:12:14"},"nodeType":"YulFunctionCall","src":"6426:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6417:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6483:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"6458:24:14"},"nodeType":"YulFunctionCall","src":"6458:31:14"},"nodeType":"YulExpressionStatement","src":"6458:31:14"},{"nodeType":"YulAssignment","src":"6498:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"6508:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6498:6:14"}]},{"nodeType":"YulAssignment","src":"6522:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6549:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"6560:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6545:3:14"},"nodeType":"YulFunctionCall","src":"6545:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6532:12:14"},"nodeType":"YulFunctionCall","src":"6532:32:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6522:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6300:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6311:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6323:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6331:6:14","type":""}],"src":"6255:315:14"},{"body":{"nodeType":"YulBlock","src":"6679:279:14","statements":[{"body":{"nodeType":"YulBlock","src":"6725:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6734:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6737:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6727:6:14"},"nodeType":"YulFunctionCall","src":"6727:12:14"},"nodeType":"YulExpressionStatement","src":"6727:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6700:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"6709:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6696:3:14"},"nodeType":"YulFunctionCall","src":"6696:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"6721:2:14","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6692:3:14"},"nodeType":"YulFunctionCall","src":"6692:32:14"},"nodeType":"YulIf","src":"6689:52:14"},{"nodeType":"YulVariableDeclaration","src":"6750:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6776:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6763:12:14"},"nodeType":"YulFunctionCall","src":"6763:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6754:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6820:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"6795:24:14"},"nodeType":"YulFunctionCall","src":"6795:31:14"},"nodeType":"YulExpressionStatement","src":"6795:31:14"},{"nodeType":"YulAssignment","src":"6835:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"6845:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6835:6:14"}]},{"nodeType":"YulAssignment","src":"6859:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6886:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"6897:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6882:3:14"},"nodeType":"YulFunctionCall","src":"6882:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6869:12:14"},"nodeType":"YulFunctionCall","src":"6869:32:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6859:6:14"}]},{"nodeType":"YulAssignment","src":"6910:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6937:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"6948:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6933:3:14"},"nodeType":"YulFunctionCall","src":"6933:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6920:12:14"},"nodeType":"YulFunctionCall","src":"6920:32:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6910:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6629:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6640:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6652:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6660:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6668:6:14","type":""}],"src":"6575:383:14"},{"body":{"nodeType":"YulBlock","src":"7027:648:14","statements":[{"body":{"nodeType":"YulBlock","src":"7076:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7085:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7088:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7078:6:14"},"nodeType":"YulFunctionCall","src":"7078:12:14"},"nodeType":"YulExpressionStatement","src":"7078:12:14"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7055:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"7063:4:14","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7051:3:14"},"nodeType":"YulFunctionCall","src":"7051:17:14"},{"name":"end","nodeType":"YulIdentifier","src":"7070:3:14"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7047:3:14"},"nodeType":"YulFunctionCall","src":"7047:27:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7040:6:14"},"nodeType":"YulFunctionCall","src":"7040:35:14"},"nodeType":"YulIf","src":"7037:55:14"},{"nodeType":"YulVariableDeclaration","src":"7101:30:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7124:6:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7111:12:14"},"nodeType":"YulFunctionCall","src":"7111:20:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7105:2:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7140:14:14","value":{"kind":"number","nodeType":"YulLiteral","src":"7150:4:14","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7144:2:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"7193:22:14","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7195:16:14"},"nodeType":"YulFunctionCall","src":"7195:18:14"},"nodeType":"YulExpressionStatement","src":"7195:18:14"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7169:2:14"},{"kind":"number","nodeType":"YulLiteral","src":"7173:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7166:2:14"},"nodeType":"YulFunctionCall","src":"7166:26:14"},"nodeType":"YulIf","src":"7163:52:14"},{"nodeType":"YulVariableDeclaration","src":"7224:20:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7238:1:14","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"7241:2:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7234:3:14"},"nodeType":"YulFunctionCall","src":"7234:10:14"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"7228:2:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7253:39:14","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7284:2:14"},{"name":"_2","nodeType":"YulIdentifier","src":"7288:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7280:3:14"},"nodeType":"YulFunctionCall","src":"7280:11:14"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"7264:15:14"},"nodeType":"YulFunctionCall","src":"7264:28:14"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"7257:3:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7301:16:14","value":{"name":"dst","nodeType":"YulIdentifier","src":"7314:3:14"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"7305:5:14","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7333:3:14"},{"name":"_1","nodeType":"YulIdentifier","src":"7338:2:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7326:6:14"},"nodeType":"YulFunctionCall","src":"7326:15:14"},"nodeType":"YulExpressionStatement","src":"7326:15:14"},{"nodeType":"YulAssignment","src":"7350:19:14","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7361:3:14"},{"name":"_2","nodeType":"YulIdentifier","src":"7366:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7357:3:14"},"nodeType":"YulFunctionCall","src":"7357:12:14"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"7350:3:14"}]},{"nodeType":"YulVariableDeclaration","src":"7378:38:14","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7400:6:14"},{"name":"_3","nodeType":"YulIdentifier","src":"7408:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7396:3:14"},"nodeType":"YulFunctionCall","src":"7396:15:14"},{"name":"_2","nodeType":"YulIdentifier","src":"7413:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7392:3:14"},"nodeType":"YulFunctionCall","src":"7392:24:14"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"7382:6:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"7444:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7453:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7456:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7446:6:14"},"nodeType":"YulFunctionCall","src":"7446:12:14"},"nodeType":"YulExpressionStatement","src":"7446:12:14"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"7431:6:14"},{"name":"end","nodeType":"YulIdentifier","src":"7439:3:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7428:2:14"},"nodeType":"YulFunctionCall","src":"7428:15:14"},"nodeType":"YulIf","src":"7425:35:14"},{"nodeType":"YulVariableDeclaration","src":"7469:26:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7484:6:14"},{"name":"_2","nodeType":"YulIdentifier","src":"7492:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7480:3:14"},"nodeType":"YulFunctionCall","src":"7480:15:14"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"7473:3:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"7560:86:14","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7581:3:14"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7599:3:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7586:12:14"},"nodeType":"YulFunctionCall","src":"7586:17:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7574:6:14"},"nodeType":"YulFunctionCall","src":"7574:30:14"},"nodeType":"YulExpressionStatement","src":"7574:30:14"},{"nodeType":"YulAssignment","src":"7617:19:14","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7628:3:14"},{"name":"_2","nodeType":"YulIdentifier","src":"7633:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7624:3:14"},"nodeType":"YulFunctionCall","src":"7624:12:14"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"7617:3:14"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7515:3:14"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"7520:6:14"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7512:2:14"},"nodeType":"YulFunctionCall","src":"7512:15:14"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7528:23:14","statements":[{"nodeType":"YulAssignment","src":"7530:19:14","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7541:3:14"},{"name":"_2","nodeType":"YulIdentifier","src":"7546:2:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:14"},"nodeType":"YulFunctionCall","src":"7537:12:14"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"7530:3:14"}]}]},"pre":{"nodeType":"YulBlock","src":"7508:3:14","statements":[]},"src":"7504:142:14"},{"nodeType":"YulAssignment","src":"7655:14:14","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"7664:5:14"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"7655:5:14"}]}]},"name":"abi_decode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7001:6:14","type":""},{"name":"end","nodeType":"YulTypedName","src":"7009:3:14","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"7017:5:14","type":""}],"src":"6963:712:14"},{"body":{"nodeType":"YulBlock","src":"7877:874:14","statements":[{"body":{"nodeType":"YulBlock","src":"7924:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7933:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7936:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7926:6:14"},"nodeType":"YulFunctionCall","src":"7926:12:14"},"nodeType":"YulExpressionStatement","src":"7926:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7898:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"7907:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7894:3:14"},"nodeType":"YulFunctionCall","src":"7894:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"7919:3:14","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7890:3:14"},"nodeType":"YulFunctionCall","src":"7890:33:14"},"nodeType":"YulIf","src":"7887:53:14"},{"nodeType":"YulVariableDeclaration","src":"7949:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7975:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7962:12:14"},"nodeType":"YulFunctionCall","src":"7962:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7953:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8019:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"7994:24:14"},"nodeType":"YulFunctionCall","src":"7994:31:14"},"nodeType":"YulExpressionStatement","src":"7994:31:14"},{"nodeType":"YulAssignment","src":"8034:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"8044:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8034:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"8058:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8090:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"8101:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8086:3:14"},"nodeType":"YulFunctionCall","src":"8086:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8073:12:14"},"nodeType":"YulFunctionCall","src":"8073:32:14"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8062:7:14","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8139:7:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"8114:24:14"},"nodeType":"YulFunctionCall","src":"8114:33:14"},"nodeType":"YulExpressionStatement","src":"8114:33:14"},{"nodeType":"YulAssignment","src":"8156:17:14","value":{"name":"value_1","nodeType":"YulIdentifier","src":"8166:7:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8156:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"8182:46:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8213:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"8224:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8209:3:14"},"nodeType":"YulFunctionCall","src":"8209:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8196:12:14"},"nodeType":"YulFunctionCall","src":"8196:32:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8186:6:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8237:28:14","value":{"kind":"number","nodeType":"YulLiteral","src":"8247:18:14","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8241:2:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"8292:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8301:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8304:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8294:6:14"},"nodeType":"YulFunctionCall","src":"8294:12:14"},"nodeType":"YulExpressionStatement","src":"8294:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8280:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"8288:2:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8277:2:14"},"nodeType":"YulFunctionCall","src":"8277:14:14"},"nodeType":"YulIf","src":"8274:34:14"},{"nodeType":"YulAssignment","src":"8317:71:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8360:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"8371:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8356:3:14"},"nodeType":"YulFunctionCall","src":"8356:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8380:7:14"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"8327:28:14"},"nodeType":"YulFunctionCall","src":"8327:61:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"8317:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"8397:48:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8430:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"8441:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8426:3:14"},"nodeType":"YulFunctionCall","src":"8426:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8413:12:14"},"nodeType":"YulFunctionCall","src":"8413:32:14"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"8401:8:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"8474:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8483:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8486:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8476:6:14"},"nodeType":"YulFunctionCall","src":"8476:12:14"},"nodeType":"YulExpressionStatement","src":"8476:12:14"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"8460:8:14"},{"name":"_1","nodeType":"YulIdentifier","src":"8470:2:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8457:2:14"},"nodeType":"YulFunctionCall","src":"8457:16:14"},"nodeType":"YulIf","src":"8454:36:14"},{"nodeType":"YulAssignment","src":"8499:73:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8542:9:14"},{"name":"offset_1","nodeType":"YulIdentifier","src":"8553:8:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8538:3:14"},"nodeType":"YulFunctionCall","src":"8538:24:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8564:7:14"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"8509:28:14"},"nodeType":"YulFunctionCall","src":"8509:63:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"8499:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"8581:49:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8614:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"8625:3:14","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8610:3:14"},"nodeType":"YulFunctionCall","src":"8610:19:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8597:12:14"},"nodeType":"YulFunctionCall","src":"8597:33:14"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"8585:8:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"8659:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8668:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8671:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8661:6:14"},"nodeType":"YulFunctionCall","src":"8661:12:14"},"nodeType":"YulExpressionStatement","src":"8661:12:14"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"8645:8:14"},{"name":"_1","nodeType":"YulIdentifier","src":"8655:2:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8642:2:14"},"nodeType":"YulFunctionCall","src":"8642:16:14"},"nodeType":"YulIf","src":"8639:36:14"},{"nodeType":"YulAssignment","src":"8684:61:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8715:9:14"},{"name":"offset_2","nodeType":"YulIdentifier","src":"8726:8:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8711:3:14"},"nodeType":"YulFunctionCall","src":"8711:24:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8737:7:14"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"8694:16:14"},"nodeType":"YulFunctionCall","src":"8694:51:14"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"8684:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7811:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7822:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7834:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7842:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7850:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7858:6:14","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7866:6:14","type":""}],"src":"7680:1071:14"},{"body":{"nodeType":"YulBlock","src":"8860:352:14","statements":[{"body":{"nodeType":"YulBlock","src":"8906:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8915:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8918:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8908:6:14"},"nodeType":"YulFunctionCall","src":"8908:12:14"},"nodeType":"YulExpressionStatement","src":"8908:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8881:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"8890:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8877:3:14"},"nodeType":"YulFunctionCall","src":"8877:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"8902:2:14","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8873:3:14"},"nodeType":"YulFunctionCall","src":"8873:32:14"},"nodeType":"YulIf","src":"8870:52:14"},{"nodeType":"YulVariableDeclaration","src":"8931:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8957:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8944:12:14"},"nodeType":"YulFunctionCall","src":"8944:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8935:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9001:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"8976:24:14"},"nodeType":"YulFunctionCall","src":"8976:31:14"},"nodeType":"YulExpressionStatement","src":"8976:31:14"},{"nodeType":"YulAssignment","src":"9016:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"9026:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9016:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"9040:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9072:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"9083:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9068:3:14"},"nodeType":"YulFunctionCall","src":"9068:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9055:12:14"},"nodeType":"YulFunctionCall","src":"9055:32:14"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9044:7:14","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9121:7:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"9096:24:14"},"nodeType":"YulFunctionCall","src":"9096:33:14"},"nodeType":"YulExpressionStatement","src":"9096:33:14"},{"nodeType":"YulAssignment","src":"9138:17:14","value":{"name":"value_1","nodeType":"YulIdentifier","src":"9148:7:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9138:6:14"}]},{"nodeType":"YulAssignment","src":"9164:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9191:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"9202:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9187:3:14"},"nodeType":"YulFunctionCall","src":"9187:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9174:12:14"},"nodeType":"YulFunctionCall","src":"9174:32:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9164:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8810:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8821:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8833:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8841:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8849:6:14","type":""}],"src":"8756:456:14"},{"body":{"nodeType":"YulBlock","src":"9318:76:14","statements":[{"nodeType":"YulAssignment","src":"9328:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9340:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"9351:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9336:3:14"},"nodeType":"YulFunctionCall","src":"9336:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9328:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9370:9:14"},{"name":"value0","nodeType":"YulIdentifier","src":"9381:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9363:6:14"},"nodeType":"YulFunctionCall","src":"9363:25:14"},"nodeType":"YulExpressionStatement","src":"9363:25:14"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9287:9:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9298:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9309:4:14","type":""}],"src":"9217:177:14"},{"body":{"nodeType":"YulBlock","src":"9488:320:14","statements":[{"body":{"nodeType":"YulBlock","src":"9534:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9543:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9546:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9536:6:14"},"nodeType":"YulFunctionCall","src":"9536:12:14"},"nodeType":"YulExpressionStatement","src":"9536:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9509:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"9518:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9505:3:14"},"nodeType":"YulFunctionCall","src":"9505:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"9530:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9501:3:14"},"nodeType":"YulFunctionCall","src":"9501:32:14"},"nodeType":"YulIf","src":"9498:52:14"},{"nodeType":"YulVariableDeclaration","src":"9559:37:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9586:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9573:12:14"},"nodeType":"YulFunctionCall","src":"9573:23:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9563:6:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"9639:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9648:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9651:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9641:6:14"},"nodeType":"YulFunctionCall","src":"9641:12:14"},"nodeType":"YulExpressionStatement","src":"9641:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9611:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"9619:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9608:2:14"},"nodeType":"YulFunctionCall","src":"9608:30:14"},"nodeType":"YulIf","src":"9605:50:14"},{"nodeType":"YulVariableDeclaration","src":"9664:84:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9720:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"9731:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9716:3:14"},"nodeType":"YulFunctionCall","src":"9716:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9740:7:14"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"9690:25:14"},"nodeType":"YulFunctionCall","src":"9690:58:14"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"9668:8:14","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"9678:8:14","type":""}]},{"nodeType":"YulAssignment","src":"9757:18:14","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"9767:8:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9757:6:14"}]},{"nodeType":"YulAssignment","src":"9784:18:14","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"9794:8:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9784:6:14"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9446:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9457:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9469:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9477:6:14","type":""}],"src":"9399:409:14"},{"body":{"nodeType":"YulBlock","src":"9883:110:14","statements":[{"body":{"nodeType":"YulBlock","src":"9929:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9938:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9941:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9931:6:14"},"nodeType":"YulFunctionCall","src":"9931:12:14"},"nodeType":"YulExpressionStatement","src":"9931:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9904:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"9913:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9900:3:14"},"nodeType":"YulFunctionCall","src":"9900:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"9925:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9896:3:14"},"nodeType":"YulFunctionCall","src":"9896:32:14"},"nodeType":"YulIf","src":"9893:52:14"},{"nodeType":"YulAssignment","src":"9954:33:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9977:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9964:12:14"},"nodeType":"YulFunctionCall","src":"9964:23:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9954:6:14"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9849:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9860:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9872:6:14","type":""}],"src":"9813:180:14"},{"body":{"nodeType":"YulBlock","src":"10145:587:14","statements":[{"body":{"nodeType":"YulBlock","src":"10192:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10201:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10204:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10194:6:14"},"nodeType":"YulFunctionCall","src":"10194:12:14"},"nodeType":"YulExpressionStatement","src":"10194:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10166:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"10175:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10162:3:14"},"nodeType":"YulFunctionCall","src":"10162:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"10187:3:14","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10158:3:14"},"nodeType":"YulFunctionCall","src":"10158:33:14"},"nodeType":"YulIf","src":"10155:53:14"},{"nodeType":"YulVariableDeclaration","src":"10217:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10243:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10230:12:14"},"nodeType":"YulFunctionCall","src":"10230:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10221:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10287:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"10262:24:14"},"nodeType":"YulFunctionCall","src":"10262:31:14"},"nodeType":"YulExpressionStatement","src":"10262:31:14"},{"nodeType":"YulAssignment","src":"10302:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"10312:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10302:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"10326:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10358:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"10369:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10354:3:14"},"nodeType":"YulFunctionCall","src":"10354:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10341:12:14"},"nodeType":"YulFunctionCall","src":"10341:32:14"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"10330:7:14","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"10407:7:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"10382:24:14"},"nodeType":"YulFunctionCall","src":"10382:33:14"},"nodeType":"YulExpressionStatement","src":"10382:33:14"},{"nodeType":"YulAssignment","src":"10424:17:14","value":{"name":"value_1","nodeType":"YulIdentifier","src":"10434:7:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10424:6:14"}]},{"nodeType":"YulAssignment","src":"10450:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10477:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"10488:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10473:3:14"},"nodeType":"YulFunctionCall","src":"10473:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10460:12:14"},"nodeType":"YulFunctionCall","src":"10460:32:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"10450:6:14"}]},{"nodeType":"YulAssignment","src":"10501:42:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10528:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"10539:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10524:3:14"},"nodeType":"YulFunctionCall","src":"10524:18:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10511:12:14"},"nodeType":"YulFunctionCall","src":"10511:32:14"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"10501:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"10552:47:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10583:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"10594:3:14","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10579:3:14"},"nodeType":"YulFunctionCall","src":"10579:19:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10566:12:14"},"nodeType":"YulFunctionCall","src":"10566:33:14"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10556:6:14","type":""}]},{"body":{"nodeType":"YulBlock","src":"10642:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10651:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10654:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10644:6:14"},"nodeType":"YulFunctionCall","src":"10644:12:14"},"nodeType":"YulExpressionStatement","src":"10644:12:14"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10614:6:14"},{"kind":"number","nodeType":"YulLiteral","src":"10622:18:14","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10611:2:14"},"nodeType":"YulFunctionCall","src":"10611:30:14"},"nodeType":"YulIf","src":"10608:50:14"},{"nodeType":"YulAssignment","src":"10667:59:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10698:9:14"},{"name":"offset","nodeType":"YulIdentifier","src":"10709:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10694:3:14"},"nodeType":"YulFunctionCall","src":"10694:22:14"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10718:7:14"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"10677:16:14"},"nodeType":"YulFunctionCall","src":"10677:49:14"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"10667:6:14"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10079:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10090:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10102:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10110:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10118:6:14","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10126:6:14","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10134:6:14","type":""}],"src":"9998:734:14"},{"body":{"nodeType":"YulBlock","src":"10894:188:14","statements":[{"nodeType":"YulAssignment","src":"10904:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10916:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"10927:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10912:3:14"},"nodeType":"YulFunctionCall","src":"10912:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10904:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10946:9:14"},{"name":"value0","nodeType":"YulIdentifier","src":"10957:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10939:6:14"},"nodeType":"YulFunctionCall","src":"10939:25:14"},"nodeType":"YulExpressionStatement","src":"10939:25:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10984:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"10995:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10980:3:14"},"nodeType":"YulFunctionCall","src":"10980:18:14"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11004:6:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11020:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"11025:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11016:3:14"},"nodeType":"YulFunctionCall","src":"11016:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"11029:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11012:3:14"},"nodeType":"YulFunctionCall","src":"11012:19:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11000:3:14"},"nodeType":"YulFunctionCall","src":"11000:32:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10973:6:14"},"nodeType":"YulFunctionCall","src":"10973:60:14"},"nodeType":"YulExpressionStatement","src":"10973:60:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11053:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"11064:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11049:3:14"},"nodeType":"YulFunctionCall","src":"11049:18:14"},{"name":"value2","nodeType":"YulIdentifier","src":"11069:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11042:6:14"},"nodeType":"YulFunctionCall","src":"11042:34:14"},"nodeType":"YulExpressionStatement","src":"11042:34:14"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10847:9:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10858:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10866:6:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10874:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10885:4:14","type":""}],"src":"10737:345:14"},{"body":{"nodeType":"YulBlock","src":"11157:177:14","statements":[{"body":{"nodeType":"YulBlock","src":"11203:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11212:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11215:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11205:6:14"},"nodeType":"YulFunctionCall","src":"11205:12:14"},"nodeType":"YulExpressionStatement","src":"11205:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11178:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"11187:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11174:3:14"},"nodeType":"YulFunctionCall","src":"11174:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"11199:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11170:3:14"},"nodeType":"YulFunctionCall","src":"11170:32:14"},"nodeType":"YulIf","src":"11167:52:14"},{"nodeType":"YulVariableDeclaration","src":"11228:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11254:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11241:12:14"},"nodeType":"YulFunctionCall","src":"11241:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11232:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11298:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"11273:24:14"},"nodeType":"YulFunctionCall","src":"11273:31:14"},"nodeType":"YulExpressionStatement","src":"11273:31:14"},{"nodeType":"YulAssignment","src":"11313:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"11323:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11313:6:14"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11123:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11134:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11146:6:14","type":""}],"src":"11087:247:14"},{"body":{"nodeType":"YulBlock","src":"11371:95:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11388:1:14","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11395:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"11400:10:14","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11391:3:14"},"nodeType":"YulFunctionCall","src":"11391:20:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11381:6:14"},"nodeType":"YulFunctionCall","src":"11381:31:14"},"nodeType":"YulExpressionStatement","src":"11381:31:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11428:1:14","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11431:4:14","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11421:6:14"},"nodeType":"YulFunctionCall","src":"11421:15:14"},"nodeType":"YulExpressionStatement","src":"11421:15:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11452:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11455:4:14","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11445:6:14"},"nodeType":"YulFunctionCall","src":"11445:15:14"},"nodeType":"YulExpressionStatement","src":"11445:15:14"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"11339:127:14"},{"body":{"nodeType":"YulBlock","src":"11513:76:14","statements":[{"body":{"nodeType":"YulBlock","src":"11567:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11576:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11579:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11569:6:14"},"nodeType":"YulFunctionCall","src":"11569:12:14"},"nodeType":"YulExpressionStatement","src":"11569:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11536:5:14"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11557:5:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11550:6:14"},"nodeType":"YulFunctionCall","src":"11550:13:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11543:6:14"},"nodeType":"YulFunctionCall","src":"11543:21:14"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11533:2:14"},"nodeType":"YulFunctionCall","src":"11533:32:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11526:6:14"},"nodeType":"YulFunctionCall","src":"11526:40:14"},"nodeType":"YulIf","src":"11523:60:14"}]},"name":"validator_revert_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11502:5:14","type":""}],"src":"11471:118:14"},{"body":{"nodeType":"YulBlock","src":"11661:174:14","statements":[{"body":{"nodeType":"YulBlock","src":"11707:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11716:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11719:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11709:6:14"},"nodeType":"YulFunctionCall","src":"11709:12:14"},"nodeType":"YulExpressionStatement","src":"11709:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11682:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"11691:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11678:3:14"},"nodeType":"YulFunctionCall","src":"11678:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"11703:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11674:3:14"},"nodeType":"YulFunctionCall","src":"11674:32:14"},"nodeType":"YulIf","src":"11671:52:14"},{"nodeType":"YulVariableDeclaration","src":"11732:36:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11758:9:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11745:12:14"},"nodeType":"YulFunctionCall","src":"11745:23:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11736:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11799:5:14"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"11777:21:14"},"nodeType":"YulFunctionCall","src":"11777:28:14"},"nodeType":"YulExpressionStatement","src":"11777:28:14"},{"nodeType":"YulAssignment","src":"11814:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"11824:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11814:6:14"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11627:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11638:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11650:6:14","type":""}],"src":"11594:241:14"},{"body":{"nodeType":"YulBlock","src":"11991:234:14","statements":[{"nodeType":"YulAssignment","src":"12001:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12013:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"12024:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12009:3:14"},"nodeType":"YulFunctionCall","src":"12009:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12001:4:14"}]},{"nodeType":"YulVariableDeclaration","src":"12036:29:14","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12054:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"12059:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12050:3:14"},"nodeType":"YulFunctionCall","src":"12050:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"12063:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12046:3:14"},"nodeType":"YulFunctionCall","src":"12046:19:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12040:2:14","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12081:9:14"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12096:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"12104:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12092:3:14"},"nodeType":"YulFunctionCall","src":"12092:15:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12074:6:14"},"nodeType":"YulFunctionCall","src":"12074:34:14"},"nodeType":"YulExpressionStatement","src":"12074:34:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12128:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"12139:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12124:3:14"},"nodeType":"YulFunctionCall","src":"12124:18:14"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12148:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"12156:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12144:3:14"},"nodeType":"YulFunctionCall","src":"12144:15:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12117:6:14"},"nodeType":"YulFunctionCall","src":"12117:43:14"},"nodeType":"YulExpressionStatement","src":"12117:43:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12180:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"12191:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12176:3:14"},"nodeType":"YulFunctionCall","src":"12176:18:14"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12210:6:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12203:6:14"},"nodeType":"YulFunctionCall","src":"12203:14:14"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12196:6:14"},"nodeType":"YulFunctionCall","src":"12196:22:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12169:6:14"},"nodeType":"YulFunctionCall","src":"12169:50:14"},"nodeType":"YulExpressionStatement","src":"12169:50:14"}]},"name":"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11944:9:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11955:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11963:6:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11971:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11982:4:14","type":""}],"src":"11840:385:14"},{"body":{"nodeType":"YulBlock","src":"12262:95:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12279:1:14","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12286:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"12291:10:14","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12282:3:14"},"nodeType":"YulFunctionCall","src":"12282:20:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12272:6:14"},"nodeType":"YulFunctionCall","src":"12272:31:14"},"nodeType":"YulExpressionStatement","src":"12272:31:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12319:1:14","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12322:4:14","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12312:6:14"},"nodeType":"YulFunctionCall","src":"12312:15:14"},"nodeType":"YulExpressionStatement","src":"12312:15:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12343:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12346:4:14","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12336:6:14"},"nodeType":"YulFunctionCall","src":"12336:15:14"},"nodeType":"YulExpressionStatement","src":"12336:15:14"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"12230:127:14"},{"body":{"nodeType":"YulBlock","src":"12409:88:14","statements":[{"body":{"nodeType":"YulBlock","src":"12440:22:14","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"12442:16:14"},"nodeType":"YulFunctionCall","src":"12442:18:14"},"nodeType":"YulExpressionStatement","src":"12442:18:14"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12425:5:14"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12436:1:14","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"12432:3:14"},"nodeType":"YulFunctionCall","src":"12432:6:14"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12422:2:14"},"nodeType":"YulFunctionCall","src":"12422:17:14"},"nodeType":"YulIf","src":"12419:43:14"},{"nodeType":"YulAssignment","src":"12471:20:14","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12482:5:14"},{"kind":"number","nodeType":"YulLiteral","src":"12489:1:14","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12478:3:14"},"nodeType":"YulFunctionCall","src":"12478:13:14"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"12471:3:14"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12391:5:14","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"12401:3:14","type":""}],"src":"12362:135:14"},{"body":{"nodeType":"YulBlock","src":"12659:218:14","statements":[{"nodeType":"YulAssignment","src":"12669:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12681:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"12692:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12677:3:14"},"nodeType":"YulFunctionCall","src":"12677:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12669:4:14"}]},{"nodeType":"YulVariableDeclaration","src":"12704:29:14","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12722:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"12727:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12718:3:14"},"nodeType":"YulFunctionCall","src":"12718:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"12731:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12714:3:14"},"nodeType":"YulFunctionCall","src":"12714:19:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12708:2:14","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12749:9:14"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12764:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"12772:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12760:3:14"},"nodeType":"YulFunctionCall","src":"12760:15:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12742:6:14"},"nodeType":"YulFunctionCall","src":"12742:34:14"},"nodeType":"YulExpressionStatement","src":"12742:34:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12796:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"12807:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12792:3:14"},"nodeType":"YulFunctionCall","src":"12792:18:14"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12816:6:14"},{"name":"_1","nodeType":"YulIdentifier","src":"12824:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12812:3:14"},"nodeType":"YulFunctionCall","src":"12812:15:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12785:6:14"},"nodeType":"YulFunctionCall","src":"12785:43:14"},"nodeType":"YulExpressionStatement","src":"12785:43:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12848:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"12859:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12844:3:14"},"nodeType":"YulFunctionCall","src":"12844:18:14"},{"name":"value2","nodeType":"YulIdentifier","src":"12864:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12837:6:14"},"nodeType":"YulFunctionCall","src":"12837:34:14"},"nodeType":"YulExpressionStatement","src":"12837:34:14"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12612:9:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12623:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12631:6:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12639:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12650:4:14","type":""}],"src":"12502:375:14"},{"body":{"nodeType":"YulBlock","src":"12963:170:14","statements":[{"body":{"nodeType":"YulBlock","src":"13009:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13018:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13021:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13011:6:14"},"nodeType":"YulFunctionCall","src":"13011:12:14"},"nodeType":"YulExpressionStatement","src":"13011:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12984:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"12993:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12980:3:14"},"nodeType":"YulFunctionCall","src":"12980:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"13005:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12976:3:14"},"nodeType":"YulFunctionCall","src":"12976:32:14"},"nodeType":"YulIf","src":"12973:52:14"},{"nodeType":"YulVariableDeclaration","src":"13034:29:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13053:9:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13047:5:14"},"nodeType":"YulFunctionCall","src":"13047:16:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"13038:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13097:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"13072:24:14"},"nodeType":"YulFunctionCall","src":"13072:31:14"},"nodeType":"YulExpressionStatement","src":"13072:31:14"},{"nodeType":"YulAssignment","src":"13112:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"13122:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13112:6:14"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12929:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12940:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12952:6:14","type":""}],"src":"12882:251:14"},{"body":{"nodeType":"YulBlock","src":"13312:172:14","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13329:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"13340:2:14","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13322:6:14"},"nodeType":"YulFunctionCall","src":"13322:21:14"},"nodeType":"YulExpressionStatement","src":"13322:21:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13363:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"13374:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13359:3:14"},"nodeType":"YulFunctionCall","src":"13359:18:14"},{"kind":"number","nodeType":"YulLiteral","src":"13379:2:14","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13352:6:14"},"nodeType":"YulFunctionCall","src":"13352:30:14"},"nodeType":"YulExpressionStatement","src":"13352:30:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13402:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"13413:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13398:3:14"},"nodeType":"YulFunctionCall","src":"13398:18:14"},{"hexValue":"4d6574686f6420616c6c206e6f7420616c6c6f776564","kind":"string","nodeType":"YulLiteral","src":"13418:24:14","type":"","value":"Method all not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13391:6:14"},"nodeType":"YulFunctionCall","src":"13391:52:14"},"nodeType":"YulExpressionStatement","src":"13391:52:14"},{"nodeType":"YulAssignment","src":"13452:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13464:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"13475:2:14","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13460:3:14"},"nodeType":"YulFunctionCall","src":"13460:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13452:4:14"}]}]},"name":"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13289:9:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13303:4:14","type":""}],"src":"13138:346:14"},{"body":{"nodeType":"YulBlock","src":"13567:167:14","statements":[{"body":{"nodeType":"YulBlock","src":"13613:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13622:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13625:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13615:6:14"},"nodeType":"YulFunctionCall","src":"13615:12:14"},"nodeType":"YulExpressionStatement","src":"13615:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13588:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"13597:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13584:3:14"},"nodeType":"YulFunctionCall","src":"13584:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"13609:2:14","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13580:3:14"},"nodeType":"YulFunctionCall","src":"13580:32:14"},"nodeType":"YulIf","src":"13577:52:14"},{"nodeType":"YulVariableDeclaration","src":"13638:29:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13657:9:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13651:5:14"},"nodeType":"YulFunctionCall","src":"13651:16:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"13642:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13698:5:14"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"13676:21:14"},"nodeType":"YulFunctionCall","src":"13676:28:14"},"nodeType":"YulExpressionStatement","src":"13676:28:14"},{"nodeType":"YulAssignment","src":"13713:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"13723:5:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13713:6:14"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13533:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13544:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13556:6:14","type":""}],"src":"13489:245:14"},{"body":{"nodeType":"YulBlock","src":"13868:145:14","statements":[{"nodeType":"YulAssignment","src":"13878:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13890:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"13901:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13886:3:14"},"nodeType":"YulFunctionCall","src":"13886:18:14"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13878:4:14"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13920:9:14"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13935:6:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13951:3:14","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"13956:1:14","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"13947:3:14"},"nodeType":"YulFunctionCall","src":"13947:11:14"},{"kind":"number","nodeType":"YulLiteral","src":"13960:1:14","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13943:3:14"},"nodeType":"YulFunctionCall","src":"13943:19:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13931:3:14"},"nodeType":"YulFunctionCall","src":"13931:32:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13913:6:14"},"nodeType":"YulFunctionCall","src":"13913:51:14"},"nodeType":"YulExpressionStatement","src":"13913:51:14"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13984:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"13995:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13980:3:14"},"nodeType":"YulFunctionCall","src":"13980:18:14"},{"name":"value1","nodeType":"YulIdentifier","src":"14000:6:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13973:6:14"},"nodeType":"YulFunctionCall","src":"13973:34:14"},"nodeType":"YulExpressionStatement","src":"13973:34:14"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13829:9:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13840:6:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13848:6:14","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13859:4:14","type":""}],"src":"13739:274:14"},{"body":{"nodeType":"YulBlock","src":"14148:201:14","statements":[{"body":{"nodeType":"YulBlock","src":"14186:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14195:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14198:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14188:6:14"},"nodeType":"YulFunctionCall","src":"14188:12:14"},"nodeType":"YulExpressionStatement","src":"14188:12:14"}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14164:10:14"},{"name":"endIndex","nodeType":"YulIdentifier","src":"14176:8:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14161:2:14"},"nodeType":"YulFunctionCall","src":"14161:24:14"},"nodeType":"YulIf","src":"14158:44:14"},{"body":{"nodeType":"YulBlock","src":"14235:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14244:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14247:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14237:6:14"},"nodeType":"YulFunctionCall","src":"14237:12:14"},"nodeType":"YulExpressionStatement","src":"14237:12:14"}]},"condition":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"14217:8:14"},{"name":"length","nodeType":"YulIdentifier","src":"14227:6:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14214:2:14"},"nodeType":"YulFunctionCall","src":"14214:20:14"},"nodeType":"YulIf","src":"14211:40:14"},{"nodeType":"YulAssignment","src":"14260:36:14","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14277:6:14"},{"name":"startIndex","nodeType":"YulIdentifier","src":"14285:10:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14273:3:14"},"nodeType":"YulFunctionCall","src":"14273:23:14"},"variableNames":[{"name":"offsetOut","nodeType":"YulIdentifier","src":"14260:9:14"}]},{"nodeType":"YulAssignment","src":"14305:38:14","value":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"14322:8:14"},{"name":"startIndex","nodeType":"YulIdentifier","src":"14332:10:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14318:3:14"},"nodeType":"YulFunctionCall","src":"14318:25:14"},"variableNames":[{"name":"lengthOut","nodeType":"YulIdentifier","src":"14305:9:14"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"14082:6:14","type":""},{"name":"length","nodeType":"YulTypedName","src":"14090:6:14","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"14098:10:14","type":""},{"name":"endIndex","nodeType":"YulTypedName","src":"14110:8:14","type":""}],"returnVariables":[{"name":"offsetOut","nodeType":"YulTypedName","src":"14123:9:14","type":""},{"name":"lengthOut","nodeType":"YulTypedName","src":"14134:9:14","type":""}],"src":"14018:331:14"},{"body":{"nodeType":"YulBlock","src":"14454:223:14","statements":[{"nodeType":"YulVariableDeclaration","src":"14464:29:14","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14487:5:14"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14474:12:14"},"nodeType":"YulFunctionCall","src":"14474:19:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"14468:2:14","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14502:30:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14516:3:14","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"14521:10:14","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14512:3:14"},"nodeType":"YulFunctionCall","src":"14512:20:14"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"14506:2:14","type":""}]},{"nodeType":"YulAssignment","src":"14541:20:14","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"14554:2:14"},{"name":"_2","nodeType":"YulIdentifier","src":"14558:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14550:3:14"},"nodeType":"YulFunctionCall","src":"14550:11:14"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14541:5:14"}]},{"body":{"nodeType":"YulBlock","src":"14592:79:14","statements":[{"nodeType":"YulAssignment","src":"14606:55:14","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"14623:2:14"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14635:1:14","type":"","value":"3"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14642:1:14","type":"","value":"4"},{"name":"len","nodeType":"YulIdentifier","src":"14645:3:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14638:3:14"},"nodeType":"YulFunctionCall","src":"14638:11:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14631:3:14"},"nodeType":"YulFunctionCall","src":"14631:19:14"},{"name":"_2","nodeType":"YulIdentifier","src":"14652:2:14"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14627:3:14"},"nodeType":"YulFunctionCall","src":"14627:28:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14619:3:14"},"nodeType":"YulFunctionCall","src":"14619:37:14"},{"name":"_2","nodeType":"YulIdentifier","src":"14658:2:14"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14615:3:14"},"nodeType":"YulFunctionCall","src":"14615:46:14"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14606:5:14"}]}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"14576:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"14581:1:14","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14573:2:14"},"nodeType":"YulFunctionCall","src":"14573:10:14"},"nodeType":"YulIf","src":"14570:101:14"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"14429:5:14","type":""},{"name":"len","nodeType":"YulTypedName","src":"14436:3:14","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"14444:5:14","type":""}],"src":"14354:323:14"},{"body":{"nodeType":"YulBlock","src":"14730:77:14","statements":[{"nodeType":"YulAssignment","src":"14740:16:14","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"14751:1:14"},{"name":"y","nodeType":"YulIdentifier","src":"14754:1:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14747:3:14"},"nodeType":"YulFunctionCall","src":"14747:9:14"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"14740:3:14"}]},{"body":{"nodeType":"YulBlock","src":"14779:22:14","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"14781:16:14"},"nodeType":"YulFunctionCall","src":"14781:18:14"},"nodeType":"YulExpressionStatement","src":"14781:18:14"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"14771:1:14"},{"name":"sum","nodeType":"YulIdentifier","src":"14774:3:14"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14768:2:14"},"nodeType":"YulFunctionCall","src":"14768:10:14"},"nodeType":"YulIf","src":"14765:36:14"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"14713:1:14","type":""},{"name":"y","nodeType":"YulTypedName","src":"14716:1:14","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"14722:3:14","type":""}],"src":"14682:125:14"},{"body":{"nodeType":"YulBlock","src":"14935:258:14","statements":[{"body":{"nodeType":"YulBlock","src":"14981:16:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14990:1:14","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14993:1:14","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14983:6:14"},"nodeType":"YulFunctionCall","src":"14983:12:14"},"nodeType":"YulExpressionStatement","src":"14983:12:14"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"14956:7:14"},{"name":"headStart","nodeType":"YulIdentifier","src":"14965:9:14"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14952:3:14"},"nodeType":"YulFunctionCall","src":"14952:23:14"},{"kind":"number","nodeType":"YulLiteral","src":"14977:2:14","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14948:3:14"},"nodeType":"YulFunctionCall","src":"14948:32:14"},"nodeType":"YulIf","src":"14945:52:14"},{"nodeType":"YulAssignment","src":"15006:26:14","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15022:9:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15016:5:14"},"nodeType":"YulFunctionCall","src":"15016:16:14"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"15006:6:14"}]},{"nodeType":"YulVariableDeclaration","src":"15041:38:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15064:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"15075:2:14","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15060:3:14"},"nodeType":"YulFunctionCall","src":"15060:18:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15054:5:14"},"nodeType":"YulFunctionCall","src":"15054:25:14"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"15045:5:14","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15113:5:14"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"15088:24:14"},"nodeType":"YulFunctionCall","src":"15088:31:14"},"nodeType":"YulExpressionStatement","src":"15088:31:14"},{"nodeType":"YulAssignment","src":"15128:15:14","value":{"name":"value","nodeType":"YulIdentifier","src":"15138:5:14"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"15128:6:14"}]},{"nodeType":"YulAssignment","src":"15152:35:14","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15172:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"15183:2:14","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15168:3:14"},"nodeType":"YulFunctionCall","src":"15168:18:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15162:5:14"},"nodeType":"YulFunctionCall","src":"15162:25:14"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"15152:6:14"}]}]},"name":"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14885:9:14","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"14896:7:14","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"14908:6:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14916:6:14","type":""},{"name":"value2","nodeType":"YulTypedName","src":"14924:6:14","type":""}],"src":"14812:381:14"},{"body":{"nodeType":"YulBlock","src":"15345:124:14","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15368:3:14"},{"name":"value0","nodeType":"YulIdentifier","src":"15373:6:14"},{"name":"value1","nodeType":"YulIdentifier","src":"15381:6:14"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"15355:12:14"},"nodeType":"YulFunctionCall","src":"15355:33:14"},"nodeType":"YulExpressionStatement","src":"15355:33:14"},{"nodeType":"YulVariableDeclaration","src":"15397:26:14","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15411:3:14"},{"name":"value1","nodeType":"YulIdentifier","src":"15416:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15407:3:14"},"nodeType":"YulFunctionCall","src":"15407:16:14"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15401:2:14","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"15439:2:14"},{"kind":"number","nodeType":"YulLiteral","src":"15443:1:14","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15432:6:14"},"nodeType":"YulFunctionCall","src":"15432:13:14"},"nodeType":"YulExpressionStatement","src":"15432:13:14"},{"nodeType":"YulAssignment","src":"15454:9:14","value":{"name":"_1","nodeType":"YulIdentifier","src":"15461:2:14"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15454:3:14"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15313:3:14","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15318:6:14","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15326:6:14","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15337:3:14","type":""}],"src":"15198:271:14"}]},"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 abi_decode_array_address_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset_1), dataEnd)\n value2 := value2_1\n value3 := value3_1\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 panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\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 value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\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 abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\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 value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\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 value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\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 }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let _3 := shl(5, _1)\n let dst := allocate_memory(add(_3, _2))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, _3), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { 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 value2 := calldataload(add(headStart, 64))\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_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function validator_revert_bool(value)\n {\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), iszero(iszero(value2)))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\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_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"Method all not allowed\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n {\n if gt(startIndex, endIndex) { revert(0, 0) }\n if gt(endIndex, length) { revert(0, 0) }\n offsetOut := add(offset, startIndex)\n lengthOut := sub(endIndex, startIndex)\n }\n function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n {\n let _1 := calldataload(array)\n let _2 := shl(224, 0xffffffff)\n value := and(_1, _2)\n if lt(len, 4)\n {\n value := and(and(_1, shl(shl(3, sub(4, len)), _2)), _2)\n }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := mload(headStart)\n let value := mload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n value2 := mload(add(headStart, 64))\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}","id":14,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061010d5760003560e01c8063a737a29911610095578063d0ad253511610064578063d0ad253514610318578063dd46706414610338578063f23a6e6114610358578063fc0c546a14610384578063fe9fbb80146103bc57600080fd5b8063a737a29914610288578063bc197c81146102a8578063ca1cc220146102d4578063ce0617ec146102f457600080fd5b80636b764e1b116100dc5780636b764e1b146101e45780638da5cb5b146102045780639e5d4c4914610231578063a4e2d63414610251578063a65e78f11461026857600080fd5b806301ffc9a714610119578063039721b11461014e578063150b7a02146101705780631f9838b5146101a957600080fd5b3661011457005b600080fd5b34801561012557600080fd5b50610139610134366004610c77565b6103dc565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b5061016e610169366004610cf4565b610443565b005b34801561017c57600080fd5b5061019061018b366004610e2f565b61060c565b6040516001600160e01b03199091168152602001610145565b3480156101b557600080fd5b506101396101c4366004610e9b565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101f057600080fd5b5061016e6101ff366004610ed4565b610674565b34801561021057600080fd5b506102196106e2565b6040516001600160a01b039091168152602001610145565b61024461023f366004610f5c565b610778565b6040516101459190610fac565b34801561025d57600080fd5b506000544210610139565b34801561027457600080fd5b5061016e610283366004610ffa565b61082f565b34801561029457600080fd5b5061016e6102a3366004611026565b6108ab565b3480156102b457600080fd5b506101906102c33660046110d0565b63bc197c8160e01b95945050505050565b3480156102e057600080fd5b5061016e6102ef36600461117e565b61090d565b34801561030057600080fd5b5061030a60005481565b604051908152602001610145565b34801561032457600080fd5b506101906103333660046111bf565b610986565b34801561034457600080fd5b5061016e610353366004611201565b6109a7565b34801561036457600080fd5b5061019061037336600461121a565b63f23a6e6160e01b95945050505050565b34801561039057600080fd5b50610399610a6c565b604080519384526001600160a01b03909216602084015290820152606001610145565b3480156103c857600080fd5b506101396103d7366004611283565b610a84565b6000806001600160e01b031983166301ffc9a760e01b148061040e57506001600160e01b03198316630271189760e51b145b8061042957506001600160e01b03198316636faff5f160e01b145b9050801561043a5750600192915050565b50600092915050565b60005442101561046657604051636315bfbb60e01b815260040160405180910390fd5b60006104706106e2565b9050336001600160a01b0382161461049b5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104bc5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b81811015610603578484828181106104d9576104d96112a0565b90506020020160208101906104ee91906112c4565b6001600160a01b038416600090815260016020526040812090898985818110610519576105196112a0565b905060200201602081019061052e9190611283565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf58388888481811061058a5761058a6112a0565b905060200201602081019061059f9190611283565b8787858181106105b1576105b16112a0565b90506020020160208101906105c691906112c4565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a1806105fb816112f7565b9150506104bf565b50505050505050565b60008060008061061a610b6d565b925092509250468314801561063757506001600160a01b03821633145b801561064257508581145b156106605760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b604051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156106c457600080fd5b505af11580156106d8573d6000803e3d6000fd5b5050505050505050565b6000806000806106f0610b6d565b925092509250468314610707576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa15801561074c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107709190611310565b935050505090565b606061078333610a84565b6107a05760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156107c357604051636315bfbb60e01b815260040160405180910390fd5b82826107cf8282610bc0565b6108185760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b61082487878787610bfb565b979650505050505050565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af1158015610882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a6919061132d565b505050565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038416906342842e0e90606401600060405180830381600087803b1580156108f957600080fd5b505af1158015610603573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610980919061132d565b50505050565b6000610995600482848661134a565b61099e91611374565b90505b92915050565b6109af6106e2565b6001600160a01b0316336001600160a01b0316146109e05760405163ea8e4eb560e01b815260040160405180910390fd5b600054421015610a0357604051636315bfbb60e01b815260040160405180910390fd5b610a11426301e133806113a4565b811115610a31576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b6000806000610a79610b6d565b925092509250909192565b6000806000610a91610b6d565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa158015610adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b039190611310565b9050806001600160a01b0316856001600160a01b031603610b2957506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff1615610b6257506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610bb491906113b7565b93509350935050909192565b600080610bcd8484610986565b90506001600160e01b0319811663095ea7b360e01b03610bf15760009150506109a1565b5060019392505050565b60606000856001600160a01b0316858585604051610c1a9291906113f0565b60006040518083038185875af1925050503d8060008114610c57576040519150601f19603f3d011682016040523d82523d6000602084013e610c5c565b606091505b509250905080610c6e57815160208301fd5b50949350505050565b600060208284031215610c8957600080fd5b81356001600160e01b031981168114610ca157600080fd5b9392505050565b60008083601f840112610cba57600080fd5b50813567ffffffffffffffff811115610cd257600080fd5b6020830191508360208260051b8501011115610ced57600080fd5b9250929050565b60008060008060408587031215610d0a57600080fd5b843567ffffffffffffffff80821115610d2257600080fd5b610d2e88838901610ca8565b90965094506020870135915080821115610d4757600080fd5b50610d5487828801610ca8565b95989497509550505050565b6001600160a01b0381168114610d7557600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610db757610db7610d78565b604052919050565b600082601f830112610dd057600080fd5b813567ffffffffffffffff811115610dea57610dea610d78565b610dfd601f8201601f1916602001610d8e565b818152846020838601011115610e1257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e4557600080fd5b8435610e5081610d60565b93506020850135610e6081610d60565b925060408501359150606085013567ffffffffffffffff811115610e8357600080fd5b610e8f87828801610dbf565b91505092959194509250565b60008060408385031215610eae57600080fd5b8235610eb981610d60565b91506020830135610ec981610d60565b809150509250929050565b60008060008060808587031215610eea57600080fd5b8435610ef581610d60565b93506020850135610f0581610d60565b93969395505050506040820135916060013590565b60008083601f840112610f2c57600080fd5b50813567ffffffffffffffff811115610f4457600080fd5b602083019150836020828501011115610ced57600080fd5b60008060008060608587031215610f7257600080fd5b8435610f7d81610d60565b935060208501359250604085013567ffffffffffffffff811115610fa057600080fd5b610d5487828801610f1a565b600060208083528351808285015260005b81811015610fd957858101830151858201604001528201610fbd565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561100d57600080fd5b823561101881610d60565b946020939093013593505050565b60008060006060848603121561103b57600080fd5b833561104681610d60565b95602085013595506040909401359392505050565b600082601f83011261106c57600080fd5b8135602067ffffffffffffffff82111561108857611088610d78565b8160051b611097828201610d8e565b92835284810182019282810190878511156110b157600080fd5b83870192505b84831015610824578235825291830191908301906110b7565b600080600080600060a086880312156110e857600080fd5b85356110f381610d60565b9450602086013561110381610d60565b9350604086013567ffffffffffffffff8082111561112057600080fd5b61112c89838a0161105b565b9450606088013591508082111561114257600080fd5b61114e89838a0161105b565b9350608088013591508082111561116457600080fd5b5061117188828901610dbf565b9150509295509295909350565b60008060006060848603121561119357600080fd5b833561119e81610d60565b925060208401356111ae81610d60565b929592945050506040919091013590565b600080602083850312156111d257600080fd5b823567ffffffffffffffff8111156111e957600080fd5b6111f585828601610f1a565b90969095509350505050565b60006020828403121561121357600080fd5b5035919050565b600080600080600060a0868803121561123257600080fd5b853561123d81610d60565b9450602086013561124d81610d60565b93506040860135925060608601359150608086013567ffffffffffffffff81111561127757600080fd5b61117188828901610dbf565b60006020828403121561129557600080fd5b8135610ca181610d60565b634e487b7160e01b600052603260045260246000fd5b8015158114610d7557600080fd5b6000602082840312156112d657600080fd5b8135610ca1816112b6565b634e487b7160e01b600052601160045260246000fd5b600060018201611309576113096112e1565b5060010190565b60006020828403121561132257600080fd5b8151610ca181610d60565b60006020828403121561133f57600080fd5b8151610ca1816112b6565b6000808585111561135a57600080fd5b8386111561136757600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561139c5780818660040360031b1b83161692505b505092915050565b808201808211156109a1576109a16112e1565b6000806000606084860312156113cc57600080fd5b8351925060208401516113de81610d60565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220add824d87648462c373c70c4985c65f80b93f5a59d5a1f55f17f9aa543487de964736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA737A299 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xD0AD2535 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0xFE9FBB80 EQ PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA737A299 EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0xCA1CC220 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6B764E1B GT PUSH2 0xDC JUMPI DUP1 PUSH4 0x6B764E1B EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x9E5D4C49 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xA65E78F1 EQ PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x1A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x114 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x134 CALLDATASIZE PUSH1 0x4 PUSH2 0xC77 JUMP JUMPDEST PUSH2 0x3DC 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 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xCF4 JUMP JUMPDEST PUSH2 0x443 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x18B CALLDATASIZE PUSH1 0x4 PUSH2 0xE2F JUMP JUMPDEST PUSH2 0x60C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x1C4 CALLDATASIZE PUSH1 0x4 PUSH2 0xE9B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0xED4 JUMP JUMPDEST PUSH2 0x674 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x219 PUSH2 0x6E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST PUSH2 0x244 PUSH2 0x23F CALLDATASIZE PUSH1 0x4 PUSH2 0xF5C JUMP JUMPDEST PUSH2 0x778 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0xFAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x139 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x283 CALLDATASIZE PUSH1 0x4 PUSH2 0xFFA JUMP JUMPDEST PUSH2 0x82F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x2A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x8AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x2C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D0 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x2EF CALLDATASIZE PUSH1 0x4 PUSH2 0x117E JUMP JUMPDEST PUSH2 0x90D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30A PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x333 CALLDATASIZE PUSH1 0x4 PUSH2 0x11BF JUMP JUMPDEST PUSH2 0x986 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x353 CALLDATASIZE PUSH1 0x4 PUSH2 0x1201 JUMP JUMPDEST PUSH2 0x9A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x373 CALLDATASIZE PUSH1 0x4 PUSH2 0x121A JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x399 PUSH2 0xA6C JUMP JUMPDEST 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 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x3D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1283 JUMP JUMPDEST PUSH2 0xA84 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x40E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x429 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x43A JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x470 PUSH2 0x6E2 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x49B JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x4BC JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x603 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x4D9 JUMPI PUSH2 0x4D9 PUSH2 0x12A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4EE SWAP2 SWAP1 PUSH2 0x12C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x519 JUMPI PUSH2 0x519 PUSH2 0x12A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x52E SWAP2 SWAP1 PUSH2 0x1283 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x58A JUMPI PUSH2 0x58A PUSH2 0x12A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x59F SWAP2 SWAP1 PUSH2 0x1283 JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x5B1 JUMPI PUSH2 0x5B1 PUSH2 0x12A0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x5C6 SWAP2 SWAP1 PUSH2 0x12C4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x5FB DUP2 PUSH2 0x12F7 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4BF JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x61A PUSH2 0xB6D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x637 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x642 JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x6F0 PUSH2 0xB6D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x707 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x74C 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 0x770 SWAP2 SWAP1 PUSH2 0x1310 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x783 CALLER PUSH2 0xA84 JUMP JUMPDEST PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 PUSH2 0x7CF DUP3 DUP3 PUSH2 0xBC0 JUMP JUMPDEST PUSH2 0x818 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x824 DUP8 DUP8 DUP8 DUP8 PUSH2 0xBFB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x882 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 0x8A6 SWAP2 SWAP1 PUSH2 0x132D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x603 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x95C 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 0x980 SWAP2 SWAP1 PUSH2 0x132D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x995 PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x134A JUMP JUMPDEST PUSH2 0x99E SWAP2 PUSH2 0x1374 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9AF PUSH2 0x6E2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xA03 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA11 TIMESTAMP PUSH4 0x1E13380 PUSH2 0x13A4 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xA31 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA79 PUSH2 0xB6D JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA91 PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0xADF 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 0xB03 SWAP2 SWAP1 PUSH2 0x1310 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB29 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xB62 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xBB4 SWAP2 SWAP1 PUSH2 0x13B7 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xBCD DUP5 DUP5 PUSH2 0x986 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0xBF1 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x9A1 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xC1A SWAP3 SWAP2 SWAP1 PUSH2 0x13F0 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 0xC57 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 0xC5C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0xC6E JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xCA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD2E DUP9 DUP4 DUP10 ADD PUSH2 0xCA8 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD54 DUP8 DUP3 DUP9 ADD PUSH2 0xCA8 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xDB7 JUMPI PUSH2 0xDB7 PUSH2 0xD78 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xDD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDEA JUMPI PUSH2 0xDEA PUSH2 0xD78 JUMP JUMPDEST PUSH2 0xDFD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xD8E JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xE12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xE50 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xE60 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE8F DUP8 DUP3 DUP9 ADD PUSH2 0xDBF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xEB9 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xEC9 DUP2 PUSH2 0xD60 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xEEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xEF5 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xF05 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xF2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xCED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xF7D DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD54 DUP8 DUP3 DUP9 ADD PUSH2 0xF1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFD9 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xFBD JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x100D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1018 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x103B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1046 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x106C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1088 JUMPI PUSH2 0x1088 PUSH2 0xD78 JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0x1097 DUP3 DUP3 ADD PUSH2 0xD8E JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x10B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x824 JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0x10B7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x10E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x10F3 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1103 DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x112C DUP10 DUP4 DUP11 ADD PUSH2 0x105B JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x114E DUP10 DUP4 DUP11 ADD PUSH2 0x105B JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1171 DUP9 DUP3 DUP10 ADD PUSH2 0xDBF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x119E DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x11AE DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11F5 DUP6 DUP3 DUP7 ADD PUSH2 0xF1A JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x123D DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x124D DUP2 PUSH2 0xD60 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1171 DUP9 DUP3 DUP10 ADD PUSH2 0xDBF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCA1 DUP2 PUSH2 0xD60 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xD75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCA1 DUP2 PUSH2 0x12B6 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x1309 JUMPI PUSH2 0x1309 PUSH2 0x12E1 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCA1 DUP2 PUSH2 0xD60 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x133F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCA1 DUP2 PUSH2 0x12B6 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x135A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x1367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x139C JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x9A1 JUMPI PUSH2 0x9A1 PUSH2 0x12E1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x13CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x13DE DUP2 PUSH2 0xD60 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD 0xD8 0x24 0xD8 PUSH23 0x48462C373C70C4985C65F80B93F5A59D5A1F55F17F9AA5 NUMBER BASEFEE PUSH30 0xE964736F6C63430008110033000000000000000000000000000000000000 ","sourceMap":"206:995:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4907:393:6;;;;;;;;;;-1:-1:-1;4907:393:6;;;;;:::i;:::-;;:::i;:::-;;;470:14:14;;463:22;445:41;;433:2;418:18;4907:393:6;;;;;;;;2375:528;;;;;;;;;;-1:-1:-1;2375:528:6;;;;;:::i;:::-;;:::i;:::-;;5445:526;;;;;;;;;;-1:-1:-1;5445:526:6;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3559:33:14;;;3541:52;;3529:2;3514:18;5445:526:6;3397:202:14;956:63:6;;;;;;;;;;-1:-1:-1;956:63:6;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;563:256:8;;;;;;;;;;-1:-1:-1;563:256:8;;;;;:::i;:::-;;:::i;3909:310:6:-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;4691:32:14;;;4673:51;;4661:2;4646:18;3909:310:6;4527:203:14;2020:292:6;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3294:100::-;;;;;;;;;;-1:-1:-1;3335:4:6;3358:11;3372:15;-1:-1:-1;3294:100:6;;825:186:8;;;;;;;;;;-1:-1:-1;825:186:8;;;;;:::i;:::-;;:::i;256:301::-;;;;;;;;;;-1:-1:-1;256:301:8;;;;;:::i;:::-;;:::i;6374:244:6:-;;;;;;;;;;-1:-1:-1;6374:244:6;;;;;:::i;:::-;-1:-1:-1;;;6374:244:6;;;;;;;;1017:182:8;;;;;;;;;;-1:-1:-1;1017:182:8;;;;;:::i;:::-;;:::i;862:26:6:-;;;;;;;;;;;;;;;;;;;9363:25:14;;;9351:2;9336:18;862:26:6;9217:177:14;7662:118:6;;;;;;;;;;-1:-1:-1;7662:118:6;;;;;:::i;:::-;;:::i;2966:249::-;;;;;;;;;;-1:-1:-1;2966:249:6;;;;;:::i;:::-;;:::i;6061:216::-;;;;;;;;;;-1:-1:-1;6061:216:6;;;;;:::i;:::-;-1:-1:-1;;;6061:216:6;;;;;;;;3526:220;;;;;;;;;;;;;:::i;:::-;;;;10939:25:14;;;-1:-1:-1;;;;;11000:32:14;;;10995:2;10980:18;;10973:60;11049:18;;;11042:34;10927:2;10912:18;3526:220:6;10737:345:14;4290:480:6;;;;;;;;;;-1:-1:-1;4290:480:6;;;;;:::i;:::-;;:::i;4907:393::-;5017:4;;-1:-1:-1;;;;;;5059:40:6;;-1:-1:-1;;;5059:40:6;;:105;;-1:-1:-1;;;;;;;5115:49:6;;-1:-1:-1;;;5115:49:6;5059:105;:169;;;-1:-1:-1;;;;;;;5180:48:6;;-1:-1:-1;;;5180:48:6;5059:169;5037:191;;5243:14;5239:31;;;-1:-1:-1;5266:4:6;;4907:393;-1:-1:-1;;4907:393:6:o;5239:31::-;-1:-1:-1;5288:5:6;;4907:393;-1:-1:-1;;4907:393:6:o;2375:528::-;3335:4;3358:11;3372:15;-1:-1:-1;1713:38:6;;;1736:15;;-1:-1:-1;;;1736:15:6;;;;;;;;;;;1713:38;2511:14:::1;2528:7;:5;:7::i;:::-;2511:24:::0;-1:-1:-1;2549:10:6::1;-1:-1:-1::0;;;;;2549:20:6;::::1;;2545:48;;2578:15;;-1:-1:-1::0;;;2578:15:6::1;;;;;;;;;;;2545:48;2621:7:::0;2650:29;;::::1;2646:56;;2688:14;;-1:-1:-1::0;;;2688:14:6::1;;;;;;;;;;;2646:56;2718:9;2713:184;2737:6;2733:1;:10;2713:184;;;2798:12;;2811:1;2798:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2764:19:6;::::1;;::::0;;;:11:::1;:19;::::0;;;;;2784:7;;2792:1;2784:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2764:31:6::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;2764:31:6;:49;;-1:-1:-1;;2764:49:6::1;::::0;::::1;;::::0;;;::::1;::::0;;2832:54:::1;2850:6:::0;2858:7;;2866:1;2858:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2870:12;;2883:1;2870:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2832:54;::::0;;-1:-1:-1;;;;;12092:15:14;;;12074:34;;12144:15;;;;12139:2;12124:18;;12117:43;12203:14;12196:22;12176:18;;;12169:50;12024:2;12009:18;2832:54:6::1;;;;;;;2745:3:::0;::::1;::::0;::::1;:::i;:::-;;;;2713:184;;;;2501:402;;2375:528:::0;;;;:::o;5445:526::-;5596:6;5628:15;5657:21;5692:15;5720:25;:23;:25::i;:::-;5614:131;;;;;;5784:13;5773:7;:24;:67;;;;-1:-1:-1;;;;;;5813:27:6;;5830:10;5813:27;5773:67;:109;;;;;5867:15;5856:7;:26;5773:109;5756:160;;;5900:16;;-1:-1:-1;;;5900:16:6;;;;;;;;;;;5756:160;-1:-1:-1;;;;5934:30:6;5445:526;-1:-1:-1;;;;;;;5445:526:6:o;563:256:8:-;734:78;;-1:-1:-1;;;734:78:8;;784:4;734:78;;;12742:34:14;-1:-1:-1;;;;;12812:15:14;;;12792:18;;;12785:43;12844:18;;;12837:34;;;734:41:8;;;;;12677:18:14;;734:78:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;563:256;;;;:::o;3909:310:6:-;3947:7;3980:15;4009:21;4044:15;4072:25;:23;:25::i;:::-;3966:131;;;;;;4123:13;4112:7;:24;4108:47;;4153:1;4138:17;;;;;3909:310;:::o;4108:47::-;4173:39;;-1:-1:-1;;;4173:39:6;;;;;9363:25:14;;;-1:-1:-1;;;;;4173:30:6;;;;;9336:18:14;;4173:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4166:46;;;;;3909:310;:::o;2020:292::-;2197:12;1550:24;1563:10;1550:12;:24::i;:::-;1545:53;;1583:15;;-1:-1:-1;;;1583:15:6;;;;;;;;;;;1545:53;3335:4;3358:11;3372:15;-1:-1:-1;1713:38:6::1;;;1736:15;;-1:-1:-1::0;;;1736:15:6::1;;;;;;;;;;;1713:38;2182:4:::2;;7853:20;7867:5;;7853:13;:20::i;:::-;7845:55;;;::::0;-1:-1:-1;;;7845:55:6;;13340:2:14;7845:55:6::2;::::0;::::2;13322:21:14::0;13379:2;13359:18;;;13352:30;-1:-1:-1;;;13398:18:14;;;13391:52;13460:18;;7845:55:6::2;;;;;;;;2283:22:::3;2289:2;2293:5;2300:4;;2283:5;:22::i;:::-;2276:29:::0;2020:292;-1:-1:-1;;;;;;;2020:292:6:o;825:186:8:-;933:71;;-1:-1:-1;;;933:71:8;;965:10;933:71;;;12742:34:14;985:4:8;12792:18:14;;;12785:43;12844:18;;;12837:34;;;-1:-1:-1;;;;;933:31:8;;;;;12677:18:14;;933:71:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;825:186;;:::o;256:301::-;424:126;;-1:-1:-1;;;424:126:8;;479:10;424:126;;;12742:34:14;511:4:8;12792:18:14;;;12785:43;12844:18;;;12837:34;;;-1:-1:-1;;;;;424:41:8;;;;;12677:18:14;;424:126:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1017:182;1144:50;;-1:-1:-1;;;1144:50:8;;-1:-1:-1;;;;;13931:32:14;;;1144:50:8;;;13913:51:14;13980:18;;;13973:34;;;1144:27:8;;;;;13886:18:14;;1144:50:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1017:182;;;:::o;7662:118:6:-;7731:6;7763:9;7770:1;7731:6;7763:5;;:9;:::i;:::-;7756:17;;;:::i;:::-;7749:24;;7662:118;;;;;:::o;2966:249::-;1378:7;:5;:7::i;:::-;-1:-1:-1;;;;;1364:21:6;:10;-1:-1:-1;;;;;1364:21:6;;1360:49;;1394:15;;-1:-1:-1;;;1394:15:6;;;;;;;;;;;1360:49;3335:4;3358:11;3372:15;-1:-1:-1;1713:38:6::1;;;1736:15;;-1:-1:-1::0;;;1736:15:6::1;;;;;;;;;;;1713:38;3063:26:::2;:15;3081:8;3063:26;:::i;:::-;3048:12;:41;3044:86;;;3110:20;;-1:-1:-1::0;;;3110:20:6::2;;;;;;;;;;;3044:86;3141:11;:26:::0;;;3183:25:::2;::::0;9363::14;;;3183::6::2;::::0;9351:2:14;9336:18;3183:25:6::2;;;;;;;2966:249:::0;:::o;3526:220::-;3603:15;3632:21;3667:15;3714:25;:23;:25::i;:::-;3707:32;;;;;;3526:220;;;:::o;4290:480::-;4349:4;4393:21;4428:15;4456:25;:23;:25::i;:::-;4508:39;;-1:-1:-1;;;4508:39:6;;;;;9363:25:14;;;4365:116:6;;-1:-1:-1;4365:116:6;-1:-1:-1;4491:14:6;;-1:-1:-1;;;;;;4508:30:6;;;;;9336:18:14;;4508:39:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4491:56;;4605:6;-1:-1:-1;;;;;4595:16:6;:6;-1:-1:-1;;;;;4595:16:6;;4591:33;;-1:-1:-1;4620:4:6;;4290:480;-1:-1:-1;;;;4290:480:6:o;4591:33::-;-1:-1:-1;;;;;4700:19:6;;;;;;;:11;:19;;;;;;;;:27;;;;;;;;;;;;4696:44;;;-1:-1:-1;4736:4:6;;4290:480;-1:-1:-1;;;;4290:480:6:o;4696:44::-;-1:-1:-1;4758:5:6;;4290:480;-1:-1:-1;;;;4290:480:6:o;90:406:13:-;263:15;;;273:4;263:15;;;;;;;;;167:7;;;;;;;;263:15;;;;;;;;;;;-1:-1:-1;263:15:13;241:37;;410:4;404;397;389:6;385:17;374:9;362:53;453:6;442:47;;;;;;;;;;;;:::i;:::-;435:54;;;;;;;90:406;;;:::o;7397:259:6:-;7460:4;7476:16;7495:23;7512:5;;7495:16;:23::i;:::-;7476:42;-1:-1:-1;;;;;;;7566:23:6;;-1:-1:-1;;;7566:23:6;7562:66;;7612:5;7605:12;;;;;7562:66;-1:-1:-1;7645:4:6;;7397:259;-1:-1:-1;;;7397:259:6:o;6663:345::-;6774:19;6805:12;6847:2;-1:-1:-1;;;;;6847:7:6;6862:5;6869:4;;6847:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6827:47:6;-1:-1:-1;6827:47:6;-1:-1:-1;6827:47:6;6885:117;;6970:6;6964:13;6959:2;6951:6;6947:15;6940:38;6885:117;6795:213;6663:345;;;;;;:::o;14:286:14:-;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:14;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:14:o;497:367::-;560:8;570:6;624:3;617:4;609:6;605:17;601:27;591:55;;642:1;639;632:12;591:55;-1:-1:-1;665:20:14;;708:18;697:30;;694:50;;;740:1;737;730:12;694:50;777:4;769:6;765:17;753:29;;837:3;830:4;820:6;817:1;813:14;805:6;801:27;797:38;794:47;791:67;;;854:1;851;844:12;791:67;497:367;;;;;:::o;869:770::-;988:6;996;1004;1012;1065:2;1053:9;1044:7;1040:23;1036:32;1033:52;;;1081:1;1078;1071:12;1033:52;1121:9;1108:23;1150:18;1191:2;1183:6;1180:14;1177:34;;;1207:1;1204;1197:12;1177:34;1246:70;1308:7;1299:6;1288:9;1284:22;1246:70;:::i;:::-;1335:8;;-1:-1:-1;1220:96:14;-1:-1:-1;1423:2:14;1408:18;;1395:32;;-1:-1:-1;1439:16:14;;;1436:36;;;1468:1;1465;1458:12;1436:36;;1507:72;1571:7;1560:8;1549:9;1545:24;1507:72;:::i;:::-;869:770;;;;-1:-1:-1;1598:8:14;-1:-1:-1;;;;869:770:14:o;1644:131::-;-1:-1:-1;;;;;1719:31:14;;1709:42;;1699:70;;1765:1;1762;1755:12;1699:70;1644:131;:::o;1780:127::-;1841:10;1836:3;1832:20;1829:1;1822:31;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;1912:275;1983:2;1977:9;2048:2;2029:13;;-1:-1:-1;;2025:27:14;2013:40;;2083:18;2068:34;;2104:22;;;2065:62;2062:88;;;2130:18;;:::i;:::-;2166:2;2159:22;1912:275;;-1:-1:-1;1912:275:14:o;2192:530::-;2234:5;2287:3;2280:4;2272:6;2268:17;2264:27;2254:55;;2305:1;2302;2295:12;2254:55;2341:6;2328:20;2367:18;2363:2;2360:26;2357:52;;;2389:18;;:::i;:::-;2433:55;2476:2;2457:13;;-1:-1:-1;;2453:27:14;2482:4;2449:38;2433:55;:::i;:::-;2513:2;2504:7;2497:19;2559:3;2552:4;2547:2;2539:6;2535:15;2531:26;2528:35;2525:55;;;2576:1;2573;2566:12;2525:55;2641:2;2634:4;2626:6;2622:17;2615:4;2606:7;2602:18;2589:55;2689:1;2664:16;;;2682:4;2660:27;2653:38;;;;2668:7;2192:530;-1:-1:-1;;;2192:530:14:o;2727:665::-;2822:6;2830;2838;2846;2899:3;2887:9;2878:7;2874:23;2870:33;2867:53;;;2916:1;2913;2906:12;2867:53;2955:9;2942:23;2974:31;2999:5;2974:31;:::i;:::-;3024:5;-1:-1:-1;3081:2:14;3066:18;;3053:32;3094:33;3053:32;3094:33;:::i;:::-;3146:7;-1:-1:-1;3200:2:14;3185:18;;3172:32;;-1:-1:-1;3255:2:14;3240:18;;3227:32;3282:18;3271:30;;3268:50;;;3314:1;3311;3304:12;3268:50;3337:49;3378:7;3369:6;3358:9;3354:22;3337:49;:::i;:::-;3327:59;;;2727:665;;;;;;;:::o;3604:388::-;3672:6;3680;3733:2;3721:9;3712:7;3708:23;3704:32;3701:52;;;3749:1;3746;3739:12;3701:52;3788:9;3775:23;3807:31;3832:5;3807:31;:::i;:::-;3857:5;-1:-1:-1;3914:2:14;3899:18;;3886:32;3927:33;3886:32;3927:33;:::i;:::-;3979:7;3969:17;;;3604:388;;;;;:::o;3997:525::-;4083:6;4091;4099;4107;4160:3;4148:9;4139:7;4135:23;4131:33;4128:53;;;4177:1;4174;4167:12;4128:53;4216:9;4203:23;4235:31;4260:5;4235:31;:::i;:::-;4285:5;-1:-1:-1;4342:2:14;4327:18;;4314:32;4355:33;4314:32;4355:33;:::i;:::-;3997:525;;4407:7;;-1:-1:-1;;;;4461:2:14;4446:18;;4433:32;;4512:2;4497:18;4484:32;;3997:525::o;4735:347::-;4786:8;4796:6;4850:3;4843:4;4835:6;4831:17;4827:27;4817:55;;4868:1;4865;4858:12;4817:55;-1:-1:-1;4891:20:14;;4934:18;4923:30;;4920:50;;;4966:1;4963;4956:12;4920:50;5003:4;4995:6;4991:17;4979:29;;5055:3;5048:4;5039:6;5031;5027:19;5023:30;5020:39;5017:59;;;5072:1;5069;5062:12;5087:612;5175:6;5183;5191;5199;5252:2;5240:9;5231:7;5227:23;5223:32;5220:52;;;5268:1;5265;5258:12;5220:52;5307:9;5294:23;5326:31;5351:5;5326:31;:::i;:::-;5376:5;-1:-1:-1;5428:2:14;5413:18;;5400:32;;-1:-1:-1;5483:2:14;5468:18;;5455:32;5510:18;5499:30;;5496:50;;;5542:1;5539;5532:12;5496:50;5581:58;5631:7;5622:6;5611:9;5607:22;5581:58;:::i;5704:546::-;5814:4;5843:2;5872;5861:9;5854:21;5904:6;5898:13;5947:6;5942:2;5931:9;5927:18;5920:34;5972:1;5982:140;5996:6;5993:1;5990:13;5982:140;;;6091:14;;;6087:23;;6081:30;6057:17;;;6076:2;6053:26;6046:66;6011:10;;5982:140;;;5986:3;6171:1;6166:2;6157:6;6146:9;6142:22;6138:31;6131:42;6241:2;6234;6230:7;6225:2;6217:6;6213:15;6209:29;6198:9;6194:45;6190:54;6182:62;;;;5704:546;;;;:::o;6255:315::-;6323:6;6331;6384:2;6372:9;6363:7;6359:23;6355:32;6352:52;;;6400:1;6397;6390:12;6352:52;6439:9;6426:23;6458:31;6483:5;6458:31;:::i;:::-;6508:5;6560:2;6545:18;;;;6532:32;;-1:-1:-1;;;6255:315:14:o;6575:383::-;6652:6;6660;6668;6721:2;6709:9;6700:7;6696:23;6692:32;6689:52;;;6737:1;6734;6727:12;6689:52;6776:9;6763:23;6795:31;6820:5;6795:31;:::i;:::-;6845:5;6897:2;6882:18;;6869:32;;-1:-1:-1;6948:2:14;6933:18;;;6920:32;;6575:383;-1:-1:-1;;;6575:383:14:o;6963:712::-;7017:5;7070:3;7063:4;7055:6;7051:17;7047:27;7037:55;;7088:1;7085;7078:12;7037:55;7124:6;7111:20;7150:4;7173:18;7169:2;7166:26;7163:52;;;7195:18;;:::i;:::-;7241:2;7238:1;7234:10;7264:28;7288:2;7284;7280:11;7264:28;:::i;:::-;7326:15;;;7396;;;7392:24;;;7357:12;;;;7428:15;;;7425:35;;;7456:1;7453;7446:12;7425:35;7492:2;7484:6;7480:15;7469:26;;7504:142;7520:6;7515:3;7512:15;7504:142;;;7586:17;;7574:30;;7537:12;;;;7624;;;;7504:142;;7680:1071;7834:6;7842;7850;7858;7866;7919:3;7907:9;7898:7;7894:23;7890:33;7887:53;;;7936:1;7933;7926:12;7887:53;7975:9;7962:23;7994:31;8019:5;7994:31;:::i;:::-;8044:5;-1:-1:-1;8101:2:14;8086:18;;8073:32;8114:33;8073:32;8114:33;:::i;:::-;8166:7;-1:-1:-1;8224:2:14;8209:18;;8196:32;8247:18;8277:14;;;8274:34;;;8304:1;8301;8294:12;8274:34;8327:61;8380:7;8371:6;8360:9;8356:22;8327:61;:::i;:::-;8317:71;;8441:2;8430:9;8426:18;8413:32;8397:48;;8470:2;8460:8;8457:16;8454:36;;;8486:1;8483;8476:12;8454:36;8509:63;8564:7;8553:8;8542:9;8538:24;8509:63;:::i;:::-;8499:73;;8625:3;8614:9;8610:19;8597:33;8581:49;;8655:2;8645:8;8642:16;8639:36;;;8671:1;8668;8661:12;8639:36;;8694:51;8737:7;8726:8;8715:9;8711:24;8694:51;:::i;:::-;8684:61;;;7680:1071;;;;;;;;:::o;8756:456::-;8833:6;8841;8849;8902:2;8890:9;8881:7;8877:23;8873:32;8870:52;;;8918:1;8915;8908:12;8870:52;8957:9;8944:23;8976:31;9001:5;8976:31;:::i;:::-;9026:5;-1:-1:-1;9083:2:14;9068:18;;9055:32;9096:33;9055:32;9096:33;:::i;:::-;8756:456;;9148:7;;-1:-1:-1;;;9202:2:14;9187:18;;;;9174:32;;8756:456::o;9399:409::-;9469:6;9477;9530:2;9518:9;9509:7;9505:23;9501:32;9498:52;;;9546:1;9543;9536:12;9498:52;9586:9;9573:23;9619:18;9611:6;9608:30;9605:50;;;9651:1;9648;9641:12;9605:50;9690:58;9740:7;9731:6;9720:9;9716:22;9690:58;:::i;:::-;9767:8;;9664:84;;-1:-1:-1;9399:409:14;-1:-1:-1;;;;9399:409:14:o;9813:180::-;9872:6;9925:2;9913:9;9904:7;9900:23;9896:32;9893:52;;;9941:1;9938;9931:12;9893:52;-1:-1:-1;9964:23:14;;9813:180;-1:-1:-1;9813:180:14:o;9998:734::-;10102:6;10110;10118;10126;10134;10187:3;10175:9;10166:7;10162:23;10158:33;10155:53;;;10204:1;10201;10194:12;10155:53;10243:9;10230:23;10262:31;10287:5;10262:31;:::i;:::-;10312:5;-1:-1:-1;10369:2:14;10354:18;;10341:32;10382:33;10341:32;10382:33;:::i;:::-;10434:7;-1:-1:-1;10488:2:14;10473:18;;10460:32;;-1:-1:-1;10539:2:14;10524:18;;10511:32;;-1:-1:-1;10594:3:14;10579:19;;10566:33;10622:18;10611:30;;10608:50;;;10654:1;10651;10644:12;10608:50;10677:49;10718:7;10709:6;10698:9;10694:22;10677:49;:::i;11087:247::-;11146:6;11199:2;11187:9;11178:7;11174:23;11170:32;11167:52;;;11215:1;11212;11205:12;11167:52;11254:9;11241:23;11273:31;11298:5;11273:31;:::i;11339:127::-;11400:10;11395:3;11391:20;11388:1;11381:31;11431:4;11428:1;11421:15;11455:4;11452:1;11445:15;11471:118;11557:5;11550:13;11543:21;11536:5;11533:32;11523:60;;11579:1;11576;11569:12;11594:241;11650:6;11703:2;11691:9;11682:7;11678:23;11674:32;11671:52;;;11719:1;11716;11709:12;11671:52;11758:9;11745:23;11777:28;11799:5;11777:28;:::i;12230:127::-;12291:10;12286:3;12282:20;12279:1;12272:31;12322:4;12319:1;12312:15;12346:4;12343:1;12336:15;12362:135;12401:3;12422:17;;;12419:43;;12442:18;;:::i;:::-;-1:-1:-1;12489:1:14;12478:13;;12362:135::o;12882:251::-;12952:6;13005:2;12993:9;12984:7;12980:23;12976:32;12973:52;;;13021:1;13018;13011:12;12973:52;13053:9;13047:16;13072:31;13097:5;13072:31;:::i;13489:245::-;13556:6;13609:2;13597:9;13588:7;13584:23;13580:32;13577:52;;;13625:1;13622;13615:12;13577:52;13657:9;13651:16;13676:28;13698:5;13676:28;:::i;14018:331::-;14123:9;14134;14176:8;14164:10;14161:24;14158:44;;;14198:1;14195;14188:12;14158:44;14227:6;14217:8;14214:20;14211:40;;;14247:1;14244;14237:12;14211:40;-1:-1:-1;;14273:23:14;;;14318:25;;;;;-1:-1:-1;14018:331:14:o;14354:323::-;-1:-1:-1;;;;;;14474:19:14;;14550:11;;;;14581:1;14573:10;;14570:101;;;14658:2;14652;14645:3;14642:1;14638:11;14635:1;14631:19;14627:28;14623:2;14619:37;14615:46;14606:55;;14570:101;;;14354:323;;;;:::o;14682:125::-;14747:9;;;14768:10;;;14765:36;;;14781:18;;:::i;14812:381::-;14908:6;14916;14924;14977:2;14965:9;14956:7;14952:23;14948:32;14945:52;;;14993:1;14990;14983:12;14945:52;15022:9;15016:16;15006:26;;15075:2;15064:9;15060:18;15054:25;15088:31;15113:5;15088:31;:::i;:::-;15138:5;15128:15;;;15183:2;15172:9;15168:18;15162:25;15152:35;;14812:381;;;;;:::o;15198:271::-;15381:6;15373;15368:3;15355:33;15337:3;15407:16;;15432:13;;;15407:16;15198:271;-1:-1:-1;15198:271:14:o"},"gasEstimates":{"creation":{"codeDepositCost":"1034800","executionCost":"1074","totalCost":"1035874"},"external":{"breakCovalentBond(address,address,uint256,uint256)":"infinite","covalentBond(address,uint256,uint256)":"infinite","dischargeParticle(address,address,uint256)":"infinite","energizeParticle(address,uint256)":"infinite","executeCall(address,uint256,bytes)":"infinite","isAuthorized(address)":"infinite","isLocked()":"2381","lock(uint256)":"infinite","lockedUntil()":"2384","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"infinite","onERC1155Received(address,address,uint256,uint256,bytes)":"infinite","onERC721Received(address,address,uint256,bytes)":"infinite","owner()":"infinite","parseFirst4Bytes(bytes)":"787","permissions(address,address)":"infinite","setPermissions(address[],bool[])":"infinite","supportsInterface(bytes4)":"538","token()":"infinite"}},"methodIdentifiers":{"breakCovalentBond(address,address,uint256,uint256)":"6b764e1b","covalentBond(address,uint256,uint256)":"a737a299","dischargeParticle(address,address,uint256)":"ca1cc220","energizeParticle(address,uint256)":"a65e78f1","executeCall(address,uint256,bytes)":"9e5d4c49","isAuthorized(address)":"fe9fbb80","isLocked()":"a4e2d634","lock(uint256)":"dd467064","lockedUntil()":"ce0617ec","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","owner()":"8da5cb5b","parseFirst4Bytes(bytes)":"d0ad2535","permissions(address,address)":"1f9838b5","setPermissions(address[],bool[])":"039721b1","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccountLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxLockTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipCycle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockedUntil\",\"type\":\"uint256\"}],\"name\":\"LockUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"OverrideUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasPermission\",\"type\":\"bool\"}],\"name\":\"PermissionUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nftTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenAmount\",\"type\":\"uint256\"}],\"name\":\"breakCovalentBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nftTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenAmount\",\"type\":\"uint256\"}],\"name\":\"covalentBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"}],\"name\":\"dischargeParticle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"}],\"name\":\"energizeParticle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isAuthorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_lockedUntil\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockedUntil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"receivedTokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"parseFirst4Bytes\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"permissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"callers\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"_permissions\",\"type\":\"bool[]\"}],\"name\":\"setPermissions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"kind\":\"dev\",\"methods\":{\"executeCall(address,uint256,bytes)\":{\"details\":\"executes a low-level call against an account if the caller is authorized to make calls\"},\"isAuthorized(address)\":{\"details\":\"Returns the authorization status for a given caller\"},\"isLocked()\":{\"details\":\"returns the current lock status of the account as a boolean\"},\"lock(uint256)\":{\"details\":\"locks the account until a certain timestamp\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Allows ERC-1155 token batches to be received. This function can be overriden.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Allows ERC-1155 tokens to be received. This function can be overriden.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden.\"},\"owner()\":{\"details\":\"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account.\"},\"setPermissions(address[],bool[])\":{\"details\":\"grants a given caller execution permissions\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if a given interfaceId is supported by this account. This method can be extended by an override.\"},\"token()\":{\"details\":\"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ChargedParticlesAccount.sol\":\"ChargedParticlesAccount\"},\"evmVersion\":\"london\",\"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 v4.4.1 (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n *\\n * _Available since v4.1._\\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 _data\\n */\\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\nimport \\\"./interfaces/IERC6551Account.sol\\\";\\nimport \\\"./lib/ERC6551AccountLib.sol\\\";\\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/token/ERC1155/IERC1155Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/interfaces/IERC1271.sol\\\";\\n\\nerror NotAuthorized();\\nerror InvalidInput();\\nerror AccountLocked();\\nerror ExceedsMaxLockTime();\\nerror UntrustedImplementation();\\nerror OwnershipCycle();\\n\\n/**\\n * @title A smart contract account owned by a single ERC721 token\\n */\\ncontract Account is\\n IERC165,\\n // IERC6551Account,\\n IERC721Receiver,\\n IERC1155Receiver\\n{\\n /// @dev timestamp at which this account will be unlocked\\n uint256 public lockedUntil;\\n\\n /// @dev mapping from owner => caller => has permissions\\n mapping(address => mapping(address => bool)) public permissions;\\n\\n event OverrideUpdated(\\n address owner,\\n bytes4 selector,\\n address implementation\\n );\\n\\n event PermissionUpdated(address owner, address caller, bool hasPermission);\\n\\n event LockUpdated(uint256 lockedUntil);\\n\\n /// @dev reverts if caller is not the owner of the account\\n modifier onlyOwner() {\\n if (msg.sender != owner()) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if caller is not authorized to execute on this account\\n modifier onlyAuthorized() {\\n if (!isAuthorized(msg.sender)) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if this account is currently locked\\n modifier onlyUnlocked() {\\n if (isLocked()) revert AccountLocked();\\n _;\\n }\\n\\n constructor() {}\\n\\n /// @dev allows eth transfers by default, but allows account owner to override\\n receive() external payable {\\n }\\n\\n /// @dev executes a low-level call against an account if the caller is authorized to make calls\\n function executeCall(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) external payable onlyAuthorized onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) {\\n // emit TransactionExecuted(to, value, data);\\n\\n return _call(to, value, data);\\n }\\n\\n /// @dev grants a given caller execution permissions\\n function setPermissions(\\n address[] calldata callers,\\n bool[] calldata _permissions\\n ) external onlyUnlocked {\\n address _owner = owner();\\n if (msg.sender != _owner) revert NotAuthorized();\\n\\n uint256 length = callers.length;\\n\\n if (_permissions.length != length) revert InvalidInput();\\n\\n for (uint256 i = 0; i < length; i++) {\\n permissions[_owner][callers[i]] = _permissions[i];\\n emit PermissionUpdated(_owner, callers[i], _permissions[i]);\\n }\\n }\\n\\n /// @dev locks the account until a certain timestamp\\n function lock(uint256 _lockedUntil) external onlyOwner onlyUnlocked {\\n if (_lockedUntil > block.timestamp + 365 days)\\n revert ExceedsMaxLockTime();\\n\\n lockedUntil = _lockedUntil;\\n\\n emit LockUpdated(_lockedUntil);\\n }\\n\\n /// @dev returns the current lock status of the account as a boolean\\n function isLocked() public view returns (bool) {\\n return lockedUntil > block.timestamp;\\n }\\n\\n /// @dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\\n /// owns this account.\\n function token()\\n external\\n view\\n returns (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n )\\n {\\n return ERC6551AccountLib.token();\\n }\\n\\n /// @dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\\n /// of the token has full permissions on the account.\\n function owner() public view returns (address) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (chainId != block.chainid) return address(0);\\n\\n return IERC721(tokenContract).ownerOf(tokenId);\\n }\\n\\n /// @dev Returns the authorization status for a given caller\\n function isAuthorized(address caller) public view returns (bool) {\\n (\\n ,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n address _owner = IERC721(tokenContract).ownerOf(tokenId);\\n\\n // authorize token owner\\n if (caller == _owner) return true;\\n\\n // authorize caller if owner has granted permissions\\n if (permissions[_owner][caller]) return true;\\n\\n return false;\\n }\\n\\n /// @dev Returns true if a given interfaceId is supported by this account. This method can be\\n /// extended by an override.\\n function supportsInterface(bytes4 interfaceId)\\n public\\n pure \\n override\\n returns (bool)\\n {\\n bool defaultSupport = interfaceId == type(IERC165).interfaceId ||\\n interfaceId == type(IERC1155Receiver).interfaceId ||\\n interfaceId == type(IERC6551Account).interfaceId;\\n\\n if (defaultSupport) return true;\\n\\n return false;\\n }\\n\\n /// @dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\\n /// This function can be overriden.\\n function onERC721Received(\\n address,\\n address,\\n uint256 receivedTokenId,\\n bytes memory\\n ) public view override returns (bytes4) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (\\n chainId == block.chainid &&\\n tokenContract == msg.sender &&\\n tokenId == receivedTokenId\\n ) revert OwnershipCycle();\\n\\n return this.onERC721Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 tokens to be received. This function can be overriden.\\n function onERC1155Received(\\n address,\\n address,\\n uint256,\\n uint256,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 token batches to be received. This function can be overriden.\\n function onERC1155BatchReceived(\\n address,\\n address,\\n uint256[] memory,\\n uint256[] memory,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155BatchReceived.selector;\\n }\\n\\n /// @dev Executes a low-level call\\n function _call(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) internal returns (bytes memory result) {\\n bool success;\\n (success, result) = to.call{value: value}(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n /// @dev Executes a low-level static call\\n function _callStatic(address to, bytes calldata data)\\n internal\\n view\\n returns (bytes memory result)\\n {\\n bool success;\\n (success, result) = to.staticcall(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n function allowedMethod(bytes calldata _data) internal returns (bool) {\\n bytes4 signature = parseFirst4Bytes(_data);\\n // approve > 0x095ea7b3\\n\\n if (signature == 0x095ea7b3) {\\n return false;\\n }\\n\\n return true;\\n }\\n\\n function parseFirst4Bytes(bytes calldata _data) public pure returns (bytes4) {\\n return bytes4(_data[:4]);\\n }\\n\\n modifier onlyAllowedMethod(bytes calldata _data) {\\n require(allowedMethod(_data), \\\"Method all not allowed\\\");\\n _;\\n }\\n}\\n\",\"keccak256\":\"0x6a5070fe0c7efe0c61871d07123e50ac4b37f7eb450d2faccf2408b78ab8c23a\",\"license\":\"UNLICENSED\"},\"contracts/ChargedParticlesAccount.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\nimport \\\"./Account.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ncontract ChargedParticlesAccount is Account {\\n function covalentBond(\\n address nftTokenAddress,\\n uint256 nftTokenId,\\n uint256 nftTokenAmount\\n ) external {\\n // Transfer to self\\n IERC721(nftTokenAddress).safeTransferFrom(\\n msg.sender,\\n address(this),\\n nftTokenId\\n );\\n }\\n\\n function breakCovalentBond(\\n address receiver,\\n address nftTokenAddress,\\n uint256 nftTokenId,\\n uint256 nftTokenAmount\\n ) external {\\n IERC721(nftTokenAddress).safeTransferFrom(address(this), receiver, nftTokenId);\\n }\\n\\n function energizeParticle(\\n address assetToken,\\n uint256 assetAmount\\n ) external {\\n IERC20(assetToken).transferFrom(msg.sender, address(this), assetAmount);\\n }\\n\\n function dischargeParticle(\\n address receiver,\\n address assetToken,\\n uint256 assetAmount\\n ) external {\\n IERC20(assetToken).transfer(receiver, assetAmount);\\n }\\n}\\n\",\"keccak256\":\"0x8992d3b7b0b6eca05ca0d0c125aa1c354fa2a9250a3d20a698a3e19f430a17bf\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\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 chain 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\\n\",\"keccak256\":\"0x9972b9769e138d0f5855d5f0990dc9942977088e6fc5a9b1e289431f8e213339\",\"license\":\"UNLICENSED\"},\"contracts/lib/ERC6551AccountLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nlibrary ERC6551AccountLib {\\n function token()\\n internal\\n view\\n returns (\\n uint256,\\n address,\\n uint256\\n )\\n {\\n bytes memory footer = new bytes(0x60);\\n\\n assembly {\\n // copy 0x60 bytes from end of footer\\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\\n }\\n\\n return abi.decode(footer, (uint256, address, uint256));\\n }\\n\\n function salt() internal view returns (uint256) {\\n bytes memory footer = new bytes(0x20);\\n\\n assembly {\\n // copy 0x20 bytes from beginning of footer\\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\\n }\\n\\n return abi.decode(footer, (uint256));\\n }\\n}\\n\",\"keccak256\":\"0xf7a8eb3b4fb63068eb8ed2a1a129e4676af842541f43c1a1dc96a9f295060c45\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":309,"contract":"contracts/ChargedParticlesAccount.sol:ChargedParticlesAccount","label":"lockedUntil","offset":0,"slot":"0","type":"t_uint256"},{"astId":316,"contract":"contracts/ChargedParticlesAccount.sol:ChargedParticlesAccount","label":"permissions","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/MinimalAccount.sol":{"MinimalAccount":{"abi":[],"devdoc":{"kind":"dev","methods":{},"title":"A smart contract account owned by a single ERC721 token","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220d93842a6c5b331a60d4d9c5fc6eba883e076dc8d7b137a331c9cc95652857b8764736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 CODESIZE TIMESTAMP 0xA6 0xC5 0xB3 BALANCE 0xA6 0xD 0x4D SWAP13 0x5F 0xC6 0xEB 0xA8 DUP4 0xE0 PUSH23 0xDC8D7B137A331C9CC95652857B8764736F6C6343000811 STOP CALLER ","sourceMap":"139:28:9:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea2646970667358221220d93842a6c5b331a60d4d9c5fc6eba883e076dc8d7b137a331c9cc95652857b8764736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 CODESIZE TIMESTAMP 0xA6 0xC5 0xB3 BALANCE 0xA6 0xD 0x4D SWAP13 0x5F 0xC6 0xEB 0xA8 DUP4 0xE0 PUSH23 0xDC8D7B137A331C9CC95652857B8764736F6C6343000811 STOP CALLER ","sourceMap":"139:28:9:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"66","totalCost":"12666"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"A smart contract account owned by a single ERC721 token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MinimalAccount.sol\":\"MinimalAccount\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/MinimalAccount.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\n/**\\n * @title A smart contract account owned by a single ERC721 token\\n */\\ncontract MinimalAccount\\n{\\n\\n}\\n\",\"keccak256\":\"0xc6dc3ebda49483d6a34e541f756b9408d8e38da8f6d7c621cf0b410638200909\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"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 chain 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.17+commit.8df45f5f\"},\"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 chain 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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\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 chain 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\\n\",\"keccak256\":\"0x9972b9769e138d0f5855d5f0990dc9942977088e6fc5a9b1e289431f8e213339\",\"license\":\"UNLICENSED\"}},\"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.17+commit.8df45f5f\"},\"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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Executable.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\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\":\"0x4b24c8509ccf2fc6fd9744df0c994809133522991951dc7c467120b04f683051\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IERC6551Registry.sol":{"IERC6551Registry":{"abi":[{"inputs":[],"name":"AccountCreationFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"implementation","type":"address"},{"indexed":false,"internalType":"bytes32","name":"salt","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"chainId","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC6551AccountCreated","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"account","outputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"createAccount","outputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"AccountCreationFailed()":[{"details":"The registry MUST revert with AccountCreationFailed error if the create2 operation fails."}]},"events":{"ERC6551AccountCreated(address,address,bytes32,uint256,address,uint256)":{"details":"The registry MUST emit the ERC6551AccountCreated event upon successful account creation."}},"kind":"dev","methods":{"account(address,bytes32,uint256,address,uint256)":{"details":"Returns the computed token bound account address for a non-fungible token.","returns":{"account":"The address of the token bound account"}},"createAccount(address,bytes32,uint256,address,uint256)":{"details":"Creates a token bound account for a non-fungible token. If account has already been created, returns the account address without calling create2. Emits ERC6551AccountCreated event.","returns":{"account":"The address of the token bound account"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"account(address,bytes32,uint256,address,uint256)":"246a0021","createAccount(address,bytes32,uint256,address,uint256)":"8a54c52f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccountCreationFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC6551AccountCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"account\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccountCreationFailed()\":[{\"details\":\"The registry MUST revert with AccountCreationFailed error if the create2 operation fails.\"}]},\"events\":{\"ERC6551AccountCreated(address,address,bytes32,uint256,address,uint256)\":{\"details\":\"The registry MUST emit the ERC6551AccountCreated event upon successful account creation.\"}},\"kind\":\"dev\",\"methods\":{\"account(address,bytes32,uint256,address,uint256)\":{\"details\":\"Returns the computed token bound account address for a non-fungible token.\",\"returns\":{\"account\":\"The address of the token bound account\"}},\"createAccount(address,bytes32,uint256,address,uint256)\":{\"details\":\"Creates a token bound account for a non-fungible token. If account has already been created, returns the account address without calling create2. Emits ERC6551AccountCreated event.\",\"returns\":{\"account\":\"The address of the token bound account\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC6551Registry.sol\":\"IERC6551Registry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Registry.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\ninterface IERC6551Registry {\\n /**\\n * @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation.\\n */\\n event ERC6551AccountCreated(\\n address account,\\n address indexed implementation,\\n bytes32 salt,\\n uint256 chainId,\\n address indexed tokenContract,\\n uint256 indexed tokenId\\n );\\n\\n /**\\n * @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails.\\n */\\n error AccountCreationFailed();\\n\\n /**\\n * @dev Creates a token bound account for a non-fungible token.\\n *\\n * If account has already been created, returns the account address without calling create2.\\n *\\n * Emits ERC6551AccountCreated event.\\n *\\n * @return account The address of the token bound account\\n */\\n function createAccount(\\n address implementation,\\n bytes32 salt,\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) external returns (address account);\\n\\n /**\\n * @dev Returns the computed token bound account address for a non-fungible token.\\n *\\n * @return account The address of the token bound account\\n */\\n function account(\\n address implementation,\\n bytes32 salt,\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) external view returns (address account);\\n}\\n\",\"keccak256\":\"0x6ed4095d6c63f8d40ce6c30293efbfd8ab83a4d96a76af39aae8baa50970c352\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ERC6551AccountLib.sol":{"ERC6551AccountLib":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220507d1af45fff54535180cd2db9c0244503eb6a3f2538827633938e9a22f0be7564736f6c63430008110033","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 POP PUSH30 0x1AF45FFF54535180CD2DB9C0244503EB6A3F2538827633938E9A22F0BE75 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"58:747:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;58:747:13;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220507d1af45fff54535180cd2db9c0244503eb6a3f2538827633938e9a22f0be7564736f6c63430008110033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP PUSH30 0x1AF45FFF54535180CD2DB9C0244503EB6A3F2538827633938E9A22F0BE75 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"58:747:13:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"salt()":"infinite","token()":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ERC6551AccountLib.sol\":\"ERC6551AccountLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/ERC6551AccountLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nlibrary ERC6551AccountLib {\\n function token()\\n internal\\n view\\n returns (\\n uint256,\\n address,\\n uint256\\n )\\n {\\n bytes memory footer = new bytes(0x60);\\n\\n assembly {\\n // copy 0x60 bytes from end of footer\\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\\n }\\n\\n return abi.decode(footer, (uint256, address, uint256));\\n }\\n\\n function salt() internal view returns (uint256) {\\n bytes memory footer = new bytes(0x20);\\n\\n assembly {\\n // copy 0x20 bytes from beginning of footer\\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\\n }\\n\\n return abi.decode(footer, (uint256));\\n }\\n}\\n\",\"keccak256\":\"0xf7a8eb3b4fb63068eb8ed2a1a129e4676af842541f43c1a1dc96a9f295060c45\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}}}}} \ No newline at end of file diff --git a/build/contracts/build-info/62b1cf2576af835fbe85a24a6aed72f2.json b/build/contracts/build-info/62b1cf2576af835fbe85a24a6aed72f2.json deleted file mode 100644 index acf475b..0000000 --- a/build/contracts/build-info/62b1cf2576af835fbe85a24a6aed72f2.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"62b1cf2576af835fbe85a24a6aed72f2","_format":"hh-sol-build-info-1","solcVersion":"0.8.13","solcLongVersion":"0.8.13+commit.abaa5c0e","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n /**\n * @dev Returns the total amount of tokens stored by the contract.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n /**\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n * Use along with {totalSupply} to enumerate all tokens.\n */\n function tokenByIndex(uint256 index) external view returns (uint256);\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\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 caller.\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 v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 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 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/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\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[EIP 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"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\nimport \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"contracts/ERC721i.sol":{"content":"// SPDX-License-Identifier: MIT\n// Written by: Rob Secord (https://twitter.com/robsecord)\n// Co-founder @ Charged Particles - Visit: https://charged.fi\n// Co-founder @ Taggr - Visit: https://taggr.io\n\npragma solidity 0.8.13;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"./lib/ERC721iEnumerable.sol\";\n\n/**\n * @dev This implements a Pre-Mint version of {ERC721} that adds the ability to Pre-Mint\n * all the token ids in the contract as assign an initial owner for each token id.\n *\n * On-chain state for Pre-Mint does not need to be initially stored if Max-Supply is known.\n * Minting is a simple matter of assigning a balance to the pre-mint receiver,\n * and modifying the \"read\" methods to account for the pre-mint receiver as owner.\n * We use the Consecutive Transfer Method as defined in EIP-2309 to signal inital ownership.\n * Almost everything else remains standard.\n * We also default to the contract \"owner\" as the pre-mint receiver, but this can be changed.\n */\ncontract ERC721i is\n Ownable,\n ERC721iEnumerable\n{\n /// @dev EIP-2309: https://eips.ethereum.org/EIPS/eip-2309\n event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed fromAddress, address indexed toAddress);\n\n /// @dev ERC721 Base Token URI\n string internal _baseTokenURI;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection,\n * as well as a `minter` and a `maxSupply` for pre-minting the collection.\n */\n constructor(\n string memory name,\n string memory symbol,\n string memory baseUri,\n address minter,\n uint256 maxSupply\n )\n ERC721(name, symbol)\n Ownable()\n {\n _baseTokenURI = baseUri;\n // Set vars defined in ERC721iEnumerable.sol\n _maxSupply = maxSupply;\n _preMintReceiver = minter;\n }\n\n /**\n * @dev Pre-mint the max-supply of token IDs to the minter account.\n * Token IDs are in base-1 sequential order.\n */\n function _preMint() internal {\n // Update balance for initial owner, defined in ERC721.sol\n _balances[_preMintReceiver] = _maxSupply;\n\n // Emit the Consecutive Transfer Event\n emit ConsecutiveTransfer(1, _maxSupply, address(0), _preMintReceiver);\n }\n\n function preMint() external onlyOwner {\n _preMint();\n }\n\n function _baseURI() internal view virtual override returns (string memory) {\n return _baseTokenURI;\n }\n}\n"},"contracts/lib/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\n// Modified by: Rob Secord (https://twitter.com/robsecord)\n// Co-founder @ Charged Particles - Visit: https://charged.fi\n// Co-founder @ Taggr - Visit: https://taggr.io\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n *\n * NOTE:\n * The only changes made here are:\n * - change scope of \"_owners\" from private to internal\n * - change scope of \"_balances\" from private to internal\n * - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\"\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) internal _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) internal _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _owners[tokenId];\n require(owner != address(0), \"ERC721: invalid token ID\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not token owner nor approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n _requireMinted(tokenId);\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n _safeTransfer(from, to, tokenId, data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _owners[tokenId] != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n address owner = ownerOf(tokenId);\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId);\n\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n\n _afterTokenTransfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId);\n\n // Clear approvals\n _approve(address(0), tokenId);\n\n _balances[owner] -= 1;\n // Prevent re-assigning the token back to the Pre-Mint Receiver\n _owners[tokenId] = _NULL_ADDRESS;\n\n emit Transfer(owner, address(0), tokenId);\n\n _afterTokenTransfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {\n require(ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n _balances[from] -= 1;\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(\n address owner,\n address operator,\n bool approved\n ) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` has not been minted yet.\n */\n function _requireMinted(uint256 tokenId) internal view virtual {\n require(_exists(tokenId), \"ERC721: invalid token ID\");\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) private returns (bool) {\n if (to.code.length > 0) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n}\n"},"contracts/lib/ERC721iEnumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// Modified from: OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)\n// Modified by: Rob Secord (https://twitter.com/robsecord)\n// Co-founder @ Charged Particles - Visit: https://charged.fi\n// Co-founder @ Taggr - Visit: https://taggr.io\n\npragma solidity ^0.8.0;\n\nimport \"./ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\";\n\n/**\n * @dev This implements an optional extension of {ERC721} defined in the EIP that adds\n * enumerability of all the token ids in the contract as well as all token ids owned by each\n * account.\n *\n * @dev This implementation also includes support for pre-minting a max-supply of tokens up-front.\n *\n * Note on pre-mint:\n * Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs.\n * For this reason, the \"allTokens\" state vars are unneccesary and have been removed.\n * Also defines 2 light-weight state vars: \"_preMintReceiver\" & \"_maxSupply\"\n * Overrides \"ownerOf\" & \"_exists\"\n */\nabstract contract ERC721iEnumerable is ERC721, IERC721Enumerable {\n // Mapping from owner to list of owned token IDs\n mapping(address => mapping(uint256 => uint256)) private _ownedTokens;\n\n // Mapping from token ID to index of the owner tokens list\n mapping(uint256 => uint256) private _ownedTokensIndex;\n\n // Tracking for the Pre-Mint Receiver\n address internal _preMintReceiver;\n\n // Max-Supply for Pre-Mint\n uint256 internal _maxSupply;\n\n /**\n * @dev See {IERC165-supportsInterface}.\n *\n * Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n * note: Fix contributed by surfer77\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\n require(index < ERC721.balanceOf(owner), \"ERC721Enumerable: owner index out of bounds\");\n if (owner == address(_preMintReceiver)) {\n uint256 supply = totalSupply();\n uint256 matched = 0;\n for (uint256 i = 1; i < supply; i++) {\n if (ownerOf(i) == address(_preMintReceiver)) {\n matched += 1;\n if (matched - 1 == index) {\n return i;\n }\n }\n }\n }\n return _ownedTokens[owner][index];\n }\n\n /**\n * @dev See {IERC721Enumerable-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n // The Total Supply is simply the Max Supply\n return _maxSupply;\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenByIndex}.\n */\n function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\n require(index < _maxSupply, \"ERC721Enumerable: global index out of bounds\");\n // Array index is 0-based, whereas Token ID is 1-based (sequential).\n return index + 1;\n }\n\n /**\n * @dev Override the ERC721 \"ownerOf\" function to account for the Pre-Mint Receiver.\n */\n function ownerOf(uint256 tokenId) public view virtual override(IERC721, ERC721) returns (address) {\n // Anything beyond the Pre-Minted supply will use the standard \"ownerOf\"\n if (tokenId > _maxSupply) {\n return super.ownerOf(tokenId);\n }\n\n // Since we have Pre-Minted the Max-Supply to the \"Pre-Mint Receiver\" account, we know:\n // - if the \"_owners\" mapping has not been assigned, then the owner is the Pre-Mint Receiver.\n // - after the NFT is transferred, the \"_owners\" mapping will be updated with the new owner.\n address owner_ = _owners[tokenId];\n if (owner_ == address(0)) {\n owner_ = _preMintReceiver;\n }\n return owner_;\n }\n\n /**\n * @dev Override the ERC721 \"_exists\" function to account for the Pre-Minted Max-Supply.\n */\n function _exists(uint256 tokenId) internal view virtual override(ERC721) returns (bool) {\n // Anything beyond the Pre-Minted supply will use the standard \"_exists\"\n if (tokenId > _maxSupply) {\n return super._exists(tokenId);\n }\n\n // We know the Max-Supply has been Pre-Minted with Sequential Token IDs\n return (tokenId > 0 && tokenId <= _maxSupply);\n }\n\n /**\n * @dev See {IERC721Enumerable-_beforeTokenTransfer}.\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual override {\n super._beforeTokenTransfer(from, to, tokenId);\n\n if (from != to) {\n _removeTokenFromOwnerEnumeration(from, tokenId);\n _addTokenToOwnerEnumeration(to, tokenId);\n }\n }\n\n /**\n * @dev See {IERC721Enumerable-_addTokenToOwnerEnumeration}.\n */\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\n uint256 length = ERC721.balanceOf(to);\n _ownedTokens[to][length] = tokenId;\n _ownedTokensIndex[tokenId] = length;\n }\n\n /**\n * @dev See {IERC721Enumerable-_removeTokenFromOwnerEnumeration}.\n */\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\n\n _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n }\n\n // This also deletes the contents at the last position of the array\n delete _ownedTokensIndex[tokenId];\n delete _ownedTokens[from][lastTokenIndex];\n }\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[656],"Ownable":[112]},"id":113,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:0"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":113,"sourceUnit":657,"src":"127:30:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":656,"src":"683:7:0"},"id":5,"nodeType":"InheritanceSpecifier","src":"683:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"159:494:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":112,"linearizedBaseContracts":[112,656],"name":"Ownable","nameLocation":"672:7:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7,"mutability":"mutable","name":"_owner","nameLocation":"713:6:0","nodeType":"VariableDeclaration","scope":112,"src":"697:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":13,"name":"OwnershipTransferred","nameLocation":"732:20:0","nodeType":"EventDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"769:13:0","nodeType":"VariableDeclaration","scope":13,"src":"753:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8,"name":"address","nodeType":"ElementaryTypeName","src":"753:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"800:8:0","nodeType":"VariableDeclaration","scope":13,"src":"784:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"784:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"752:57:0"},"src":"726:84:0"},{"body":{"id":22,"nodeType":"Block","src":"926:49:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":18,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"955:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":19,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"955:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"936:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"936:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21,"nodeType":"ExpressionStatement","src":"936:32:0"}]},"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"816:91:0","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":23,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"923:2:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"926:0:0"},"scope":112,"src":"912:63:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":30,"nodeType":"Block","src":"1084:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":26,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1094:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":27,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28,"nodeType":"ExpressionStatement","src":"1094:13:0"},{"id":29,"nodeType":"PlaceholderStatement","src":"1117:1:0"}]},"documentation":{"id":24,"nodeType":"StructuredDocumentation","src":"981:77:0","text":" @dev Throws if called by any account other than the owner."},"id":31,"name":"onlyOwner","nameLocation":"1072:9:0","nodeType":"ModifierDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"1081:2:0"},"src":"1063:62:0","virtual":false,"visibility":"internal"},{"body":{"id":39,"nodeType":"Block","src":"1256:30:0","statements":[{"expression":{"id":37,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"1273:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":36,"id":38,"nodeType":"Return","src":"1266:13:0"}]},"documentation":{"id":32,"nodeType":"StructuredDocumentation","src":"1131:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":40,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1210:5:0","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[],"src":"1215:2:0"},"returnParameters":{"id":36,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40,"src":"1247:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1247:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1246:9:0"},"scope":112,"src":"1201:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":53,"nodeType":"Block","src":"1404:85:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":45,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"1422:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1422:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":47,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"1433:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":48,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1433:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1422:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1447:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":44,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1414:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1414:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52,"nodeType":"ExpressionStatement","src":"1414:68:0"}]},"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1292:62:0","text":" @dev Throws if the sender is not the owner."},"id":54,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1368:11:0","nodeType":"FunctionDefinition","parameters":{"id":42,"nodeType":"ParameterList","parameters":[],"src":"1379:2:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[],"src":"1404:0:0"},"scope":112,"src":"1359:130:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":67,"nodeType":"Block","src":"1878:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":63,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1915:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":62,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1907:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"1907:7:0","typeDescriptions":{}}},"id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1907:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"1888:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1888:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"ExpressionStatement","src":"1888:30:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1495:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":68,"implemented":true,"kind":"function","modifiers":[{"id":58,"kind":"modifierInvocation","modifierName":{"id":57,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"1868:9:0"},"nodeType":"ModifierInvocation","src":"1868:9:0"}],"name":"renounceOwnership","nameLocation":"1833:17:0","nodeType":"FunctionDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"1850:2:0"},"returnParameters":{"id":59,"nodeType":"ParameterList","parameters":[],"src":"1878:0:0"},"scope":112,"src":"1824:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":90,"nodeType":"Block","src":"2144:128:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":82,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2162:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2182:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":79,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2174:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"2174:7:0","typeDescriptions":{}}},"id":81,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2174:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2162:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":83,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2186:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":76,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2154:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2154:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85,"nodeType":"ExpressionStatement","src":"2154:73:0"},{"expression":{"arguments":[{"id":87,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2256:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2237:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2237:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"2237:28:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1931:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":91,"implemented":true,"kind":"function","modifiers":[{"id":74,"kind":"modifierInvocation","modifierName":{"id":73,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2134:9:0"},"nodeType":"ModifierInvocation","src":"2134:9:0"}],"name":"transferOwnership","nameLocation":"2083:17:0","nodeType":"FunctionDefinition","parameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"newOwner","nameLocation":"2109:8:0","nodeType":"VariableDeclaration","scope":91,"src":"2101:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"2101:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2100:18:0"},"returnParameters":{"id":75,"nodeType":"ParameterList","parameters":[],"src":"2144:0:0"},"scope":112,"src":"2074:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":110,"nodeType":"Block","src":"2489:124:0","statements":[{"assignments":[98],"declarations":[{"constant":false,"id":98,"mutability":"mutable","name":"oldOwner","nameLocation":"2507:8:0","nodeType":"VariableDeclaration","scope":110,"src":"2499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":100,"initialValue":{"id":99,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2518:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2499:25:0"},{"expression":{"id":103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":101,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2534:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":102,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2543:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2534:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":104,"nodeType":"ExpressionStatement","src":"2534:17:0"},{"eventCall":{"arguments":[{"id":106,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"2587:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":107,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2597:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":105,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"2566:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2566:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"EmitStatement","src":"2561:45:0"}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"2278:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":111,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2435:18:0","nodeType":"FunctionDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"newOwner","nameLocation":"2462:8:0","nodeType":"VariableDeclaration","scope":111,"src":"2454:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":93,"name":"address","nodeType":"ElementaryTypeName","src":"2454:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2453:18:0"},"returnParameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2489:0:0"},"scope":112,"src":"2426:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":113,"src":"654:1961:0","usedErrors":[]}],"src":"102:2514:0"},"id":0},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[921],"IERC721":[228]},"id":229,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":114,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:1"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":115,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":229,"sourceUnit":922,"src":"133:47:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":117,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":921,"src":"271:7:1"},"id":118,"nodeType":"InheritanceSpecifier","src":"271:7:1"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"182:67:1","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":228,"linearizedBaseContracts":[228,921],"name":"IERC721","nameLocation":"260:7:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"285:88:1","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":127,"name":"Transfer","nameLocation":"384:8:1","nodeType":"EventDefinition","parameters":{"id":126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:1","nodeType":"VariableDeclaration","scope":127,"src":"393:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":123,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:1","nodeType":"VariableDeclaration","scope":127,"src":"415:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":122,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":125,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:1","nodeType":"VariableDeclaration","scope":127,"src":"435:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":124,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:1"},"src":"378:82:1"},{"anonymous":false,"documentation":{"id":128,"nodeType":"StructuredDocumentation","src":"466:94:1","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":136,"name":"Approval","nameLocation":"571:8:1","nodeType":"EventDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":130,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:1","nodeType":"VariableDeclaration","scope":136,"src":"580:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":132,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:1","nodeType":"VariableDeclaration","scope":136,"src":"603:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":131,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":134,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:1","nodeType":"VariableDeclaration","scope":136,"src":"629:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":133,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:1"},"src":"565:89:1"},{"anonymous":false,"documentation":{"id":137,"nodeType":"StructuredDocumentation","src":"660:117:1","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":145,"name":"ApprovalForAll","nameLocation":"788:14:1","nodeType":"EventDefinition","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":139,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:1","nodeType":"VariableDeclaration","scope":145,"src":"803:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":141,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:1","nodeType":"VariableDeclaration","scope":145,"src":"826:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":143,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:1","nodeType":"VariableDeclaration","scope":145,"src":"852:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":142,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:1"},"src":"782:85:1"},{"documentation":{"id":146,"nodeType":"StructuredDocumentation","src":"873:76:1","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":153,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:1","nodeType":"FunctionDefinition","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"owner","nameLocation":"981:5:1","nodeType":"VariableDeclaration","scope":153,"src":"973:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":147,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:1"},"returnParameters":{"id":152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":151,"mutability":"mutable","name":"balance","nameLocation":"1019:7:1","nodeType":"VariableDeclaration","scope":153,"src":"1011:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":150,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:1"},"scope":228,"src":"954:74:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"1034:131:1","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":161,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:1","nodeType":"FunctionDefinition","parameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:1","nodeType":"VariableDeclaration","scope":161,"src":"1187:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":155,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:1"},"returnParameters":{"id":160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"owner","nameLocation":"1235:5:1","nodeType":"VariableDeclaration","scope":161,"src":"1227:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":158,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:1"},"scope":228,"src":"1170:72:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":162,"nodeType":"StructuredDocumentation","src":"1248:556: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 a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":173,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:1","nodeType":"FunctionDefinition","parameters":{"id":171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"from","nameLocation":"1843:4:1","nodeType":"VariableDeclaration","scope":173,"src":"1835:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":166,"mutability":"mutable","name":"to","nameLocation":"1857:2:1","nodeType":"VariableDeclaration","scope":173,"src":"1849:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":165,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":168,"mutability":"mutable","name":"tokenId","nameLocation":"1869:7:1","nodeType":"VariableDeclaration","scope":173,"src":"1861:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":167,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":170,"mutability":"mutable","name":"data","nameLocation":"1893:4:1","nodeType":"VariableDeclaration","scope":173,"src":"1878:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":169,"name":"bytes","nodeType":"ElementaryTypeName","src":"1878:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:64:1"},"returnParameters":{"id":172,"nodeType":"ParameterList","parameters":[],"src":"1907:0:1"},"scope":228,"src":"1809:99:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":174,"nodeType":"StructuredDocumentation","src":"1914:687:1","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 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 {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":183,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2615:16:1","nodeType":"FunctionDefinition","parameters":{"id":181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":176,"mutability":"mutable","name":"from","nameLocation":"2640:4:1","nodeType":"VariableDeclaration","scope":183,"src":"2632:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":175,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":178,"mutability":"mutable","name":"to","nameLocation":"2654:2:1","nodeType":"VariableDeclaration","scope":183,"src":"2646:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":177,"name":"address","nodeType":"ElementaryTypeName","src":"2646:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":180,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:1","nodeType":"VariableDeclaration","scope":183,"src":"2658:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":179,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2631:43:1"},"returnParameters":{"id":182,"nodeType":"ParameterList","parameters":[],"src":"2683:0:1"},"scope":228,"src":"2606:78:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":184,"nodeType":"StructuredDocumentation","src":"2690:732: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 ERC721\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":193,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3436:12:1","nodeType":"FunctionDefinition","parameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":186,"mutability":"mutable","name":"from","nameLocation":"3457:4:1","nodeType":"VariableDeclaration","scope":193,"src":"3449:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"to","nameLocation":"3471:2:1","nodeType":"VariableDeclaration","scope":193,"src":"3463:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":187,"name":"address","nodeType":"ElementaryTypeName","src":"3463:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"tokenId","nameLocation":"3483:7:1","nodeType":"VariableDeclaration","scope":193,"src":"3475:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":189,"name":"uint256","nodeType":"ElementaryTypeName","src":"3475:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3448:43:1"},"returnParameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"3500:0:1"},"scope":228,"src":"3427:74:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":194,"nodeType":"StructuredDocumentation","src":"3507: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":201,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3973:7:1","nodeType":"FunctionDefinition","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"to","nameLocation":"3989:2:1","nodeType":"VariableDeclaration","scope":201,"src":"3981:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":195,"name":"address","nodeType":"ElementaryTypeName","src":"3981:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":198,"mutability":"mutable","name":"tokenId","nameLocation":"4001:7:1","nodeType":"VariableDeclaration","scope":201,"src":"3993:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":197,"name":"uint256","nodeType":"ElementaryTypeName","src":"3993:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3980:29:1"},"returnParameters":{"id":200,"nodeType":"ParameterList","parameters":[],"src":"4018:0:1"},"scope":228,"src":"3964:55:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":202,"nodeType":"StructuredDocumentation","src":"4025:309: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 caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":209,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4348:17:1","nodeType":"FunctionDefinition","parameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"mutability":"mutable","name":"operator","nameLocation":"4374:8:1","nodeType":"VariableDeclaration","scope":209,"src":"4366:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"4366:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":206,"mutability":"mutable","name":"approved","nameLocation":"4389:8:1","nodeType":"VariableDeclaration","scope":209,"src":"4384:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":205,"name":"bool","nodeType":"ElementaryTypeName","src":"4384:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4365:33:1"},"returnParameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"4407:0:1"},"scope":228,"src":"4339:69:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":210,"nodeType":"StructuredDocumentation","src":"4414:139:1","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":217,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4567:11:1","nodeType":"FunctionDefinition","parameters":{"id":213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":212,"mutability":"mutable","name":"tokenId","nameLocation":"4587:7:1","nodeType":"VariableDeclaration","scope":217,"src":"4579:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":211,"name":"uint256","nodeType":"ElementaryTypeName","src":"4579:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4578:17:1"},"returnParameters":{"id":216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":215,"mutability":"mutable","name":"operator","nameLocation":"4627:8:1","nodeType":"VariableDeclaration","scope":217,"src":"4619:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":214,"name":"address","nodeType":"ElementaryTypeName","src":"4619:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4618:18:1"},"scope":228,"src":"4558:79:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":218,"nodeType":"StructuredDocumentation","src":"4643:138:1","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":227,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4795:16:1","nodeType":"FunctionDefinition","parameters":{"id":223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":220,"mutability":"mutable","name":"owner","nameLocation":"4820:5:1","nodeType":"VariableDeclaration","scope":227,"src":"4812:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":219,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":222,"mutability":"mutable","name":"operator","nameLocation":"4835:8:1","nodeType":"VariableDeclaration","scope":227,"src":"4827:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":221,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4811:33:1"},"returnParameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":227,"src":"4868:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":224,"name":"bool","nodeType":"ElementaryTypeName","src":"4868:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4867:6:1"},"scope":228,"src":"4786:88:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":229,"src":"250:4626:1","usedErrors":[]}],"src":"108:4769:1"},"id":1},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[246]},"id":247,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":230,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":231,"nodeType":"StructuredDocumentation","src":"141:152:2","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":246,"linearizedBaseContracts":[246],"name":"IERC721Receiver","nameLocation":"304:15:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":232,"nodeType":"StructuredDocumentation","src":"326:493: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 reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":245,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:2","nodeType":"FunctionDefinition","parameters":{"id":241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":234,"mutability":"mutable","name":"operator","nameLocation":"867:8:2","nodeType":"VariableDeclaration","scope":245,"src":"859:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":233,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":236,"mutability":"mutable","name":"from","nameLocation":"893:4:2","nodeType":"VariableDeclaration","scope":245,"src":"885:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":235,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":238,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:2","nodeType":"VariableDeclaration","scope":245,"src":"907:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":237,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":240,"mutability":"mutable","name":"data","nameLocation":"947:4:2","nodeType":"VariableDeclaration","scope":245,"src":"932:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":239,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:2"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":245,"src":"976:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":242,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:2"},"scope":246,"src":"824:160:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":247,"src":"294:692:2","usedErrors":[]}],"src":"116:871:2"},"id":2},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","exportedSymbols":{"IERC165":[921],"IERC721":[228],"IERC721Enumerable":[277]},"id":278,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":248,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"129:23:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":249,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":278,"sourceUnit":229,"src":"154:24:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":251,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":228,"src":"348:7:3"},"id":252,"nodeType":"InheritanceSpecifier","src":"348:7:3"}],"canonicalName":"IERC721Enumerable","contractDependencies":[],"contractKind":"interface","documentation":{"id":250,"nodeType":"StructuredDocumentation","src":"180:136:3","text":" @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":277,"linearizedBaseContracts":[277,228,921],"name":"IERC721Enumerable","nameLocation":"327:17:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":253,"nodeType":"StructuredDocumentation","src":"362:82:3","text":" @dev Returns the total amount of tokens stored by the contract."},"functionSelector":"18160ddd","id":258,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"458:11:3","nodeType":"FunctionDefinition","parameters":{"id":254,"nodeType":"ParameterList","parameters":[],"src":"469:2:3"},"returnParameters":{"id":257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":258,"src":"495:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":255,"name":"uint256","nodeType":"ElementaryTypeName","src":"495:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"494:9:3"},"scope":277,"src":"449:55:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"510:171:3","text":" @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"functionSelector":"2f745c59","id":268,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"695:19:3","nodeType":"FunctionDefinition","parameters":{"id":264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":261,"mutability":"mutable","name":"owner","nameLocation":"723:5:3","nodeType":"VariableDeclaration","scope":268,"src":"715:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":260,"name":"address","nodeType":"ElementaryTypeName","src":"715:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":263,"mutability":"mutable","name":"index","nameLocation":"738:5:3","nodeType":"VariableDeclaration","scope":268,"src":"730:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"730:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"714:30:3"},"returnParameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":268,"src":"768:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":265,"name":"uint256","nodeType":"ElementaryTypeName","src":"768:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"767:9:3"},"scope":277,"src":"686:91:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":269,"nodeType":"StructuredDocumentation","src":"783:164:3","text":" @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens."},"functionSelector":"4f6ccce7","id":276,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"961:12:3","nodeType":"FunctionDefinition","parameters":{"id":272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"mutability":"mutable","name":"index","nameLocation":"982:5:3","nodeType":"VariableDeclaration","scope":276,"src":"974:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":270,"name":"uint256","nodeType":"ElementaryTypeName","src":"974:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"973:15:3"},"returnParameters":{"id":275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":274,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":276,"src":"1012:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":273,"name":"uint256","nodeType":"ElementaryTypeName","src":"1012:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1011:9:3"},"scope":277,"src":"952:69:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":278,"src":"317:706:3","usedErrors":[]}],"src":"129:895:3"},"id":3},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC165":[921],"IERC721":[228],"IERC721Metadata":[304]},"id":305,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":279,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:4"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":280,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":305,"sourceUnit":229,"src":"137:24:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":282,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":228,"src":"326:7:4"},"id":283,"nodeType":"InheritanceSpecifier","src":"326:7:4"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":281,"nodeType":"StructuredDocumentation","src":"163:133:4","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":304,"linearizedBaseContracts":[304,228,921],"name":"IERC721Metadata","nameLocation":"307:15:4","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":284,"nodeType":"StructuredDocumentation","src":"340:58:4","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":289,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"412:4:4","nodeType":"FunctionDefinition","parameters":{"id":285,"nodeType":"ParameterList","parameters":[],"src":"416:2:4"},"returnParameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":289,"src":"442:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":286,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"441:15:4"},"scope":304,"src":"403:54:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":290,"nodeType":"StructuredDocumentation","src":"463:60:4","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":295,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"537:6:4","nodeType":"FunctionDefinition","parameters":{"id":291,"nodeType":"ParameterList","parameters":[],"src":"543:2:4"},"returnParameters":{"id":294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":293,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":295,"src":"569:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":292,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"568:15:4"},"scope":304,"src":"528:56:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":296,"nodeType":"StructuredDocumentation","src":"590:90:4","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":303,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"694:8:4","nodeType":"FunctionDefinition","parameters":{"id":299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":298,"mutability":"mutable","name":"tokenId","nameLocation":"711:7:4","nodeType":"VariableDeclaration","scope":303,"src":"703:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":297,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"702:17:4"},"returnParameters":{"id":302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":303,"src":"743:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":300,"name":"string","nodeType":"ElementaryTypeName","src":"743:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"742:15:4"},"scope":304,"src":"685:73:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":305,"src":"297:463:4","usedErrors":[]}],"src":"112:649:4"},"id":4},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[634]},"id":635,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":306,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":307,"nodeType":"StructuredDocumentation","src":"126:67:5","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":634,"linearizedBaseContracts":[634],"name":"Address","nameLocation":"202:7:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":321,"nodeType":"Block","src":"1478:254:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":315,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":310,"src":"1702:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"1702:12:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1702:19:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":314,"id":320,"nodeType":"Return","src":"1695:30:5"}]},"documentation":{"id":308,"nodeType":"StructuredDocumentation","src":"216:1191:5","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":322,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:5","nodeType":"FunctionDefinition","parameters":{"id":311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":310,"mutability":"mutable","name":"account","nameLocation":"1440:7:5","nodeType":"VariableDeclaration","scope":322,"src":"1432:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":309,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:5"},"returnParameters":{"id":314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":322,"src":"1472:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":312,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:5"},"scope":634,"src":"1412:320:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":355,"nodeType":"Block","src":"2718:241:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":333,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2744:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$634","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$634","typeString":"library Address"}],"id":332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":331,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:5","typeDescriptions":{}}},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2736:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2736:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":336,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"2761:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":330,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2728:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2728:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":340,"nodeType":"ExpressionStatement","src":"2728:73:5"},{"assignments":[342,null],"declarations":[{"constant":false,"id":342,"mutability":"mutable","name":"success","nameLocation":"2818:7:5","nodeType":"VariableDeclaration","scope":355,"src":"2813:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":341,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":349,"initialValue":{"arguments":[{"hexValue":"","id":347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":343,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"2831:9:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2831:14:5","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":346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":345,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"2853:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:5","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":348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2831:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:5"},{"expression":{"arguments":[{"id":351,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"2882:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":350,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2874:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2874:78:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":354,"nodeType":"ExpressionStatement","src":"2874:78:5"}]},"documentation":{"id":323,"nodeType":"StructuredDocumentation","src":"1738:904:5","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":356,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:5","nodeType":"FunctionDefinition","parameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:5","nodeType":"VariableDeclaration","scope":356,"src":"2666:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":324,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:5","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":327,"mutability":"mutable","name":"amount","nameLocation":"2701:6:5","nodeType":"VariableDeclaration","scope":356,"src":"2693:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":326,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:5"},"returnParameters":{"id":329,"nodeType":"ParameterList","parameters":[],"src":"2718:0:5"},"scope":634,"src":"2647:312:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":373,"nodeType":"Block","src":"3790:96:5","statements":[{"expression":{"arguments":[{"id":367,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":359,"src":"3829:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":368,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"3837:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":366,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[414,458],"referencedDeclaration":458,"src":"3807:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3807:72:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":365,"id":372,"nodeType":"Return","src":"3800:79:5"}]},"documentation":{"id":357,"nodeType":"StructuredDocumentation","src":"2965:731:5","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":374,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:5","nodeType":"FunctionDefinition","parameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":359,"mutability":"mutable","name":"target","nameLocation":"3731:6:5","nodeType":"VariableDeclaration","scope":374,"src":"3723:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":358,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":361,"mutability":"mutable","name":"data","nameLocation":"3752:4:5","nodeType":"VariableDeclaration","scope":374,"src":"3739:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":360,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:5"},"returnParameters":{"id":365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":374,"src":"3776:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":363,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:5"},"scope":634,"src":"3701:185:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":393,"nodeType":"Block","src":"4255:76:5","statements":[{"expression":{"arguments":[{"id":387,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":377,"src":"4294:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":388,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"4302:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":390,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"4311:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":386,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[414,458],"referencedDeclaration":458,"src":"4272:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4272:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":385,"id":392,"nodeType":"Return","src":"4265:59:5"}]},"documentation":{"id":375,"nodeType":"StructuredDocumentation","src":"3892:211:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":394,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:5","nodeType":"FunctionDefinition","parameters":{"id":382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"target","nameLocation":"4147:6:5","nodeType":"VariableDeclaration","scope":394,"src":"4139:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":376,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":379,"mutability":"mutable","name":"data","nameLocation":"4176:4:5","nodeType":"VariableDeclaration","scope":394,"src":"4163:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":378,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":381,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:5","nodeType":"VariableDeclaration","scope":394,"src":"4190:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":380,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:5"},"returnParameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":394,"src":"4241:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":383,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:5"},"scope":634,"src":"4108:223:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":413,"nodeType":"Block","src":"4806:111:5","statements":[{"expression":{"arguments":[{"id":407,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"4845:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":408,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":399,"src":"4853:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":401,"src":"4859:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":406,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[414,458],"referencedDeclaration":458,"src":"4823:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4823:87:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":405,"id":412,"nodeType":"Return","src":"4816:94:5"}]},"documentation":{"id":395,"nodeType":"StructuredDocumentation","src":"4337:351:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":414,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:5","nodeType":"FunctionDefinition","parameters":{"id":402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":397,"mutability":"mutable","name":"target","nameLocation":"4732:6:5","nodeType":"VariableDeclaration","scope":414,"src":"4724:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":396,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":399,"mutability":"mutable","name":"data","nameLocation":"4753:4:5","nodeType":"VariableDeclaration","scope":414,"src":"4740:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":398,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":401,"mutability":"mutable","name":"value","nameLocation":"4767:5:5","nodeType":"VariableDeclaration","scope":414,"src":"4759:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":400,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:5"},"returnParameters":{"id":405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":414,"src":"4792:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":403,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:5"},"scope":634,"src":"4693:224:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":457,"nodeType":"Block","src":"5344:267:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":431,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5370:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$634","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$634","typeString":"library Address"}],"id":430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":429,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:5","typeDescriptions":{}}},"id":432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5362:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"5362:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":434,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"5387:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":428,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5354:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5354:81:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":438,"nodeType":"ExpressionStatement","src":"5354:81:5"},{"assignments":[440,442],"declarations":[{"constant":false,"id":440,"mutability":"mutable","name":"success","nameLocation":"5451:7:5","nodeType":"VariableDeclaration","scope":457,"src":"5446:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":439,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":442,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:5","nodeType":"VariableDeclaration","scope":457,"src":"5460:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":441,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":449,"initialValue":{"arguments":[{"id":447,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"5513:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":443,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"5487:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5487:11:5","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":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"5506:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:5","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":448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5487:31:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:5"},{"expression":{"arguments":[{"id":451,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"5562:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":452,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":440,"src":"5570:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":453,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"5579:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":454,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":423,"src":"5591:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":450,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"5535:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5535:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":427,"id":456,"nodeType":"Return","src":"5528:76:5"}]},"documentation":{"id":415,"nodeType":"StructuredDocumentation","src":"4923:237:5","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":458,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:5","nodeType":"FunctionDefinition","parameters":{"id":424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":417,"mutability":"mutable","name":"target","nameLocation":"5213:6:5","nodeType":"VariableDeclaration","scope":458,"src":"5205:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":419,"mutability":"mutable","name":"data","nameLocation":"5242:4:5","nodeType":"VariableDeclaration","scope":458,"src":"5229:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":418,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":421,"mutability":"mutable","name":"value","nameLocation":"5264:5:5","nodeType":"VariableDeclaration","scope":458,"src":"5256:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":420,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":423,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:5","nodeType":"VariableDeclaration","scope":458,"src":"5279:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":422,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:5"},"returnParameters":{"id":427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":458,"src":"5330:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":425,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:5"},"scope":634,"src":"5165:446:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":474,"nodeType":"Block","src":"5888:97:5","statements":[{"expression":{"arguments":[{"id":469,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"5924:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":470,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"5932:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":468,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[475,504],"referencedDeclaration":504,"src":"5905:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5905:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":467,"id":473,"nodeType":"Return","src":"5898:80:5"}]},"documentation":{"id":459,"nodeType":"StructuredDocumentation","src":"5617:166:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":475,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:5","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":461,"mutability":"mutable","name":"target","nameLocation":"5824:6:5","nodeType":"VariableDeclaration","scope":475,"src":"5816:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":460,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":463,"mutability":"mutable","name":"data","nameLocation":"5845:4:5","nodeType":"VariableDeclaration","scope":475,"src":"5832:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":462,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:5"},"returnParameters":{"id":467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":475,"src":"5874:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":465,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:5"},"scope":634,"src":"5788:197:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":503,"nodeType":"Block","src":"6327:168:5","statements":[{"assignments":[488,490],"declarations":[{"constant":false,"id":488,"mutability":"mutable","name":"success","nameLocation":"6343:7:5","nodeType":"VariableDeclaration","scope":503,"src":"6338:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":487,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":490,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:5","nodeType":"VariableDeclaration","scope":503,"src":"6352:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":489,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":495,"initialValue":{"arguments":[{"id":493,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"6397:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":491,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6379:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:5","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":494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6379:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:5"},{"expression":{"arguments":[{"id":497,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6446:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":498,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"6454:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":499,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":490,"src":"6463:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":500,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"6475:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":496,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"6419:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6419:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":486,"id":502,"nodeType":"Return","src":"6412:76:5"}]},"documentation":{"id":476,"nodeType":"StructuredDocumentation","src":"5991:173:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":504,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:5","nodeType":"FunctionDefinition","parameters":{"id":483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"target","nameLocation":"6214:6:5","nodeType":"VariableDeclaration","scope":504,"src":"6206:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":477,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"data","nameLocation":"6243:4:5","nodeType":"VariableDeclaration","scope":504,"src":"6230:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":479,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":482,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:5","nodeType":"VariableDeclaration","scope":504,"src":"6257:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":481,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:5"},"returnParameters":{"id":486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":485,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":504,"src":"6313:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":484,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:5"},"scope":634,"src":"6169:326:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":520,"nodeType":"Block","src":"6771:101:5","statements":[{"expression":{"arguments":[{"id":515,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"6809:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":516,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":509,"src":"6817:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":514,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[521,550],"referencedDeclaration":550,"src":"6788:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6788:77:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":513,"id":519,"nodeType":"Return","src":"6781:84:5"}]},"documentation":{"id":505,"nodeType":"StructuredDocumentation","src":"6501:168:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":521,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:5","nodeType":"FunctionDefinition","parameters":{"id":510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":507,"mutability":"mutable","name":"target","nameLocation":"6712:6:5","nodeType":"VariableDeclaration","scope":521,"src":"6704:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":506,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":509,"mutability":"mutable","name":"data","nameLocation":"6733:4:5","nodeType":"VariableDeclaration","scope":521,"src":"6720:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":508,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:5"},"returnParameters":{"id":513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":521,"src":"6757:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":511,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:5"},"scope":634,"src":"6674:198:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":549,"nodeType":"Block","src":"7213:170:5","statements":[{"assignments":[534,536],"declarations":[{"constant":false,"id":534,"mutability":"mutable","name":"success","nameLocation":"7229:7:5","nodeType":"VariableDeclaration","scope":549,"src":"7224:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":533,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":536,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:5","nodeType":"VariableDeclaration","scope":549,"src":"7238:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":535,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":541,"initialValue":{"arguments":[{"id":539,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"7285:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":537,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"7265:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:5","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":540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7265:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:5"},{"expression":{"arguments":[{"id":543,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"7334:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":544,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"7342:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":545,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":536,"src":"7351:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":546,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"7363:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":542,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"7307:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7307:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":532,"id":548,"nodeType":"Return","src":"7300:76:5"}]},"documentation":{"id":522,"nodeType":"StructuredDocumentation","src":"6878:175:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":550,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:5","nodeType":"FunctionDefinition","parameters":{"id":529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":524,"mutability":"mutable","name":"target","nameLocation":"7105:6:5","nodeType":"VariableDeclaration","scope":550,"src":"7097:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":523,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":526,"mutability":"mutable","name":"data","nameLocation":"7134:4:5","nodeType":"VariableDeclaration","scope":550,"src":"7121:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":525,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":528,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:5","nodeType":"VariableDeclaration","scope":550,"src":"7148:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":527,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:5"},"returnParameters":{"id":532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":531,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":550,"src":"7199:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":530,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:5"},"scope":634,"src":"7058:325:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":588,"nodeType":"Block","src":"7865:434:5","statements":[{"condition":{"id":564,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":555,"src":"7879:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":586,"nodeType":"Block","src":"8235:58:5","statements":[{"expression":{"arguments":[{"id":582,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"8257:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":583,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"8269:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":581,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"8249:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8249:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":585,"nodeType":"ExpressionStatement","src":"8249:33:5"}]},"id":587,"nodeType":"IfStatement","src":"7875:418:5","trueBody":{"id":580,"nodeType":"Block","src":"7888:341:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":565,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"7906:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7906:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":577,"nodeType":"IfStatement","src":"7902:286:5","trueBody":{"id":576,"nodeType":"Block","src":"7930:258:5","statements":[{"expression":{"arguments":[{"arguments":[{"id":571,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"8132:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":570,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"8121:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8121:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":569,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8113:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8113:60:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":575,"nodeType":"ExpressionStatement","src":"8113:60:5"}]}},{"expression":{"id":578,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"8208:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":563,"id":579,"nodeType":"Return","src":"8201:17:5"}]}}]},"documentation":{"id":551,"nodeType":"StructuredDocumentation","src":"7389:277:5","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":589,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:5","nodeType":"FunctionDefinition","parameters":{"id":560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"target","nameLocation":"7724:6:5","nodeType":"VariableDeclaration","scope":589,"src":"7716:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":552,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"success","nameLocation":"7745:7:5","nodeType":"VariableDeclaration","scope":589,"src":"7740:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":554,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":557,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:5","nodeType":"VariableDeclaration","scope":589,"src":"7762:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":556,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":559,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:5","nodeType":"VariableDeclaration","scope":589,"src":"7795:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":558,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:5"},"returnParameters":{"id":563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":589,"src":"7851:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":561,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:5"},"scope":634,"src":"7671:628:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":612,"nodeType":"Block","src":"8680:135:5","statements":[{"condition":{"id":601,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"8694:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":610,"nodeType":"Block","src":"8751:58:5","statements":[{"expression":{"arguments":[{"id":606,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"8773:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":607,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":596,"src":"8785:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":605,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"8765:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8765:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":609,"nodeType":"ExpressionStatement","src":"8765:33:5"}]},"id":611,"nodeType":"IfStatement","src":"8690:119:5","trueBody":{"id":604,"nodeType":"Block","src":"8703:42:5","statements":[{"expression":{"id":602,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"8724:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":600,"id":603,"nodeType":"Return","src":"8717:17:5"}]}}]},"documentation":{"id":590,"nodeType":"StructuredDocumentation","src":"8305:210:5","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":613,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:5","nodeType":"FunctionDefinition","parameters":{"id":597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":592,"mutability":"mutable","name":"success","nameLocation":"8560:7:5","nodeType":"VariableDeclaration","scope":613,"src":"8555:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":591,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":594,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:5","nodeType":"VariableDeclaration","scope":613,"src":"8577:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":593,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":596,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:5","nodeType":"VariableDeclaration","scope":613,"src":"8610:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":595,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:5"},"returnParameters":{"id":600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":613,"src":"8666:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":598,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:5"},"scope":634,"src":"8520:295:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":632,"nodeType":"Block","src":"8904:457:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":620,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"8980:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8980:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":630,"nodeType":"Block","src":"9310:45:5","statements":[{"expression":{"arguments":[{"id":627,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9331:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":626,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9324:6:5","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9324:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":629,"nodeType":"ExpressionStatement","src":"9324:20:5"}]},"id":631,"nodeType":"IfStatement","src":"8976:379:5","trueBody":{"id":625,"nodeType":"Block","src":"9003:301:5","statements":[{"AST":{"nodeType":"YulBlock","src":"9161:133:5","statements":[{"nodeType":"YulVariableDeclaration","src":"9179:40:5","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9208:10:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9202:5:5"},"nodeType":"YulFunctionCall","src":"9202:17:5"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9183:15:5","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9247:2:5","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9251:10:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9243:3:5"},"nodeType":"YulFunctionCall","src":"9243:19:5"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9264:15:5"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9236:6:5"},"nodeType":"YulFunctionCall","src":"9236:44:5"},"nodeType":"YulExpressionStatement","src":"9236:44:5"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":615,"isOffset":false,"isSlot":false,"src":"9208:10:5","valueSize":1},{"declaration":615,"isOffset":false,"isSlot":false,"src":"9251:10:5","valueSize":1}],"id":624,"nodeType":"InlineAssembly","src":"9152:142:5"}]}}]},"id":633,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:5","nodeType":"FunctionDefinition","parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":615,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:5","nodeType":"VariableDeclaration","scope":633,"src":"8838:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":614,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":617,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:5","nodeType":"VariableDeclaration","scope":633,"src":"8863:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":616,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:5"},"returnParameters":{"id":619,"nodeType":"ParameterList","parameters":[],"src":"8904:0:5"},"scope":634,"src":"8821:540:5","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":635,"src":"194:9169:5","usedErrors":[]}],"src":"101:9263:5"},"id":5},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[656]},"id":657,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":636,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:6"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":637,"nodeType":"StructuredDocumentation","src":"111:496:6","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":656,"linearizedBaseContracts":[656],"name":"Context","nameLocation":"626:7:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":645,"nodeType":"Block","src":"702:34:6","statements":[{"expression":{"expression":{"id":642,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"719:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":641,"id":644,"nodeType":"Return","src":"712:17:6"}]},"id":646,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:6","nodeType":"FunctionDefinition","parameters":{"id":638,"nodeType":"ParameterList","parameters":[],"src":"659:2:6"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":646,"src":"693:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":639,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:6"},"scope":656,"src":"640:96:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":654,"nodeType":"Block","src":"809:32:6","statements":[{"expression":{"expression":{"id":651,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"826:8:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":650,"id":653,"nodeType":"Return","src":"819:15:6"}]},"id":655,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:6","nodeType":"FunctionDefinition","parameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"759:2:6"},"returnParameters":{"id":650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":655,"src":"793:14:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":648,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:6"},"scope":656,"src":"742:99:6","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":657,"src":"608:235:6","usedErrors":[]}],"src":"86:758:6"},"id":6},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[1787],"SignedMath":[1892],"Strings":[885]},"id":886,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":658,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:7"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":659,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":886,"sourceUnit":1788,"src":"126:25:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":660,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":886,"sourceUnit":1893,"src":"152:31:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":661,"nodeType":"StructuredDocumentation","src":"185:34:7","text":" @dev String operations."},"fullyImplemented":true,"id":885,"linearizedBaseContracts":[885],"name":"Strings","nameLocation":"228:7:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":664,"mutability":"constant","name":"_SYMBOLS","nameLocation":"267:8:7","nodeType":"VariableDeclaration","scope":885,"src":"242:54:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":662,"name":"bytes16","nodeType":"ElementaryTypeName","src":"242:7:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"278:18:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":667,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"325:15:7","nodeType":"VariableDeclaration","scope":885,"src":"302:43:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":665,"name":"uint8","nodeType":"ElementaryTypeName","src":"302:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"343:2:7","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":714,"nodeType":"Block","src":"518:625:7","statements":[{"id":713,"nodeType":"UncheckedBlock","src":"528:609:7","statements":[{"assignments":[676],"declarations":[{"constant":false,"id":676,"mutability":"mutable","name":"length","nameLocation":"560:6:7","nodeType":"VariableDeclaration","scope":713,"src":"552:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"552:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":683,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":679,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"580:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":677,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"569:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1787_$","typeString":"type(library Math)"}},"id":678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1624,"src":"569:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"569:17:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"589:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"569:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"552:38:7"},{"assignments":[685],"declarations":[{"constant":false,"id":685,"mutability":"mutable","name":"buffer","nameLocation":"618:6:7","nodeType":"VariableDeclaration","scope":713,"src":"604:20:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":684,"name":"string","nodeType":"ElementaryTypeName","src":"604:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":690,"initialValue":{"arguments":[{"id":688,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"638:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"627:10:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":686,"name":"string","nodeType":"ElementaryTypeName","src":"631:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"627:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"604:41:7"},{"assignments":[692],"declarations":[{"constant":false,"id":692,"mutability":"mutable","name":"ptr","nameLocation":"667:3:7","nodeType":"VariableDeclaration","scope":713,"src":"659:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":691,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":693,"nodeType":"VariableDeclarationStatement","src":"659:11:7"},{"AST":{"nodeType":"YulBlock","src":"740:67:7","statements":[{"nodeType":"YulAssignment","src":"758:35:7","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"769:6:7"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"781:2:7","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"785:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:7"},"nodeType":"YulFunctionCall","src":"777:15:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:7"},"nodeType":"YulFunctionCall","src":"765:28:7"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"758:3:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":685,"isOffset":false,"isSlot":false,"src":"769:6:7","valueSize":1},{"declaration":676,"isOffset":false,"isSlot":false,"src":"785:6:7","valueSize":1},{"declaration":692,"isOffset":false,"isSlot":false,"src":"758:3:7","valueSize":1}],"id":694,"nodeType":"InlineAssembly","src":"731:76:7"},{"body":{"id":709,"nodeType":"Block","src":"833:267:7","statements":[{"expression":{"id":697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"851:5:7","subExpression":{"id":696,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"851:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":698,"nodeType":"ExpressionStatement","src":"851:5:7"},{"AST":{"nodeType":"YulBlock","src":"934:84:7","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"964:3:7"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"978:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"985:2:7","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"974:3:7"},"nodeType":"YulFunctionCall","src":"974:14:7"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"990:8:7"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"969:4:7"},"nodeType":"YulFunctionCall","src":"969:30:7"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"956:7:7"},"nodeType":"YulFunctionCall","src":"956:44:7"},"nodeType":"YulExpressionStatement","src":"956:44:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":664,"isOffset":false,"isSlot":false,"src":"990:8:7","valueSize":1},{"declaration":692,"isOffset":false,"isSlot":false,"src":"964:3:7","valueSize":1},{"declaration":670,"isOffset":false,"isSlot":false,"src":"978:5:7","valueSize":1}],"id":699,"nodeType":"InlineAssembly","src":"925:93:7"},{"expression":{"id":702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":700,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1035:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:2:7","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1035:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":703,"nodeType":"ExpressionStatement","src":"1035:11:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":704,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1068:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1077:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1068:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":708,"nodeType":"IfStatement","src":"1064:21:7","trueBody":{"id":707,"nodeType":"Break","src":"1080:5:7"}}]},"condition":{"hexValue":"74727565","id":695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"827:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":710,"nodeType":"WhileStatement","src":"820:280:7"},{"expression":{"id":711,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"1120:6:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":674,"id":712,"nodeType":"Return","src":"1113:13:7"}]}]},"documentation":{"id":668,"nodeType":"StructuredDocumentation","src":"352:90:7","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":715,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"456:8:7","nodeType":"FunctionDefinition","parameters":{"id":671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":670,"mutability":"mutable","name":"value","nameLocation":"473:5:7","nodeType":"VariableDeclaration","scope":715,"src":"465:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"464:15:7"},"returnParameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":715,"src":"503:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":672,"name":"string","nodeType":"ElementaryTypeName","src":"503:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"502:15:7"},"scope":885,"src":"447:696:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":742,"nodeType":"Block","src":"1313:103:7","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":727,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"1354:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1362:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1354:9:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1372:2:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1354:20:7","trueExpression":{"hexValue":"2d","id":730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1366:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":736,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"1400:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":734,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1892,"src":"1385:10:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$1892_$","typeString":"type(library SignedMath)"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":1891,"src":"1385:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1385:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":733,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[715,743],"referencedDeclaration":715,"src":"1376:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1376:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":725,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1337:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1337:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1337:71:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1330:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":723,"name":"string","nodeType":"ElementaryTypeName","src":"1330:6:7","typeDescriptions":{}}},"id":740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1330:79:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":722,"id":741,"nodeType":"Return","src":"1323:86:7"}]},"documentation":{"id":716,"nodeType":"StructuredDocumentation","src":"1149:89:7","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":743,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1252:8:7","nodeType":"FunctionDefinition","parameters":{"id":719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"value","nameLocation":"1268:5:7","nodeType":"VariableDeclaration","scope":743,"src":"1261:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":717,"name":"int256","nodeType":"ElementaryTypeName","src":"1261:6:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1260:14:7"},"returnParameters":{"id":722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":743,"src":"1298:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":720,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:15:7"},"scope":885,"src":"1243:173:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":762,"nodeType":"Block","src":"1595:100:7","statements":[{"id":761,"nodeType":"UncheckedBlock","src":"1605:84:7","statements":[{"expression":{"arguments":[{"id":752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"1648:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":755,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"1667:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":753,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"1655:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1787_$","typeString":"type(library Math)"}},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1747,"src":"1655:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1655:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1676:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1655:22:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":751,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[763,839,859],"referencedDeclaration":839,"src":"1636:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1636:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":750,"id":760,"nodeType":"Return","src":"1629:49:7"}]}]},"documentation":{"id":744,"nodeType":"StructuredDocumentation","src":"1422:94:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":763,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1530:11:7","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"value","nameLocation":"1550:5:7","nodeType":"VariableDeclaration","scope":763,"src":"1542:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":745,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1541:15:7"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":763,"src":"1580:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":748,"name":"string","nodeType":"ElementaryTypeName","src":"1580:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1579:15:7"},"scope":885,"src":"1521:174:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":838,"nodeType":"Block","src":"1908:347:7","statements":[{"assignments":[774],"declarations":[{"constant":false,"id":774,"mutability":"mutable","name":"buffer","nameLocation":"1931:6:7","nodeType":"VariableDeclaration","scope":838,"src":"1918:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":773,"name":"bytes","nodeType":"ElementaryTypeName","src":"1918:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":783,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1950:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":778,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"1954:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1950:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1950:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1940:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":775,"name":"bytes","nodeType":"ElementaryTypeName","src":"1944:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1940:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1918:47:7"},{"expression":{"id":788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":784,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"1975:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":786,"indexExpression":{"hexValue":"30","id":785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1982:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1975:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1987:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1975:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":789,"nodeType":"ExpressionStatement","src":"1975:15:7"},{"expression":{"id":794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":790,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"2000:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":792,"indexExpression":{"hexValue":"31","id":791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2007:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2000:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2012:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2000:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":795,"nodeType":"ExpressionStatement","src":"2000:15:7"},{"body":{"id":824,"nodeType":"Block","src":"2070:83:7","statements":[{"expression":{"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":810,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"2084:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":812,"indexExpression":{"id":811,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"2091:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2084:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":813,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":664,"src":"2096:8:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":817,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":814,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"2105:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:3:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2105:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2096:21:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2084:33:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":819,"nodeType":"ExpressionStatement","src":"2084:33:7"},{"expression":{"id":822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":820,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"2131:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2141:1:7","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2131:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":823,"nodeType":"ExpressionStatement","src":"2131:11:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":804,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"2058:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2062:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2058:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":825,"initializationExpression":{"assignments":[797],"declarations":[{"constant":false,"id":797,"mutability":"mutable","name":"i","nameLocation":"2038:1:7","nodeType":"VariableDeclaration","scope":825,"src":"2030:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":796,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":803,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2042:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":799,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"2046:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2042:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2055:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2042:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2030:26:7"},"loopExpression":{"expression":{"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2065:3:7","subExpression":{"id":807,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"2067:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":809,"nodeType":"ExpressionStatement","src":"2065:3:7"},"nodeType":"ForStatement","src":"2025:128:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":827,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"2170:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2170:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2182:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":826,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2162:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":832,"nodeType":"ExpressionStatement","src":"2162:55:7"},{"expression":{"arguments":[{"id":835,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"2241:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2234:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":833,"name":"string","nodeType":"ElementaryTypeName","src":"2234:6:7","typeDescriptions":{}}},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2234:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":772,"id":837,"nodeType":"Return","src":"2227:21:7"}]},"documentation":{"id":764,"nodeType":"StructuredDocumentation","src":"1701:112:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":839,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1827:11:7","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"mutability":"mutable","name":"value","nameLocation":"1847:5:7","nodeType":"VariableDeclaration","scope":839,"src":"1839:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":765,"name":"uint256","nodeType":"ElementaryTypeName","src":"1839:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":768,"mutability":"mutable","name":"length","nameLocation":"1862:6:7","nodeType":"VariableDeclaration","scope":839,"src":"1854:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":767,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1838:31:7"},"returnParameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":839,"src":"1893:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":770,"name":"string","nodeType":"ElementaryTypeName","src":"1893:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1892:15:7"},"scope":885,"src":"1818:437:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":858,"nodeType":"Block","src":"2480:76:7","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":852,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":842,"src":"2525:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2517:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":850,"name":"uint160","nodeType":"ElementaryTypeName","src":"2517:7:7","typeDescriptions":{}}},"id":853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2517:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":848,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:7","typeDescriptions":{}}},"id":854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2509:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":855,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":667,"src":"2533:15:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":847,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[763,839,859],"referencedDeclaration":839,"src":"2497:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2497:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":846,"id":857,"nodeType":"Return","src":"2490:59:7"}]},"documentation":{"id":840,"nodeType":"StructuredDocumentation","src":"2261:141:7","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":859,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2416:11:7","nodeType":"FunctionDefinition","parameters":{"id":843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":842,"mutability":"mutable","name":"addr","nameLocation":"2436:4:7","nodeType":"VariableDeclaration","scope":859,"src":"2428:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":841,"name":"address","nodeType":"ElementaryTypeName","src":"2428:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2427:14:7"},"returnParameters":{"id":846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":859,"src":"2465:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":844,"name":"string","nodeType":"ElementaryTypeName","src":"2465:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2464:15:7"},"scope":885,"src":"2407:149:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":883,"nodeType":"Block","src":"2711:66:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":872,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":862,"src":"2744:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2738:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":870,"name":"bytes","nodeType":"ElementaryTypeName","src":"2738:5:7","typeDescriptions":{}}},"id":873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2738:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":869,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2728:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2728:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":878,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":864,"src":"2767:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2761:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":876,"name":"bytes","nodeType":"ElementaryTypeName","src":"2761:5:7","typeDescriptions":{}}},"id":879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2761:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":875,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2751:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2751:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2728:42:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":868,"id":882,"nodeType":"Return","src":"2721:49:7"}]},"documentation":{"id":860,"nodeType":"StructuredDocumentation","src":"2562:66:7","text":" @dev Returns true if the two strings are equal."},"id":884,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2642:5:7","nodeType":"FunctionDefinition","parameters":{"id":865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":862,"mutability":"mutable","name":"a","nameLocation":"2662:1:7","nodeType":"VariableDeclaration","scope":884,"src":"2648:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":861,"name":"string","nodeType":"ElementaryTypeName","src":"2648:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":864,"mutability":"mutable","name":"b","nameLocation":"2679:1:7","nodeType":"VariableDeclaration","scope":884,"src":"2665:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":863,"name":"string","nodeType":"ElementaryTypeName","src":"2665:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2647:34:7"},"returnParameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":884,"src":"2705:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":866,"name":"bool","nodeType":"ElementaryTypeName","src":"2705:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2704:6:7"},"scope":885,"src":"2633:144:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":886,"src":"220:2559:7","usedErrors":[]}],"src":"101:2679:7"},"id":7},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[909],"IERC165":[921]},"id":910,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":887,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:8"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":888,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":910,"sourceUnit":922,"src":"124:23:8","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":890,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":921,"src":"754:7:8"},"id":891,"nodeType":"InheritanceSpecifier","src":"754:7:8"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":889,"nodeType":"StructuredDocumentation","src":"149:576:8","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":909,"linearizedBaseContracts":[909,921],"name":"ERC165","nameLocation":"744:6:8","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[920],"body":{"id":907,"nodeType":"Block","src":"920:64:8","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":900,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":894,"src":"937:11:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":902,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":921,"src":"957:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$921_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$921_$","typeString":"type(contract IERC165)"}],"id":901,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"952:4:8","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"952:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$921","typeString":"type(contract IERC165)"}},"id":904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":899,"id":906,"nodeType":"Return","src":"930:47:8"}]},"documentation":{"id":892,"nodeType":"StructuredDocumentation","src":"768:56:8","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":908,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:8","nodeType":"FunctionDefinition","overrides":{"id":896,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:8"},"parameters":{"id":895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":894,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:8","nodeType":"VariableDeclaration","scope":908,"src":"856:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":893,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:8"},"returnParameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":908,"src":"914:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":897,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:8"},"scope":909,"src":"829:155:8","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":910,"src":"726:260:8","usedErrors":[]}],"src":"99:888:8"},"id":8},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[921]},"id":922,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":911,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":912,"nodeType":"StructuredDocumentation","src":"125:279:9","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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":921,"linearizedBaseContracts":[921],"name":"IERC165","nameLocation":"415:7:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":913,"nodeType":"StructuredDocumentation","src":"429:340:9","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[EIP 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":920,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:9","nodeType":"FunctionDefinition","parameters":{"id":916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":915,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:9","nodeType":"VariableDeclaration","scope":920,"src":"801:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":914,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:9"},"returnParameters":{"id":919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":920,"src":"844:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":917,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:9"},"scope":921,"src":"774:76:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":922,"src":"405:447:9","usedErrors":[]}],"src":"100:753:9"},"id":9},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[1787]},"id":1788,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":923,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":924,"nodeType":"StructuredDocumentation","src":"128:73:10","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":1787,"linearizedBaseContracts":[1787],"name":"Math","nameLocation":"210:4:10","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":928,"members":[{"id":925,"name":"Down","nameLocation":"245:4:10","nodeType":"EnumValue","src":"245:4:10"},{"id":926,"name":"Up","nameLocation":"287:2:10","nodeType":"EnumValue","src":"287:2:10"},{"id":927,"name":"Zero","nameLocation":"318:4:10","nodeType":"EnumValue","src":"318:4:10"}],"name":"Rounding","nameLocation":"226:8:10","nodeType":"EnumDefinition","src":"221:122:10"},{"body":{"id":945,"nodeType":"Block","src":"480:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":938,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"497:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":939,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"501:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":942,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"509:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:13:10","trueExpression":{"id":941,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"505:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":937,"id":944,"nodeType":"Return","src":"490:20:10"}]},"documentation":{"id":929,"nodeType":"StructuredDocumentation","src":"349:59:10","text":" @dev Returns the largest of two numbers."},"id":946,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:10","nodeType":"FunctionDefinition","parameters":{"id":934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":931,"mutability":"mutable","name":"a","nameLocation":"434:1:10","nodeType":"VariableDeclaration","scope":946,"src":"426:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":930,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":933,"mutability":"mutable","name":"b","nameLocation":"445:1:10","nodeType":"VariableDeclaration","scope":946,"src":"437:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":932,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:10"},"returnParameters":{"id":937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":946,"src":"471:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":935,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:10"},"scope":1787,"src":"413:104:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":963,"nodeType":"Block","src":"655:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":956,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":949,"src":"672:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":957,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"676:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"672:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":960,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"684:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"672:13:10","trueExpression":{"id":959,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":949,"src":"680:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":955,"id":962,"nodeType":"Return","src":"665:20:10"}]},"documentation":{"id":947,"nodeType":"StructuredDocumentation","src":"523:60:10","text":" @dev Returns the smallest of two numbers."},"id":964,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"597:3:10","nodeType":"FunctionDefinition","parameters":{"id":952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":949,"mutability":"mutable","name":"a","nameLocation":"609:1:10","nodeType":"VariableDeclaration","scope":964,"src":"601:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":948,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":951,"mutability":"mutable","name":"b","nameLocation":"620:1:10","nodeType":"VariableDeclaration","scope":964,"src":"612:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":950,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:10"},"returnParameters":{"id":955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":964,"src":"646:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":953,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:10"},"scope":1787,"src":"588:104:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":986,"nodeType":"Block","src":"876:82:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":974,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"931:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":975,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"935:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":977,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":978,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"941:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":979,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"945:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":981,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"940:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"950:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"940:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"930:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":973,"id":985,"nodeType":"Return","src":"923:28:10"}]},"documentation":{"id":965,"nodeType":"StructuredDocumentation","src":"698:102:10","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":987,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"814:7:10","nodeType":"FunctionDefinition","parameters":{"id":970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":967,"mutability":"mutable","name":"a","nameLocation":"830:1:10","nodeType":"VariableDeclaration","scope":987,"src":"822:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":966,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":969,"mutability":"mutable","name":"b","nameLocation":"841:1:10","nodeType":"VariableDeclaration","scope":987,"src":"833:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":968,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:22:10"},"returnParameters":{"id":973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":972,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":987,"src":"867:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":971,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"866:9:10"},"scope":1787,"src":"805:153:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1011,"nodeType":"Block","src":"1228:123:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":997,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"1316:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1316:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1001,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"1330:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1004,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1329:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1005,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":992,"src":"1339:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1329:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1316:28:10","trueExpression":{"hexValue":"30","id":1000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":996,"id":1010,"nodeType":"Return","src":"1309:35:10"}]},"documentation":{"id":988,"nodeType":"StructuredDocumentation","src":"964:188:10","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":1012,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1166:7:10","nodeType":"FunctionDefinition","parameters":{"id":993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"a","nameLocation":"1182:1:10","nodeType":"VariableDeclaration","scope":1012,"src":"1174:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":992,"mutability":"mutable","name":"b","nameLocation":"1193:1:10","nodeType":"VariableDeclaration","scope":1012,"src":"1185:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":991,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:22:10"},"returnParameters":{"id":996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":995,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1012,"src":"1219:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":994,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1218:9:10"},"scope":1787,"src":"1157:194:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1134,"nodeType":"Block","src":"1765:4115:10","statements":[{"id":1133,"nodeType":"UncheckedBlock","src":"1775:4099:10","statements":[{"assignments":[1025],"declarations":[{"constant":false,"id":1025,"mutability":"mutable","name":"prod0","nameLocation":"2104:5:10","nodeType":"VariableDeclaration","scope":1133,"src":"2096:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1024,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1026,"nodeType":"VariableDeclarationStatement","src":"2096:13:10"},{"assignments":[1028],"declarations":[{"constant":false,"id":1028,"mutability":"mutable","name":"prod1","nameLocation":"2176:5:10","nodeType":"VariableDeclaration","scope":1133,"src":"2168:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1027,"name":"uint256","nodeType":"ElementaryTypeName","src":"2168:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1029,"nodeType":"VariableDeclarationStatement","src":"2168:13:10"},{"AST":{"nodeType":"YulBlock","src":"2248:157:10","statements":[{"nodeType":"YulVariableDeclaration","src":"2266:30:10","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2283:1:10"},{"name":"y","nodeType":"YulIdentifier","src":"2286:1:10"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2293:1:10","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2289:3:10"},"nodeType":"YulFunctionCall","src":"2289:6:10"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2276:6:10"},"nodeType":"YulFunctionCall","src":"2276:20:10"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2270:2:10","type":""}]},{"nodeType":"YulAssignment","src":"2313:18:10","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2326:1:10"},{"name":"y","nodeType":"YulIdentifier","src":"2329:1:10"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2322:3:10"},"nodeType":"YulFunctionCall","src":"2322:9:10"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2313:5:10"}]},{"nodeType":"YulAssignment","src":"2348:43:10","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2365:2:10"},{"name":"prod0","nodeType":"YulIdentifier","src":"2369:5:10"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2361:3:10"},"nodeType":"YulFunctionCall","src":"2361:14:10"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2380:2:10"},{"name":"prod0","nodeType":"YulIdentifier","src":"2384:5:10"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2377:2:10"},"nodeType":"YulFunctionCall","src":"2377:13:10"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2357:3:10"},"nodeType":"YulFunctionCall","src":"2357:34:10"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2348:5:10"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1025,"isOffset":false,"isSlot":false,"src":"2313:5:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"2369:5:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"2384:5:10","valueSize":1},{"declaration":1028,"isOffset":false,"isSlot":false,"src":"2348:5:10","valueSize":1},{"declaration":1015,"isOffset":false,"isSlot":false,"src":"2283:1:10","valueSize":1},{"declaration":1015,"isOffset":false,"isSlot":false,"src":"2326:1:10","valueSize":1},{"declaration":1017,"isOffset":false,"isSlot":false,"src":"2286:1:10","valueSize":1},{"declaration":1017,"isOffset":false,"isSlot":false,"src":"2329:1:10","valueSize":1}],"id":1030,"nodeType":"InlineAssembly","src":"2239:166:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1031,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"2486:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2495:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2486:10:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1039,"nodeType":"IfStatement","src":"2482:368:10","trueBody":{"id":1038,"nodeType":"Block","src":"2498:352:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1034,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"2816:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1035,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"2824:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2816:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1023,"id":1037,"nodeType":"Return","src":"2809:26:10"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1041,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"2960:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1042,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"2974:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2960:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":1044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2981:23:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":1040,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2952:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2952:53:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1046,"nodeType":"ExpressionStatement","src":"2952:53:10"},{"assignments":[1048],"declarations":[{"constant":false,"id":1048,"mutability":"mutable","name":"remainder","nameLocation":"3269:9:10","nodeType":"VariableDeclaration","scope":1133,"src":"3261:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1047,"name":"uint256","nodeType":"ElementaryTypeName","src":"3261:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1049,"nodeType":"VariableDeclarationStatement","src":"3261:17:10"},{"AST":{"nodeType":"YulBlock","src":"3301:291:10","statements":[{"nodeType":"YulAssignment","src":"3370:38:10","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3390:1:10"},{"name":"y","nodeType":"YulIdentifier","src":"3393:1:10"},{"name":"denominator","nodeType":"YulIdentifier","src":"3396:11:10"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3383:6:10"},"nodeType":"YulFunctionCall","src":"3383:25:10"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3370:9:10"}]},{"nodeType":"YulAssignment","src":"3490:41:10","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3503:5:10"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3513:9:10"},{"name":"prod0","nodeType":"YulIdentifier","src":"3524:5:10"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3510:2:10"},"nodeType":"YulFunctionCall","src":"3510:20:10"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3499:3:10"},"nodeType":"YulFunctionCall","src":"3499:32:10"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3490:5:10"}]},{"nodeType":"YulAssignment","src":"3548:30:10","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3561:5:10"},{"name":"remainder","nodeType":"YulIdentifier","src":"3568:9:10"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3557:3:10"},"nodeType":"YulFunctionCall","src":"3557:21:10"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3548:5:10"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1019,"isOffset":false,"isSlot":false,"src":"3396:11:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"3524:5:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"3548:5:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"3561:5:10","valueSize":1},{"declaration":1028,"isOffset":false,"isSlot":false,"src":"3490:5:10","valueSize":1},{"declaration":1028,"isOffset":false,"isSlot":false,"src":"3503:5:10","valueSize":1},{"declaration":1048,"isOffset":false,"isSlot":false,"src":"3370:9:10","valueSize":1},{"declaration":1048,"isOffset":false,"isSlot":false,"src":"3513:9:10","valueSize":1},{"declaration":1048,"isOffset":false,"isSlot":false,"src":"3568:9:10","valueSize":1},{"declaration":1015,"isOffset":false,"isSlot":false,"src":"3390:1:10","valueSize":1},{"declaration":1017,"isOffset":false,"isSlot":false,"src":"3393:1:10","valueSize":1}],"id":1050,"nodeType":"InlineAssembly","src":"3292:300:10"},{"assignments":[1052],"declarations":[{"constant":false,"id":1052,"mutability":"mutable","name":"twos","nameLocation":"3907:4:10","nodeType":"VariableDeclaration","scope":1133,"src":"3899:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1051,"name":"uint256","nodeType":"ElementaryTypeName","src":"3899:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1060,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1053,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"3914:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3929:12:10","subExpression":{"id":1054,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"3930:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3944:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3929:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3928:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3914:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3899:47:10"},{"AST":{"nodeType":"YulBlock","src":"3969:362:10","statements":[{"nodeType":"YulAssignment","src":"4034:37:10","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4053:11:10"},{"name":"twos","nodeType":"YulIdentifier","src":"4066:4:10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4049:3:10"},"nodeType":"YulFunctionCall","src":"4049:22:10"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4034:11:10"}]},{"nodeType":"YulAssignment","src":"4138:25:10","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4151:5:10"},{"name":"twos","nodeType":"YulIdentifier","src":"4158:4:10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4147:3:10"},"nodeType":"YulFunctionCall","src":"4147:16:10"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4138:5:10"}]},{"nodeType":"YulAssignment","src":"4278:39:10","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4298:1:10","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4301:4:10"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4294:3:10"},"nodeType":"YulFunctionCall","src":"4294:12:10"},{"name":"twos","nodeType":"YulIdentifier","src":"4308:4:10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4290:3:10"},"nodeType":"YulFunctionCall","src":"4290:23:10"},{"kind":"number","nodeType":"YulLiteral","src":"4315:1:10","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4286:3:10"},"nodeType":"YulFunctionCall","src":"4286:31:10"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4278:4:10"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1019,"isOffset":false,"isSlot":false,"src":"4034:11:10","valueSize":1},{"declaration":1019,"isOffset":false,"isSlot":false,"src":"4053:11:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"4138:5:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"4151:5:10","valueSize":1},{"declaration":1052,"isOffset":false,"isSlot":false,"src":"4066:4:10","valueSize":1},{"declaration":1052,"isOffset":false,"isSlot":false,"src":"4158:4:10","valueSize":1},{"declaration":1052,"isOffset":false,"isSlot":false,"src":"4278:4:10","valueSize":1},{"declaration":1052,"isOffset":false,"isSlot":false,"src":"4301:4:10","valueSize":1},{"declaration":1052,"isOffset":false,"isSlot":false,"src":"4308:4:10","valueSize":1}],"id":1061,"nodeType":"InlineAssembly","src":"3960:371:10"},{"expression":{"id":1066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1062,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"4397:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1063,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"4406:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1064,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"4414:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4406:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4397:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1067,"nodeType":"ExpressionStatement","src":"4397:21:10"},{"assignments":[1069],"declarations":[{"constant":false,"id":1069,"mutability":"mutable","name":"inverse","nameLocation":"4744:7:10","nodeType":"VariableDeclaration","scope":1133,"src":"4736:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1068,"name":"uint256","nodeType":"ElementaryTypeName","src":"4736:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1076,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4755:1:10","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1071,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"4759:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4755:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1073,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4754:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4774:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4754:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4736:39:10"},{"expression":{"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1077,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"4992:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5003:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1079,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5007:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1080,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5021:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5007:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4992:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1084,"nodeType":"ExpressionStatement","src":"4992:36:10"},{"expression":{"id":1091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1085,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5061:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5072:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1087,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5076:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1088,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5090:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5076:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5061:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1092,"nodeType":"ExpressionStatement","src":"5061:36:10"},{"expression":{"id":1099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1093,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5131:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5142:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1095,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5146:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1096,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5160:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5146:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5131:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1100,"nodeType":"ExpressionStatement","src":"5131:36:10"},{"expression":{"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1101,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5201:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5212:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1103,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5216:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1104,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5230:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5216:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5201:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1108,"nodeType":"ExpressionStatement","src":"5201:36:10"},{"expression":{"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1109,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5271:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1111,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5286:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1112,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5300:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5271:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1116,"nodeType":"ExpressionStatement","src":"5271:36:10"},{"expression":{"id":1123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1117,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5342:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5353:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1119,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5357:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1120,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5371:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5357:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5342:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1124,"nodeType":"ExpressionStatement","src":"5342:36:10"},{"expression":{"id":1129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1125,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"5812:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1126,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"5821:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1127,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5829:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5821:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5812:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1130,"nodeType":"ExpressionStatement","src":"5812:24:10"},{"expression":{"id":1131,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"5857:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1023,"id":1132,"nodeType":"Return","src":"5850:13:10"}]}]},"documentation":{"id":1013,"nodeType":"StructuredDocumentation","src":"1357:305:10","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":1135,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1676:6:10","nodeType":"FunctionDefinition","parameters":{"id":1020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1015,"mutability":"mutable","name":"x","nameLocation":"1691:1:10","nodeType":"VariableDeclaration","scope":1135,"src":"1683:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1014,"name":"uint256","nodeType":"ElementaryTypeName","src":"1683:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1017,"mutability":"mutable","name":"y","nameLocation":"1702:1:10","nodeType":"VariableDeclaration","scope":1135,"src":"1694:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1016,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1019,"mutability":"mutable","name":"denominator","nameLocation":"1713:11:10","nodeType":"VariableDeclaration","scope":1135,"src":"1705:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1018,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1682:43:10"},"returnParameters":{"id":1023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1022,"mutability":"mutable","name":"result","nameLocation":"1757:6:10","nodeType":"VariableDeclaration","scope":1135,"src":"1749:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1021,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1748:16:10"},"scope":1787,"src":"1667:4213:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1178,"nodeType":"Block","src":"6122:189:10","statements":[{"assignments":[1151],"declarations":[{"constant":false,"id":1151,"mutability":"mutable","name":"result","nameLocation":"6140:6:10","nodeType":"VariableDeclaration","scope":1178,"src":"6132:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"6132:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1157,"initialValue":{"arguments":[{"id":1153,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1138,"src":"6156:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1154,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1140,"src":"6159:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1155,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"6162:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1152,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1135,1179],"referencedDeclaration":1135,"src":"6149:6:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6149:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6132:42:10"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"id":1161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1158,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"6188:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1159,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"6200:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$928_$","typeString":"type(enum Math.Rounding)"}},"id":1160,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":926,"src":"6200:11:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"src":"6188:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1163,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1138,"src":"6222:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1164,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1140,"src":"6225:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1165,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"6228:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1162,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"6215:6:10","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6215:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6243:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6215:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6188:56:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1175,"nodeType":"IfStatement","src":"6184:98:10","trueBody":{"id":1174,"nodeType":"Block","src":"6246:36:10","statements":[{"expression":{"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1170,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"6260:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6270:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6260:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1173,"nodeType":"ExpressionStatement","src":"6260:11:10"}]}},{"expression":{"id":1176,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"6298:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1149,"id":1177,"nodeType":"Return","src":"6291:13:10"}]},"documentation":{"id":1136,"nodeType":"StructuredDocumentation","src":"5886:121:10","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":1179,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6021:6:10","nodeType":"FunctionDefinition","parameters":{"id":1146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1138,"mutability":"mutable","name":"x","nameLocation":"6036:1:10","nodeType":"VariableDeclaration","scope":1179,"src":"6028:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1137,"name":"uint256","nodeType":"ElementaryTypeName","src":"6028:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1140,"mutability":"mutable","name":"y","nameLocation":"6047:1:10","nodeType":"VariableDeclaration","scope":1179,"src":"6039:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1139,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1142,"mutability":"mutable","name":"denominator","nameLocation":"6058:11:10","nodeType":"VariableDeclaration","scope":1179,"src":"6050:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1141,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1145,"mutability":"mutable","name":"rounding","nameLocation":"6080:8:10","nodeType":"VariableDeclaration","scope":1179,"src":"6071:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"typeName":{"id":1144,"nodeType":"UserDefinedTypeName","pathNode":{"id":1143,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":928,"src":"6071:8:10"},"referencedDeclaration":928,"src":"6071:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"6027:62:10"},"returnParameters":{"id":1149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1148,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1179,"src":"6113:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1147,"name":"uint256","nodeType":"ElementaryTypeName","src":"6113:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6112:9:10"},"scope":1787,"src":"6012:299:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1290,"nodeType":"Block","src":"6587:1585:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1187,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"6601:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6606:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6601:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1193,"nodeType":"IfStatement","src":"6597:45:10","trueBody":{"id":1192,"nodeType":"Block","src":"6609:33:10","statements":[{"expression":{"hexValue":"30","id":1190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6630:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1186,"id":1191,"nodeType":"Return","src":"6623:8:10"}]}},{"assignments":[1195],"declarations":[{"constant":false,"id":1195,"mutability":"mutable","name":"result","nameLocation":"7329:6:10","nodeType":"VariableDeclaration","scope":1290,"src":"7321:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1194,"name":"uint256","nodeType":"ElementaryTypeName","src":"7321:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1204,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7338:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1198,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7349:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1197,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[1459,1495],"referencedDeclaration":1459,"src":"7344:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7344:7:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7355:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7344:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1202,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7343:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7338:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7321:36:10"},{"id":1289,"nodeType":"UncheckedBlock","src":"7758:408:10","statements":[{"expression":{"id":1214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1205,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7782:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1206,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7792:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1207,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7801:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1208,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7805:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7792:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1211,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7791:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7816:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7791:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7782:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1215,"nodeType":"ExpressionStatement","src":"7782:35:10"},{"expression":{"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1216,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7831:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1217,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7841:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1218,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7850:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1219,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7854:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7850:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7841:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1222,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7840:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7865:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7840:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7831:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1226,"nodeType":"ExpressionStatement","src":"7831:35:10"},{"expression":{"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1227,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7880:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1228,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7890:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1229,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7899:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1230,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7903:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7890:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1233,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7889:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7914:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7889:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7880:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1237,"nodeType":"ExpressionStatement","src":"7880:35:10"},{"expression":{"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1238,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7929:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1239,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7939:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1240,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7948:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1241,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7952:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7948:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7939:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1244,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7938:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7938:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7929:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1248,"nodeType":"ExpressionStatement","src":"7929:35:10"},{"expression":{"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1249,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7978:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1250,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7988:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1251,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7997:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8001:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7997:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7988:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1255,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7987:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8012:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7987:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7978:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1259,"nodeType":"ExpressionStatement","src":"7978:35:10"},{"expression":{"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1260,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8027:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1261,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8037:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1262,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8046:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1263,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8050:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8046:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8037:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1266,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8036:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8061:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8036:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8027:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1270,"nodeType":"ExpressionStatement","src":"8027:35:10"},{"expression":{"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1271,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8076:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1272,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8086:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1273,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8095:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1274,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8099:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8095:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8086:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8085:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8110:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8085:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8076:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1281,"nodeType":"ExpressionStatement","src":"8076:35:10"},{"expression":{"arguments":[{"id":1283,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8136:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1284,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8144:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1285,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8148:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8144:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1282,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"8132:3:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8132:23:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1186,"id":1288,"nodeType":"Return","src":"8125:30:10"}]}]},"documentation":{"id":1180,"nodeType":"StructuredDocumentation","src":"6317:208:10","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":1291,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6539:4:10","nodeType":"FunctionDefinition","parameters":{"id":1183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1182,"mutability":"mutable","name":"a","nameLocation":"6552:1:10","nodeType":"VariableDeclaration","scope":1291,"src":"6544:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1181,"name":"uint256","nodeType":"ElementaryTypeName","src":"6544:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6543:11:10"},"returnParameters":{"id":1186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1291,"src":"6578:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1184,"name":"uint256","nodeType":"ElementaryTypeName","src":"6578:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6577:9:10"},"scope":1787,"src":"6530:1642:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1326,"nodeType":"Block","src":"8348:161:10","statements":[{"id":1325,"nodeType":"UncheckedBlock","src":"8358:145:10","statements":[{"assignments":[1303],"declarations":[{"constant":false,"id":1303,"mutability":"mutable","name":"result","nameLocation":"8390:6:10","nodeType":"VariableDeclaration","scope":1325,"src":"8382:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"8382:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1307,"initialValue":{"arguments":[{"id":1305,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"8404:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1304,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[1291,1327],"referencedDeclaration":1291,"src":"8399:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8399:7:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8382:24:10"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1308,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"8427:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1309,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1297,"src":"8437:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1310,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"8449:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$928_$","typeString":"type(enum Math.Rounding)"}},"id":1311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":926,"src":"8449:11:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"src":"8437:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1313,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"8464:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1314,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"8473:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1316,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"8482:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8437:46:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8490:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8437:54:10","trueExpression":{"hexValue":"31","id":1319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8486:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1322,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8436:56:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8427:65:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1301,"id":1324,"nodeType":"Return","src":"8420:72:10"}]}]},"documentation":{"id":1292,"nodeType":"StructuredDocumentation","src":"8178:89:10","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":1327,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8281:4:10","nodeType":"FunctionDefinition","parameters":{"id":1298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1294,"mutability":"mutable","name":"a","nameLocation":"8294:1:10","nodeType":"VariableDeclaration","scope":1327,"src":"8286:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1293,"name":"uint256","nodeType":"ElementaryTypeName","src":"8286:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1297,"mutability":"mutable","name":"rounding","nameLocation":"8306:8:10","nodeType":"VariableDeclaration","scope":1327,"src":"8297:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"typeName":{"id":1296,"nodeType":"UserDefinedTypeName","pathNode":{"id":1295,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":928,"src":"8297:8:10"},"referencedDeclaration":928,"src":"8297:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8285:30:10"},"returnParameters":{"id":1301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1327,"src":"8339:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1299,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8338:9:10"},"scope":1787,"src":"8272:237:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1458,"nodeType":"Block","src":"8694:922:10","statements":[{"assignments":[1336],"declarations":[{"constant":false,"id":1336,"mutability":"mutable","name":"result","nameLocation":"8712:6:10","nodeType":"VariableDeclaration","scope":1458,"src":"8704:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1335,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1338,"initialValue":{"hexValue":"30","id":1337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8721:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8704:18:10"},{"id":1455,"nodeType":"UncheckedBlock","src":"8732:855:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1339,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"8760:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8769:3:10","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8760:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8760:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1353,"nodeType":"IfStatement","src":"8756:99:10","trueBody":{"id":1352,"nodeType":"Block","src":"8778:77:10","statements":[{"expression":{"id":1346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1344,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"8796:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:3:10","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8796:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1347,"nodeType":"ExpressionStatement","src":"8796:13:10"},{"expression":{"id":1350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1348,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"8827:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":1349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8837:3:10","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8827:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1351,"nodeType":"ExpressionStatement","src":"8827:13:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1354,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"8872:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8881:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8872:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8886:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8872:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1368,"nodeType":"IfStatement","src":"8868:96:10","trueBody":{"id":1367,"nodeType":"Block","src":"8889:75:10","statements":[{"expression":{"id":1361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"8907:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8917:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8907:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1362,"nodeType":"ExpressionStatement","src":"8907:12:10"},{"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1363,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"8937:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8947:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8937:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1366,"nodeType":"ExpressionStatement","src":"8937:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1369,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"8981:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8981:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8995:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8981:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1383,"nodeType":"IfStatement","src":"8977:96:10","trueBody":{"id":1382,"nodeType":"Block","src":"8998:75:10","statements":[{"expression":{"id":1376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1374,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9016:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9026:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9016:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1377,"nodeType":"ExpressionStatement","src":"9016:12:10"},{"expression":{"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1378,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9046:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9056:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9046:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1381,"nodeType":"ExpressionStatement","src":"9046:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1384,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9090:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9090:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9104:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9090:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1398,"nodeType":"IfStatement","src":"9086:96:10","trueBody":{"id":1397,"nodeType":"Block","src":"9107:75:10","statements":[{"expression":{"id":1391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9125:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9135:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9125:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1392,"nodeType":"ExpressionStatement","src":"9125:12:10"},{"expression":{"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1393,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9155:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9155:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1396,"nodeType":"ExpressionStatement","src":"9155:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9199:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9208:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9199:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9212:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9199:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1413,"nodeType":"IfStatement","src":"9195:93:10","trueBody":{"id":1412,"nodeType":"Block","src":"9215:73:10","statements":[{"expression":{"id":1406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1404,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9233:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":1405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9243:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9233:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1407,"nodeType":"ExpressionStatement","src":"9233:11:10"},{"expression":{"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1408,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9262:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9272:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9262:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1411,"nodeType":"ExpressionStatement","src":"9262:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9305:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":1415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9314:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9305:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9318:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9305:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1428,"nodeType":"IfStatement","src":"9301:93:10","trueBody":{"id":1427,"nodeType":"Block","src":"9321:73:10","statements":[{"expression":{"id":1421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1419,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9339:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9349:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9339:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1422,"nodeType":"ExpressionStatement","src":"9339:11:10"},{"expression":{"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1423,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9368:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9378:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9368:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1426,"nodeType":"ExpressionStatement","src":"9368:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1429,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9411:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9420:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9411:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9424:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9411:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1443,"nodeType":"IfStatement","src":"9407:93:10","trueBody":{"id":1442,"nodeType":"Block","src":"9427:73:10","statements":[{"expression":{"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1434,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9445:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":1435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9455:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9445:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1437,"nodeType":"ExpressionStatement","src":"9445:11:10"},{"expression":{"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1438,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9474:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9484:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9474:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1441,"nodeType":"ExpressionStatement","src":"9474:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9517:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9526:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9517:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9530:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9517:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1454,"nodeType":"IfStatement","src":"9513:64:10","trueBody":{"id":1453,"nodeType":"Block","src":"9533:44:10","statements":[{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1449,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9551:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9561:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9551:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"9551:11:10"}]}}]},{"expression":{"id":1456,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9603:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1334,"id":1457,"nodeType":"Return","src":"9596:13:10"}]},"documentation":{"id":1328,"nodeType":"StructuredDocumentation","src":"8515:113:10","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":1459,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8642:4:10","nodeType":"FunctionDefinition","parameters":{"id":1331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1330,"mutability":"mutable","name":"value","nameLocation":"8655:5:10","nodeType":"VariableDeclaration","scope":1459,"src":"8647:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1329,"name":"uint256","nodeType":"ElementaryTypeName","src":"8647:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8646:15:10"},"returnParameters":{"id":1334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1459,"src":"8685:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"8685:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8684:9:10"},"scope":1787,"src":"8633:983:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1494,"nodeType":"Block","src":"9849:165:10","statements":[{"id":1493,"nodeType":"UncheckedBlock","src":"9859:149:10","statements":[{"assignments":[1471],"declarations":[{"constant":false,"id":1471,"mutability":"mutable","name":"result","nameLocation":"9891:6:10","nodeType":"VariableDeclaration","scope":1493,"src":"9883:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1470,"name":"uint256","nodeType":"ElementaryTypeName","src":"9883:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1475,"initialValue":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1462,"src":"9905:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[1459,1495],"referencedDeclaration":1459,"src":"9900:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9900:11:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9883:28:10"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1476,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1471,"src":"9932:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"id":1480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1477,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1465,"src":"9942:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1478,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"9954:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$928_$","typeString":"type(enum Math.Rounding)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":926,"src":"9954:11:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"src":"9942:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9969:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1482,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1471,"src":"9974:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1484,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1462,"src":"9983:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9942:46:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9995:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9942:54:10","trueExpression":{"hexValue":"31","id":1487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9991:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1490,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9941:56:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9932:65:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1469,"id":1492,"nodeType":"Return","src":"9925:72:10"}]}]},"documentation":{"id":1460,"nodeType":"StructuredDocumentation","src":"9622:142:10","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1495,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9778:4:10","nodeType":"FunctionDefinition","parameters":{"id":1466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1462,"mutability":"mutable","name":"value","nameLocation":"9791:5:10","nodeType":"VariableDeclaration","scope":1495,"src":"9783:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1461,"name":"uint256","nodeType":"ElementaryTypeName","src":"9783:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1465,"mutability":"mutable","name":"rounding","nameLocation":"9807:8:10","nodeType":"VariableDeclaration","scope":1495,"src":"9798:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"typeName":{"id":1464,"nodeType":"UserDefinedTypeName","pathNode":{"id":1463,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":928,"src":"9798:8:10"},"referencedDeclaration":928,"src":"9798:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9782:34:10"},"returnParameters":{"id":1469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1468,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1495,"src":"9840:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1467,"name":"uint256","nodeType":"ElementaryTypeName","src":"9840:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9839:9:10"},"scope":1787,"src":"9769:245:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1623,"nodeType":"Block","src":"10201:854:10","statements":[{"assignments":[1504],"declarations":[{"constant":false,"id":1504,"mutability":"mutable","name":"result","nameLocation":"10219:6:10","nodeType":"VariableDeclaration","scope":1623,"src":"10211:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1503,"name":"uint256","nodeType":"ElementaryTypeName","src":"10211:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1506,"initialValue":{"hexValue":"30","id":1505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10228:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10211:18:10"},{"id":1620,"nodeType":"UncheckedBlock","src":"10239:787:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1507,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10267:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10276:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10282:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10276:8:10","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10267:17:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1523,"nodeType":"IfStatement","src":"10263:103:10","trueBody":{"id":1522,"nodeType":"Block","src":"10286:80:10","statements":[{"expression":{"id":1516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1512,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10304:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10313:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10313:8:10","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10304:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1517,"nodeType":"ExpressionStatement","src":"10304:17:10"},{"expression":{"id":1520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1518,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10339:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10349:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10339:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1521,"nodeType":"ExpressionStatement","src":"10339:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10383:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10392:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10398:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10392:8:10","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10383:17:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1540,"nodeType":"IfStatement","src":"10379:103:10","trueBody":{"id":1539,"nodeType":"Block","src":"10402:80:10","statements":[{"expression":{"id":1533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1529,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10420:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10435:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10429:8:10","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10420:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1534,"nodeType":"ExpressionStatement","src":"10420:17:10"},{"expression":{"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1535,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10455:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10465:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10455:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1538,"nodeType":"ExpressionStatement","src":"10455:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1541,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10499:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10508:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10514:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10508:8:10","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10499:17:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1557,"nodeType":"IfStatement","src":"10495:103:10","trueBody":{"id":1556,"nodeType":"Block","src":"10518:80:10","statements":[{"expression":{"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1546,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10536:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10545:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10551:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10545:8:10","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10536:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1551,"nodeType":"ExpressionStatement","src":"10536:17:10"},{"expression":{"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1552,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10571:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10581:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10571:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1555,"nodeType":"ExpressionStatement","src":"10571:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10615:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10624:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10630:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10624:7:10","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10615:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1574,"nodeType":"IfStatement","src":"10611:100:10","trueBody":{"id":1573,"nodeType":"Block","src":"10633:78:10","statements":[{"expression":{"id":1567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1563,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10651:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10660:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10666:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10660:7:10","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10651:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1568,"nodeType":"ExpressionStatement","src":"10651:16:10"},{"expression":{"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1569,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10685:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10695:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10685:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1572,"nodeType":"ExpressionStatement","src":"10685:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1575,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10728:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10737:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10743:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10737:7:10","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10728:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1591,"nodeType":"IfStatement","src":"10724:100:10","trueBody":{"id":1590,"nodeType":"Block","src":"10746:78:10","statements":[{"expression":{"id":1584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1580,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10764:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10773:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10779:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10773:7:10","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10764:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1585,"nodeType":"ExpressionStatement","src":"10764:16:10"},{"expression":{"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1586,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10798:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10808:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10798:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1589,"nodeType":"ExpressionStatement","src":"10798:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1592,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10841:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10850:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10856:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10850:7:10","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10841:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1608,"nodeType":"IfStatement","src":"10837:100:10","trueBody":{"id":1607,"nodeType":"Block","src":"10859:78:10","statements":[{"expression":{"id":1601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10877:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10886:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10892:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10886:7:10","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10877:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1602,"nodeType":"ExpressionStatement","src":"10877:16:10"},{"expression":{"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1603,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10911:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10921:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10911:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1606,"nodeType":"ExpressionStatement","src":"10911:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1609,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10954:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10963:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10969:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10963:7:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10954:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1619,"nodeType":"IfStatement","src":"10950:66:10","trueBody":{"id":1618,"nodeType":"Block","src":"10972:44:10","statements":[{"expression":{"id":1616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1614,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10990:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11000:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10990:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1617,"nodeType":"ExpressionStatement","src":"10990:11:10"}]}}]},{"expression":{"id":1621,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"11042:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1502,"id":1622,"nodeType":"Return","src":"11035:13:10"}]},"documentation":{"id":1496,"nodeType":"StructuredDocumentation","src":"10020:114:10","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":1624,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10148:5:10","nodeType":"FunctionDefinition","parameters":{"id":1499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1498,"mutability":"mutable","name":"value","nameLocation":"10162:5:10","nodeType":"VariableDeclaration","scope":1624,"src":"10154:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1497,"name":"uint256","nodeType":"ElementaryTypeName","src":"10154:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10153:15:10"},"returnParameters":{"id":1502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1501,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1624,"src":"10192:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1500,"name":"uint256","nodeType":"ElementaryTypeName","src":"10192:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10191:9:10"},"scope":1787,"src":"10139:916:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1659,"nodeType":"Block","src":"11290:167:10","statements":[{"id":1658,"nodeType":"UncheckedBlock","src":"11300:151:10","statements":[{"assignments":[1636],"declarations":[{"constant":false,"id":1636,"mutability":"mutable","name":"result","nameLocation":"11332:6:10","nodeType":"VariableDeclaration","scope":1658,"src":"11324:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1635,"name":"uint256","nodeType":"ElementaryTypeName","src":"11324:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1640,"initialValue":{"arguments":[{"id":1638,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1627,"src":"11347:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1637,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1624,1660],"referencedDeclaration":1624,"src":"11341:5:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11341:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11324:29:10"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1641,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"11374:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"id":1645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1642,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"11384:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1643,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"11396:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$928_$","typeString":"type(enum Math.Rounding)"}},"id":1644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":926,"src":"11396:11:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"src":"11384:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11411:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1647,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"11417:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1649,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1627,"src":"11426:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11384:47:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11438:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11384:55:10","trueExpression":{"hexValue":"31","id":1652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11434:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1655,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11383:57:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11374:66:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1634,"id":1657,"nodeType":"Return","src":"11367:73:10"}]}]},"documentation":{"id":1625,"nodeType":"StructuredDocumentation","src":"11061:143:10","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1660,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11218:5:10","nodeType":"FunctionDefinition","parameters":{"id":1631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1627,"mutability":"mutable","name":"value","nameLocation":"11232:5:10","nodeType":"VariableDeclaration","scope":1660,"src":"11224:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1626,"name":"uint256","nodeType":"ElementaryTypeName","src":"11224:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1630,"mutability":"mutable","name":"rounding","nameLocation":"11248:8:10","nodeType":"VariableDeclaration","scope":1660,"src":"11239:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"typeName":{"id":1629,"nodeType":"UserDefinedTypeName","pathNode":{"id":1628,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":928,"src":"11239:8:10"},"referencedDeclaration":928,"src":"11239:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11223:34:10"},"returnParameters":{"id":1634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1660,"src":"11281:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1632,"name":"uint256","nodeType":"ElementaryTypeName","src":"11281:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11280:9:10"},"scope":1787,"src":"11209:248:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1746,"nodeType":"Block","src":"11771:600:10","statements":[{"assignments":[1669],"declarations":[{"constant":false,"id":1669,"mutability":"mutable","name":"result","nameLocation":"11789:6:10","nodeType":"VariableDeclaration","scope":1746,"src":"11781:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1668,"name":"uint256","nodeType":"ElementaryTypeName","src":"11781:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1671,"initialValue":{"hexValue":"30","id":1670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11798:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11781:18:10"},{"id":1743,"nodeType":"UncheckedBlock","src":"11809:533:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1672,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"11837:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11846:3:10","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11837:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11852:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11837:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1686,"nodeType":"IfStatement","src":"11833:98:10","trueBody":{"id":1685,"nodeType":"Block","src":"11855:76:10","statements":[{"expression":{"id":1679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1677,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"11873:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11883:3:10","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11873:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1680,"nodeType":"ExpressionStatement","src":"11873:13:10"},{"expression":{"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1681,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"11904:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11914:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11904:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1684,"nodeType":"ExpressionStatement","src":"11904:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1687,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"11948:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11957:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11948:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11962:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11948:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1701,"nodeType":"IfStatement","src":"11944:95:10","trueBody":{"id":1700,"nodeType":"Block","src":"11965:74:10","statements":[{"expression":{"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1692,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"11983:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11993:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11983:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1695,"nodeType":"ExpressionStatement","src":"11983:12:10"},{"expression":{"id":1698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"12013:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12023:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12013:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1699,"nodeType":"ExpressionStatement","src":"12013:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1702,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"12056:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12065:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12056:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12070:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12056:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1716,"nodeType":"IfStatement","src":"12052:95:10","trueBody":{"id":1715,"nodeType":"Block","src":"12073:74:10","statements":[{"expression":{"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1707,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"12091:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12101:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12091:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1710,"nodeType":"ExpressionStatement","src":"12091:12:10"},{"expression":{"id":1713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1711,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"12121:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12131:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12121:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1714,"nodeType":"ExpressionStatement","src":"12121:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1717,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"12164:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12173:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12164:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12178:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12164:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1731,"nodeType":"IfStatement","src":"12160:95:10","trueBody":{"id":1730,"nodeType":"Block","src":"12181:74:10","statements":[{"expression":{"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1722,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"12199:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12209:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12199:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1725,"nodeType":"ExpressionStatement","src":"12199:12:10"},{"expression":{"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1726,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"12229:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12239:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12229:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1729,"nodeType":"ExpressionStatement","src":"12229:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"12272:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12281:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12272:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12272:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1742,"nodeType":"IfStatement","src":"12268:64:10","trueBody":{"id":1741,"nodeType":"Block","src":"12288:44:10","statements":[{"expression":{"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1737,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"12306:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12306:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1740,"nodeType":"ExpressionStatement","src":"12306:11:10"}]}}]},{"expression":{"id":1744,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"12358:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1667,"id":1745,"nodeType":"Return","src":"12351:13:10"}]},"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"11463:240:10","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":1747,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11717:6:10","nodeType":"FunctionDefinition","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"value","nameLocation":"11732:5:10","nodeType":"VariableDeclaration","scope":1747,"src":"11724:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"11724:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11723:15:10"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1747,"src":"11762:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"11762:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11761:9:10"},"scope":1787,"src":"11708:663:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1785,"nodeType":"Block","src":"12608:174:10","statements":[{"id":1784,"nodeType":"UncheckedBlock","src":"12618:158:10","statements":[{"assignments":[1759],"declarations":[{"constant":false,"id":1759,"mutability":"mutable","name":"result","nameLocation":"12650:6:10","nodeType":"VariableDeclaration","scope":1784,"src":"12642:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1758,"name":"uint256","nodeType":"ElementaryTypeName","src":"12642:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1763,"initialValue":{"arguments":[{"id":1761,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"12666:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1760,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1747,1786],"referencedDeclaration":1747,"src":"12659:6:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12659:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12642:30:10"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1764,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1759,"src":"12693:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1765,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1753,"src":"12703:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1766,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"12715:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$928_$","typeString":"type(enum Math.Rounding)"}},"id":1767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":926,"src":"12715:11:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"src":"12703:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12730:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1770,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1759,"src":"12736:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12746:1:10","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12736:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1773,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12735:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1775,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"12751:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:26:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12703:53:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12703:61:10","trueExpression":{"hexValue":"31","id":1778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12759:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1781,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12702:63:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12693:72:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1757,"id":1783,"nodeType":"Return","src":"12686:79:10"}]}]},"documentation":{"id":1748,"nodeType":"StructuredDocumentation","src":"12377:144:10","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1786,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12535:6:10","nodeType":"FunctionDefinition","parameters":{"id":1754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1750,"mutability":"mutable","name":"value","nameLocation":"12550:5:10","nodeType":"VariableDeclaration","scope":1786,"src":"12542:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1749,"name":"uint256","nodeType":"ElementaryTypeName","src":"12542:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1753,"mutability":"mutable","name":"rounding","nameLocation":"12566:8:10","nodeType":"VariableDeclaration","scope":1786,"src":"12557:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"typeName":{"id":1752,"nodeType":"UserDefinedTypeName","pathNode":{"id":1751,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":928,"src":"12557:8:10"},"referencedDeclaration":928,"src":"12557:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12541:34:10"},"returnParameters":{"id":1757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1786,"src":"12599:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1755,"name":"uint256","nodeType":"ElementaryTypeName","src":"12599:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12598:9:10"},"scope":1787,"src":"12526:256:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1788,"src":"202:12582:10","usedErrors":[]}],"src":"103:12682:10"},"id":10},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SignedMath":[1892]},"id":1893,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1789,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":1790,"nodeType":"StructuredDocumentation","src":"134:80:11","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":1892,"linearizedBaseContracts":[1892],"name":"SignedMath","nameLocation":"223:10:11","nodeType":"ContractDefinition","nodes":[{"body":{"id":1807,"nodeType":"Block","src":"375:37:11","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1800,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"392:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1801,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1795,"src":"396:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"392:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1804,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1795,"src":"404:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"392:13:11","trueExpression":{"id":1803,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"400:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1799,"id":1806,"nodeType":"Return","src":"385:20:11"}]},"documentation":{"id":1791,"nodeType":"StructuredDocumentation","src":"240:66:11","text":" @dev Returns the largest of two signed numbers."},"id":1808,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"320:3:11","nodeType":"FunctionDefinition","parameters":{"id":1796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1793,"mutability":"mutable","name":"a","nameLocation":"331:1:11","nodeType":"VariableDeclaration","scope":1808,"src":"324:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1792,"name":"int256","nodeType":"ElementaryTypeName","src":"324:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1795,"mutability":"mutable","name":"b","nameLocation":"341:1:11","nodeType":"VariableDeclaration","scope":1808,"src":"334:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1794,"name":"int256","nodeType":"ElementaryTypeName","src":"334:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"323:20:11"},"returnParameters":{"id":1799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1798,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1808,"src":"367:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1797,"name":"int256","nodeType":"ElementaryTypeName","src":"367:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"366:8:11"},"scope":1892,"src":"311:101:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1825,"nodeType":"Block","src":"554:37:11","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1818,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1811,"src":"571:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1819,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"575:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"571:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1822,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"583:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"571:13:11","trueExpression":{"id":1821,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1811,"src":"579:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1817,"id":1824,"nodeType":"Return","src":"564:20:11"}]},"documentation":{"id":1809,"nodeType":"StructuredDocumentation","src":"418:67:11","text":" @dev Returns the smallest of two signed numbers."},"id":1826,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"499:3:11","nodeType":"FunctionDefinition","parameters":{"id":1814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1811,"mutability":"mutable","name":"a","nameLocation":"510:1:11","nodeType":"VariableDeclaration","scope":1826,"src":"503:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1810,"name":"int256","nodeType":"ElementaryTypeName","src":"503:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1813,"mutability":"mutable","name":"b","nameLocation":"520:1:11","nodeType":"VariableDeclaration","scope":1826,"src":"513:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1812,"name":"int256","nodeType":"ElementaryTypeName","src":"513:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"502:20:11"},"returnParameters":{"id":1817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1826,"src":"546:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1815,"name":"int256","nodeType":"ElementaryTypeName","src":"546:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"545:8:11"},"scope":1892,"src":"490:101:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1869,"nodeType":"Block","src":"796:162:11","statements":[{"assignments":[1837],"declarations":[{"constant":false,"id":1837,"mutability":"mutable","name":"x","nameLocation":"865:1:11","nodeType":"VariableDeclaration","scope":1869,"src":"858:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1836,"name":"int256","nodeType":"ElementaryTypeName","src":"858:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1850,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1838,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"870:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1839,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"874:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:5:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1841,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"869:7:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1842,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"881:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1843,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"885:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"891:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"880:12:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1848,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"879:14:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"869:24:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"858:35:11"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1851,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"910:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1856,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"930:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"922:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:11","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"922:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":1858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:3:11","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"922:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1852,"name":"int256","nodeType":"ElementaryTypeName","src":"915:6:11","typeDescriptions":{}}},"id":1860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"915:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1861,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"944:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1862,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"948:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"944:5:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1864,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"943:7:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"915:35:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1866,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"914:37:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"910:41:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1835,"id":1868,"nodeType":"Return","src":"903:48:11"}]},"documentation":{"id":1827,"nodeType":"StructuredDocumentation","src":"597:126:11","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":1870,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"737:7:11","nodeType":"FunctionDefinition","parameters":{"id":1832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1829,"mutability":"mutable","name":"a","nameLocation":"752:1:11","nodeType":"VariableDeclaration","scope":1870,"src":"745:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1828,"name":"int256","nodeType":"ElementaryTypeName","src":"745:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1831,"mutability":"mutable","name":"b","nameLocation":"762:1:11","nodeType":"VariableDeclaration","scope":1870,"src":"755:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1830,"name":"int256","nodeType":"ElementaryTypeName","src":"755:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"744:20:11"},"returnParameters":{"id":1835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1870,"src":"788:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1833,"name":"int256","nodeType":"ElementaryTypeName","src":"788:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"787:8:11"},"scope":1892,"src":"728:230:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1890,"nodeType":"Block","src":"1102:158:11","statements":[{"id":1889,"nodeType":"UncheckedBlock","src":"1112:142:11","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1880,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"1227:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":1881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1227:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1240:2:11","subExpression":{"id":1884,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"1241:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1227:15:11","trueExpression":{"id":1883,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"1236:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1219:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1878,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:11","typeDescriptions":{}}},"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1219:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1877,"id":1888,"nodeType":"Return","src":"1212:31:11"}]}]},"documentation":{"id":1871,"nodeType":"StructuredDocumentation","src":"964:78:11","text":" @dev Returns the absolute unsigned value of a signed value."},"id":1891,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1056:3:11","nodeType":"FunctionDefinition","parameters":{"id":1874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1873,"mutability":"mutable","name":"n","nameLocation":"1067:1:11","nodeType":"VariableDeclaration","scope":1891,"src":"1060:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1872,"name":"int256","nodeType":"ElementaryTypeName","src":"1060:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1059:10:11"},"returnParameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1891,"src":"1093:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1092:9:11"},"scope":1892,"src":"1047:213:11","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1893,"src":"215:1047:11","usedErrors":[]}],"src":"109:1154:11"},"id":11},"contracts/ERC721i.sol":{"ast":{"absolutePath":"contracts/ERC721i.sol","exportedSymbols":{"Address":[634],"Context":[656],"ERC165":[909],"ERC721":[2856],"ERC721i":[1988],"ERC721iEnumerable":[3215],"IERC165":[921],"IERC721":[228],"IERC721Enumerable":[277],"IERC721Metadata":[304],"IERC721Receiver":[246],"Math":[1787],"Ownable":[112],"SignedMath":[1892],"Strings":[885]},"id":1989,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1894,"literals":["solidity","0.8",".13"],"nodeType":"PragmaDirective","src":"213:23:12"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":1895,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1989,"sourceUnit":113,"src":"238:52:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/ERC721iEnumerable.sol","file":"./lib/ERC721iEnumerable.sol","id":1896,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1989,"sourceUnit":3216,"src":"291:37:12","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1898,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"1020:7:12"},"id":1899,"nodeType":"InheritanceSpecifier","src":"1020:7:12"},{"baseName":{"id":1900,"name":"ERC721iEnumerable","nodeType":"IdentifierPath","referencedDeclaration":3215,"src":"1031:17:12"},"id":1901,"nodeType":"InheritanceSpecifier","src":"1031:17:12"}],"canonicalName":"ERC721i","contractDependencies":[],"contractKind":"contract","documentation":{"id":1897,"nodeType":"StructuredDocumentation","src":"330:667:12","text":" @dev This implements a Pre-Mint version of {ERC721} that adds the ability to Pre-Mint\n all the token ids in the contract as assign an initial owner for each token id.\n On-chain state for Pre-Mint does not need to be initially stored if Max-Supply is known.\n Minting is a simple matter of assigning a balance to the pre-mint receiver,\n and modifying the \"read\" methods to account for the pre-mint receiver as owner.\n We use the Consecutive Transfer Method as defined in EIP-2309 to signal inital ownership.\n Almost everything else remains standard.\n We also default to the contract \"owner\" as the pre-mint receiver, but this can be changed."},"fullyImplemented":true,"id":1988,"linearizedBaseContracts":[1988,3215,277,2856,304,228,909,921,112,656],"name":"ERC721i","nameLocation":"1007:7:12","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1902,"nodeType":"StructuredDocumentation","src":"1053:58:12","text":"@dev EIP-2309: https://eips.ethereum.org/EIPS/eip-2309"},"eventSelector":"deaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d","id":1912,"name":"ConsecutiveTransfer","nameLocation":"1120:19:12","nodeType":"EventDefinition","parameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1904,"indexed":true,"mutability":"mutable","name":"fromTokenId","nameLocation":"1156:11:12","nodeType":"VariableDeclaration","scope":1912,"src":"1140:27:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1903,"name":"uint256","nodeType":"ElementaryTypeName","src":"1140:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1906,"indexed":false,"mutability":"mutable","name":"toTokenId","nameLocation":"1177:9:12","nodeType":"VariableDeclaration","scope":1912,"src":"1169:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1905,"name":"uint256","nodeType":"ElementaryTypeName","src":"1169:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1908,"indexed":true,"mutability":"mutable","name":"fromAddress","nameLocation":"1204:11:12","nodeType":"VariableDeclaration","scope":1912,"src":"1188:27:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1907,"name":"address","nodeType":"ElementaryTypeName","src":"1188:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1910,"indexed":true,"mutability":"mutable","name":"toAddress","nameLocation":"1233:9:12","nodeType":"VariableDeclaration","scope":1912,"src":"1217:25:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1909,"name":"address","nodeType":"ElementaryTypeName","src":"1217:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1139:104:12"},"src":"1114:130:12"},{"constant":false,"documentation":{"id":1913,"nodeType":"StructuredDocumentation","src":"1248:30:12","text":"@dev ERC721 Base Token URI"},"id":1915,"mutability":"mutable","name":"_baseTokenURI","nameLocation":"1297:13:12","nodeType":"VariableDeclaration","scope":1988,"src":"1281:29:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":1914,"name":"string","nodeType":"ElementaryTypeName","src":"1281:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"body":{"id":1947,"nodeType":"Block","src":"1679:142:12","statements":[{"expression":{"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1935,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1915,"src":"1685:13:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1936,"name":"baseUri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"1701:7:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1685:23:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1938,"nodeType":"ExpressionStatement","src":"1685:23:12"},{"expression":{"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1939,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"1763:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1940,"name":"maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1926,"src":"1776:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1763:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1942,"nodeType":"ExpressionStatement","src":"1763:22:12"},{"expression":{"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1943,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"1791:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1944,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1924,"src":"1810:6:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1791:25:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1946,"nodeType":"ExpressionStatement","src":"1791:25:12"}]},"documentation":{"id":1916,"nodeType":"StructuredDocumentation","src":"1315:184:12","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection,\n as well as a `minter` and a `maxSupply` for pre-minting the collection."},"id":1948,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1929,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"1649:4:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1930,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"1655:6:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":1931,"kind":"baseConstructorSpecifier","modifierName":{"id":1928,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":2856,"src":"1642:6:12"},"nodeType":"ModifierInvocation","src":"1642:20:12"},{"arguments":[],"id":1933,"kind":"baseConstructorSpecifier","modifierName":{"id":1932,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"1667:7:12"},"nodeType":"ModifierInvocation","src":"1667:9:12"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1918,"mutability":"mutable","name":"name","nameLocation":"1533:4:12","nodeType":"VariableDeclaration","scope":1948,"src":"1519:18:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1917,"name":"string","nodeType":"ElementaryTypeName","src":"1519:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1920,"mutability":"mutable","name":"symbol","nameLocation":"1557:6:12","nodeType":"VariableDeclaration","scope":1948,"src":"1543:20:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1919,"name":"string","nodeType":"ElementaryTypeName","src":"1543:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1922,"mutability":"mutable","name":"baseUri","nameLocation":"1583:7:12","nodeType":"VariableDeclaration","scope":1948,"src":"1569:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1921,"name":"string","nodeType":"ElementaryTypeName","src":"1569:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1924,"mutability":"mutable","name":"minter","nameLocation":"1604:6:12","nodeType":"VariableDeclaration","scope":1948,"src":"1596:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1923,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1926,"mutability":"mutable","name":"maxSupply","nameLocation":"1624:9:12","nodeType":"VariableDeclaration","scope":1948,"src":"1616:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1925,"name":"uint256","nodeType":"ElementaryTypeName","src":"1616:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1513:124:12"},"returnParameters":{"id":1934,"nodeType":"ParameterList","parameters":[],"src":"1679:0:12"},"scope":1988,"src":"1502:319:12","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1968,"nodeType":"Block","src":"1986:233:12","statements":[{"expression":{"id":1956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1952,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"2055:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1954,"indexExpression":{"id":1953,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"2065:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2055:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1955,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"2085:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2055:40:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1957,"nodeType":"ExpressionStatement","src":"2055:40:12"},{"eventCall":{"arguments":[{"hexValue":"31","id":1959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2170:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"id":1960,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"2173:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":1963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2193:1:12","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":1962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2185:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1961,"name":"address","nodeType":"ElementaryTypeName","src":"2185:7:12","typeDescriptions":{}}},"id":1964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2185:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1965,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"2197:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1958,"name":"ConsecutiveTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"2150:19:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (uint256,uint256,address,address)"}},"id":1966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2150:64:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1967,"nodeType":"EmitStatement","src":"2145:69:12"}]},"documentation":{"id":1949,"nodeType":"StructuredDocumentation","src":"1825:129:12","text":" @dev Pre-mint the max-supply of token IDs to the minter account.\n Token IDs are in base-1 sequential order."},"id":1969,"implemented":true,"kind":"function","modifiers":[],"name":"_preMint","nameLocation":"1966:8:12","nodeType":"FunctionDefinition","parameters":{"id":1950,"nodeType":"ParameterList","parameters":[],"src":"1974:2:12"},"returnParameters":{"id":1951,"nodeType":"ParameterList","parameters":[],"src":"1986:0:12"},"scope":1988,"src":"1957:262:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1977,"nodeType":"Block","src":"2261:21:12","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1974,"name":"_preMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1969,"src":"2267:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2267:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1976,"nodeType":"ExpressionStatement","src":"2267:10:12"}]},"functionSelector":"3cd29ac8","id":1978,"implemented":true,"kind":"function","modifiers":[{"id":1972,"kind":"modifierInvocation","modifierName":{"id":1971,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2251:9:12"},"nodeType":"ModifierInvocation","src":"2251:9:12"}],"name":"preMint","nameLocation":"2232:7:12","nodeType":"FunctionDefinition","parameters":{"id":1970,"nodeType":"ParameterList","parameters":[],"src":"2239:2:12"},"returnParameters":{"id":1973,"nodeType":"ParameterList","parameters":[],"src":"2261:0:12"},"scope":1988,"src":"2223:59:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2205],"body":{"id":1986,"nodeType":"Block","src":"2361:31:12","statements":[{"expression":{"id":1984,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1915,"src":"2374:13:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1983,"id":1985,"nodeType":"Return","src":"2367:20:12"}]},"id":1987,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"2295:8:12","nodeType":"FunctionDefinition","overrides":{"id":1980,"nodeType":"OverrideSpecifier","overrides":[],"src":"2328:8:12"},"parameters":{"id":1979,"nodeType":"ParameterList","parameters":[],"src":"2303:2:12"},"returnParameters":{"id":1983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1982,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1987,"src":"2346:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1981,"name":"string","nodeType":"ElementaryTypeName","src":"2346:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2345:15:12"},"scope":1988,"src":"2286:106:12","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1989,"src":"998:1396:12","usedErrors":[]}],"src":"213:2182:12"},"id":12},"contracts/lib/ERC721.sol":{"ast":{"absolutePath":"contracts/lib/ERC721.sol","exportedSymbols":{"Address":[634],"Context":[656],"ERC165":[909],"ERC721":[2856],"IERC165":[921],"IERC721":[228],"IERC721Metadata":[304],"IERC721Receiver":[246],"Math":[1787],"SignedMath":[1892],"Strings":[885]},"id":2857,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1990,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"302:23:13"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":1991,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2857,"sourceUnit":229,"src":"327:58:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":1992,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2857,"sourceUnit":247,"src":"386:66:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","id":1993,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2857,"sourceUnit":305,"src":"453:77:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":1994,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2857,"sourceUnit":635,"src":"531:51:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":1995,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2857,"sourceUnit":657,"src":"583:51:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"@openzeppelin/contracts/utils/Strings.sol","id":1996,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2857,"sourceUnit":886,"src":"635:51:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":1997,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2857,"sourceUnit":910,"src":"687:64:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1999,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":656,"src":"1401:7:13"},"id":2000,"nodeType":"InheritanceSpecifier","src":"1401:7:13"},{"baseName":{"id":2001,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":909,"src":"1410:6:13"},"id":2002,"nodeType":"InheritanceSpecifier","src":"1410:6:13"},{"baseName":{"id":2003,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":228,"src":"1418:7:13"},"id":2004,"nodeType":"InheritanceSpecifier","src":"1418:7:13"},{"baseName":{"id":2005,"name":"IERC721Metadata","nodeType":"IdentifierPath","referencedDeclaration":304,"src":"1427:15:13"},"id":2006,"nodeType":"InheritanceSpecifier","src":"1427:15:13"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":1998,"nodeType":"StructuredDocumentation","src":"753:628:13","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}.\n NOTE:\n The only changes made here are:\n - change scope of \"_owners\" from private to internal\n - change scope of \"_balances\" from private to internal\n - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\"\n - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)"},"fullyImplemented":true,"id":2856,"linearizedBaseContracts":[2856,304,228,909,921,656],"name":"ERC721","nameLocation":"1391:6:13","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2009,"libraryName":{"id":2007,"name":"Address","nodeType":"IdentifierPath","referencedDeclaration":634,"src":"1455:7:13"},"nodeType":"UsingForDirective","src":"1449:26:13","typeName":{"id":2008,"name":"address","nodeType":"ElementaryTypeName","src":"1467:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":2012,"libraryName":{"id":2010,"name":"Strings","nodeType":"IdentifierPath","referencedDeclaration":885,"src":"1486:7:13"},"nodeType":"UsingForDirective","src":"1480:26:13","typeName":{"id":2011,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":2015,"mutability":"constant","name":"_NULL_ADDRESS","nameLocation":"1538:13:13","nodeType":"VariableDeclaration","scope":2856,"src":"1512:84:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2013,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307830303030303030303030303030303030303030303030303030303030303030303030303064456144","id":2014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1554:42:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x000000000000000000000000000000000000dEaD"},"visibility":"internal"},{"constant":false,"id":2017,"mutability":"mutable","name":"_name","nameLocation":"1636:5:13","nodeType":"VariableDeclaration","scope":2856,"src":"1621:20:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2016,"name":"string","nodeType":"ElementaryTypeName","src":"1621:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":2019,"mutability":"mutable","name":"_symbol","nameLocation":"1683:7:13","nodeType":"VariableDeclaration","scope":2856,"src":"1668:22:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2018,"name":"string","nodeType":"ElementaryTypeName","src":"1668:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":2023,"mutability":"mutable","name":"_owners","nameLocation":"1780:7:13","nodeType":"VariableDeclaration","scope":2856,"src":"1743:44:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":2022,"keyType":{"id":2020,"name":"uint256","nodeType":"ElementaryTypeName","src":"1751:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1743:27:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":2021,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"internal"},{"constant":false,"id":2027,"mutability":"mutable","name":"_balances","nameLocation":"1875:9:13","nodeType":"VariableDeclaration","scope":2856,"src":"1838:46:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":2026,"keyType":{"id":2024,"name":"address","nodeType":"ElementaryTypeName","src":"1846:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1838:27:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":2025,"name":"uint256","nodeType":"ElementaryTypeName","src":"1857:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":2031,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1976:15:13","nodeType":"VariableDeclaration","scope":2856,"src":"1940:51:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":2030,"keyType":{"id":2028,"name":"uint256","nodeType":"ElementaryTypeName","src":"1948:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1940:27:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":2029,"name":"address","nodeType":"ElementaryTypeName","src":"1959:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":2037,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"2099:18:13","nodeType":"VariableDeclaration","scope":2856,"src":"2046:71:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":2036,"keyType":{"id":2032,"name":"address","nodeType":"ElementaryTypeName","src":"2054:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2046:44:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":2035,"keyType":{"id":2033,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2065:24:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":2034,"name":"bool","nodeType":"ElementaryTypeName","src":"2084:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":2053,"nodeType":"Block","src":"2293:57:13","statements":[{"expression":{"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2045,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2017,"src":"2303:5:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2046,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2040,"src":"2311:5:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2303:13:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2048,"nodeType":"ExpressionStatement","src":"2303:13:13"},{"expression":{"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2049,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"2326:7:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2050,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"2336:7:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2326:17:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2052,"nodeType":"ExpressionStatement","src":"2326:17:13"}]},"documentation":{"id":2038,"nodeType":"StructuredDocumentation","src":"2124:108:13","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":2054,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2040,"mutability":"mutable","name":"name_","nameLocation":"2263:5:13","nodeType":"VariableDeclaration","scope":2054,"src":"2249:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2039,"name":"string","nodeType":"ElementaryTypeName","src":"2249:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2042,"mutability":"mutable","name":"symbol_","nameLocation":"2284:7:13","nodeType":"VariableDeclaration","scope":2054,"src":"2270:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2041,"name":"string","nodeType":"ElementaryTypeName","src":"2270:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2248:44:13"},"returnParameters":{"id":2044,"nodeType":"ParameterList","parameters":[],"src":"2293:0:13"},"scope":2856,"src":"2237:113:13","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[908,920],"body":{"id":2084,"nodeType":"Block","src":"2525:192:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2065,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"2554:11:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2067,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":228,"src":"2574:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$228_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$228_$","typeString":"type(contract IERC721)"}],"id":2066,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2569:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2569:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$228","typeString":"type(contract IERC721)"}},"id":2069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"2569:25:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2554:40:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2071,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"2610:11:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2073,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"2630:15:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$304_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$304_$","typeString":"type(contract IERC721Metadata)"}],"id":2072,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2625:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2625:21:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$304","typeString":"type(contract IERC721Metadata)"}},"id":2075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"2625:33:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2610:48:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2554:104:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2080,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"2698:11:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":2078,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2674:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$2856_$","typeString":"type(contract super ERC721)"}},"id":2079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":908,"src":"2674:23:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2674:36:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2554:156:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2064,"id":2083,"nodeType":"Return","src":"2535:175:13"}]},"documentation":{"id":2055,"nodeType":"StructuredDocumentation","src":"2356:56:13","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2085,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2426:17:13","nodeType":"FunctionDefinition","overrides":{"id":2061,"nodeType":"OverrideSpecifier","overrides":[{"id":2059,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":909,"src":"2493:6:13"},{"id":2060,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":921,"src":"2501:7:13"}],"src":"2484:25:13"},"parameters":{"id":2058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2057,"mutability":"mutable","name":"interfaceId","nameLocation":"2451:11:13","nodeType":"VariableDeclaration","scope":2085,"src":"2444:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2056,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2444:6:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2443:20:13"},"returnParameters":{"id":2064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2063,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2085,"src":"2519:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2062,"name":"bool","nodeType":"ElementaryTypeName","src":"2519:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2518:6:13"},"scope":2856,"src":"2417:300:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[153],"body":{"id":2108,"nodeType":"Block","src":"2857:123:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2095,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"2875:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2892:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2884:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2096,"name":"address","nodeType":"ElementaryTypeName","src":"2884:7:13","typeDescriptions":{}}},"id":2099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2884:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2875:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":2101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2896:43:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":2094,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2867:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2867:73:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2103,"nodeType":"ExpressionStatement","src":"2867:73:13"},{"expression":{"baseExpression":{"id":2104,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"2957:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2106,"indexExpression":{"id":2105,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2088,"src":"2967:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2957:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2093,"id":2107,"nodeType":"Return","src":"2950:23:13"}]},"documentation":{"id":2086,"nodeType":"StructuredDocumentation","src":"2723:48:13","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":2109,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2785:9:13","nodeType":"FunctionDefinition","overrides":{"id":2090,"nodeType":"OverrideSpecifier","overrides":[],"src":"2830:8:13"},"parameters":{"id":2089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2088,"mutability":"mutable","name":"owner","nameLocation":"2803:5:13","nodeType":"VariableDeclaration","scope":2109,"src":"2795:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2087,"name":"address","nodeType":"ElementaryTypeName","src":"2795:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2794:15:13"},"returnParameters":{"id":2093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2092,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2109,"src":"2848:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2091,"name":"uint256","nodeType":"ElementaryTypeName","src":"2848:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2847:9:13"},"scope":2856,"src":"2776:204:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[161],"body":{"id":2136,"nodeType":"Block","src":"3118:137:13","statements":[{"assignments":[2119],"declarations":[{"constant":false,"id":2119,"mutability":"mutable","name":"owner","nameLocation":"3136:5:13","nodeType":"VariableDeclaration","scope":2136,"src":"3128:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2118,"name":"address","nodeType":"ElementaryTypeName","src":"3128:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2123,"initialValue":{"baseExpression":{"id":2120,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2023,"src":"3144:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2122,"indexExpression":{"id":2121,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"3152:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3144:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3128:32:13"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2125,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2119,"src":"3178:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3195:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2127,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3187:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2126,"name":"address","nodeType":"ElementaryTypeName","src":"3187:7:13","typeDescriptions":{}}},"id":2129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3187:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3178:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":2131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3199:26:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":2124,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3170:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3170:56:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2133,"nodeType":"ExpressionStatement","src":"3170:56:13"},{"expression":{"id":2134,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2119,"src":"3243:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2117,"id":2135,"nodeType":"Return","src":"3236:12:13"}]},"documentation":{"id":2110,"nodeType":"StructuredDocumentation","src":"2986:46:13","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":2137,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"3046:7:13","nodeType":"FunctionDefinition","overrides":{"id":2114,"nodeType":"OverrideSpecifier","overrides":[],"src":"3091:8:13"},"parameters":{"id":2113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2112,"mutability":"mutable","name":"tokenId","nameLocation":"3062:7:13","nodeType":"VariableDeclaration","scope":2137,"src":"3054:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2111,"name":"uint256","nodeType":"ElementaryTypeName","src":"3054:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3053:17:13"},"returnParameters":{"id":2117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2116,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2137,"src":"3109:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2115,"name":"address","nodeType":"ElementaryTypeName","src":"3109:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3108:9:13"},"scope":2856,"src":"3037:218:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[289],"body":{"id":2146,"nodeType":"Block","src":"3386:29:13","statements":[{"expression":{"id":2144,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2017,"src":"3403:5:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2143,"id":2145,"nodeType":"Return","src":"3396:12:13"}]},"documentation":{"id":2138,"nodeType":"StructuredDocumentation","src":"3261:51:13","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":2147,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"3326:4:13","nodeType":"FunctionDefinition","overrides":{"id":2140,"nodeType":"OverrideSpecifier","overrides":[],"src":"3353:8:13"},"parameters":{"id":2139,"nodeType":"ParameterList","parameters":[],"src":"3330:2:13"},"returnParameters":{"id":2143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2147,"src":"3371:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2141,"name":"string","nodeType":"ElementaryTypeName","src":"3371:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3370:15:13"},"scope":2856,"src":"3317:98:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[295],"body":{"id":2156,"nodeType":"Block","src":"3550:31:13","statements":[{"expression":{"id":2154,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"3567:7:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2153,"id":2155,"nodeType":"Return","src":"3560:14:13"}]},"documentation":{"id":2148,"nodeType":"StructuredDocumentation","src":"3421:53:13","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":2157,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"3488:6:13","nodeType":"FunctionDefinition","overrides":{"id":2150,"nodeType":"OverrideSpecifier","overrides":[],"src":"3517:8:13"},"parameters":{"id":2149,"nodeType":"ParameterList","parameters":[],"src":"3494:2:13"},"returnParameters":{"id":2153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2157,"src":"3535:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2151,"name":"string","nodeType":"ElementaryTypeName","src":"3535:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3534:15:13"},"scope":2856,"src":"3479:102:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[303],"body":{"id":2195,"nodeType":"Block","src":"3735:188:13","statements":[{"expression":{"arguments":[{"id":2167,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2160,"src":"3760:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2166,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"3745:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":2168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3745:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2169,"nodeType":"ExpressionStatement","src":"3745:23:13"},{"assignments":[2171],"declarations":[{"constant":false,"id":2171,"mutability":"mutable","name":"baseURI","nameLocation":"3793:7:13","nodeType":"VariableDeclaration","scope":2195,"src":"3779:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2170,"name":"string","nodeType":"ElementaryTypeName","src":"3779:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2174,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2172,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2205,"src":"3803:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":2173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3803:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"3779:34:13"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2177,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"3836:7:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3830:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2175,"name":"bytes","nodeType":"ElementaryTypeName","src":"3830:5:13","typeDescriptions":{}}},"id":2178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3830:14:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3830:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3830:25:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":2192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3914:2:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":2193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3830:86:13","trueExpression":{"arguments":[{"arguments":[{"id":2186,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"3882:7:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2187,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2160,"src":"3891:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":715,"src":"3891:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":2189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3891:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":2184,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3865:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3865:16:13","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3865:45:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3858:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2182,"name":"string","nodeType":"ElementaryTypeName","src":"3858:6:13","typeDescriptions":{}}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3858:53:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2165,"id":2194,"nodeType":"Return","src":"3823:93:13"}]},"documentation":{"id":2158,"nodeType":"StructuredDocumentation","src":"3587:55:13","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":2196,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"3656:8:13","nodeType":"FunctionDefinition","overrides":{"id":2162,"nodeType":"OverrideSpecifier","overrides":[],"src":"3702:8:13"},"parameters":{"id":2161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2160,"mutability":"mutable","name":"tokenId","nameLocation":"3673:7:13","nodeType":"VariableDeclaration","scope":2196,"src":"3665:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2159,"name":"uint256","nodeType":"ElementaryTypeName","src":"3665:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3664:17:13"},"returnParameters":{"id":2165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2196,"src":"3720:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2163,"name":"string","nodeType":"ElementaryTypeName","src":"3720:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3719:15:13"},"scope":2856,"src":"3647:276:13","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2204,"nodeType":"Block","src":"4231:26:13","statements":[{"expression":{"hexValue":"","id":2202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4248:2:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":2201,"id":2203,"nodeType":"Return","src":"4241:9:13"}]},"documentation":{"id":2197,"nodeType":"StructuredDocumentation","src":"3929:231:13","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":2205,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"4174:8:13","nodeType":"FunctionDefinition","parameters":{"id":2198,"nodeType":"ParameterList","parameters":[],"src":"4182:2:13"},"returnParameters":{"id":2201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2200,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2205,"src":"4216:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2199,"name":"string","nodeType":"ElementaryTypeName","src":"4216:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4215:15:13"},"scope":2856,"src":"4165:92:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[201],"body":{"id":2246,"nodeType":"Block","src":"4384:330:13","statements":[{"assignments":[2215],"declarations":[{"constant":false,"id":2215,"mutability":"mutable","name":"owner","nameLocation":"4402:5:13","nodeType":"VariableDeclaration","scope":2246,"src":"4394:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2214,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2219,"initialValue":{"arguments":[{"id":2217,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"4418:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2216,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"4410:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4410:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4394:32:13"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2221,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2208,"src":"4444:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2222,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2215,"src":"4450:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4444:11:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":2224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4457:35:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":2220,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4436:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4436:57:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2226,"nodeType":"ExpressionStatement","src":"4436:57:13"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2228,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"4525:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4525:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2230,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2215,"src":"4541:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4525:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2233,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2215,"src":"4567:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2234,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"4574:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4574:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2232,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"4550:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4550:37:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4525:62:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","id":2238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4601:64:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""},"value":"ERC721: approve caller is not token owner nor approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""}],"id":2227,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4504:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4504:171:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2240,"nodeType":"ExpressionStatement","src":"4504:171:13"},{"expression":{"arguments":[{"id":2242,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2208,"src":"4695:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2243,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"4699:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2241,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2723,"src":"4686:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4686:21:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2245,"nodeType":"ExpressionStatement","src":"4686:21:13"}]},"documentation":{"id":2206,"nodeType":"StructuredDocumentation","src":"4263:46:13","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":2247,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4323:7:13","nodeType":"FunctionDefinition","overrides":{"id":2212,"nodeType":"OverrideSpecifier","overrides":[],"src":"4375:8:13"},"parameters":{"id":2211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2208,"mutability":"mutable","name":"to","nameLocation":"4339:2:13","nodeType":"VariableDeclaration","scope":2247,"src":"4331:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2207,"name":"address","nodeType":"ElementaryTypeName","src":"4331:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2210,"mutability":"mutable","name":"tokenId","nameLocation":"4351:7:13","nodeType":"VariableDeclaration","scope":2247,"src":"4343:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2209,"name":"uint256","nodeType":"ElementaryTypeName","src":"4343:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4330:29:13"},"returnParameters":{"id":2213,"nodeType":"ParameterList","parameters":[],"src":"4384:0:13"},"scope":2856,"src":"4314:400:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[217],"body":{"id":2264,"nodeType":"Block","src":"4860:82:13","statements":[{"expression":{"arguments":[{"id":2257,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2250,"src":"4885:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2256,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"4870:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":2258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4870:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2259,"nodeType":"ExpressionStatement","src":"4870:23:13"},{"expression":{"baseExpression":{"id":2260,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"4911:15:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2262,"indexExpression":{"id":2261,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2250,"src":"4927:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4911:24:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2255,"id":2263,"nodeType":"Return","src":"4904:31:13"}]},"documentation":{"id":2248,"nodeType":"StructuredDocumentation","src":"4720:50:13","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":2265,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4784:11:13","nodeType":"FunctionDefinition","overrides":{"id":2252,"nodeType":"OverrideSpecifier","overrides":[],"src":"4833:8:13"},"parameters":{"id":2251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2250,"mutability":"mutable","name":"tokenId","nameLocation":"4804:7:13","nodeType":"VariableDeclaration","scope":2265,"src":"4796:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2249,"name":"uint256","nodeType":"ElementaryTypeName","src":"4796:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4795:17:13"},"returnParameters":{"id":2255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2254,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2265,"src":"4851:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"4851:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4850:9:13"},"scope":2856,"src":"4775:167:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[209],"body":{"id":2281,"nodeType":"Block","src":"5093:69:13","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2275,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"5122:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5122:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2277,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"5136:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2278,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2270,"src":"5146:8:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2274,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2755,"src":"5103:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5103:52:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2280,"nodeType":"ExpressionStatement","src":"5103:52:13"}]},"documentation":{"id":2266,"nodeType":"StructuredDocumentation","src":"4948:56:13","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":2282,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"5018:17:13","nodeType":"FunctionDefinition","overrides":{"id":2272,"nodeType":"OverrideSpecifier","overrides":[],"src":"5084:8:13"},"parameters":{"id":2271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2268,"mutability":"mutable","name":"operator","nameLocation":"5044:8:13","nodeType":"VariableDeclaration","scope":2282,"src":"5036:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2267,"name":"address","nodeType":"ElementaryTypeName","src":"5036:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2270,"mutability":"mutable","name":"approved","nameLocation":"5059:8:13","nodeType":"VariableDeclaration","scope":2282,"src":"5054:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2269,"name":"bool","nodeType":"ElementaryTypeName","src":"5054:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5035:33:13"},"returnParameters":{"id":2273,"nodeType":"ParameterList","parameters":[],"src":"5093:0:13"},"scope":2856,"src":"5009:153:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[227],"body":{"id":2299,"nodeType":"Block","src":"5331:59:13","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2293,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2037,"src":"5348:18:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2295,"indexExpression":{"id":2294,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"5367:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5348:25:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2297,"indexExpression":{"id":2296,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"5374:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5348:35:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2292,"id":2298,"nodeType":"Return","src":"5341:42:13"}]},"documentation":{"id":2283,"nodeType":"StructuredDocumentation","src":"5168:55:13","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":2300,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"5237:16:13","nodeType":"FunctionDefinition","overrides":{"id":2289,"nodeType":"OverrideSpecifier","overrides":[],"src":"5307:8:13"},"parameters":{"id":2288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2285,"mutability":"mutable","name":"owner","nameLocation":"5262:5:13","nodeType":"VariableDeclaration","scope":2300,"src":"5254:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2284,"name":"address","nodeType":"ElementaryTypeName","src":"5254:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2287,"mutability":"mutable","name":"operator","nameLocation":"5277:8:13","nodeType":"VariableDeclaration","scope":2300,"src":"5269:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2286,"name":"address","nodeType":"ElementaryTypeName","src":"5269:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5253:33:13"},"returnParameters":{"id":2292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2300,"src":"5325:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2290,"name":"bool","nodeType":"ElementaryTypeName","src":"5325:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5324:6:13"},"scope":2856,"src":"5228:162:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[193],"body":{"id":2326,"nodeType":"Block","src":"5571:208:13","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2313,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"5660:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5660:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2315,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"5674:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2312,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"5641:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5641:41:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":2317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5684:48:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":2311,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5633:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5633:100:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2319,"nodeType":"ExpressionStatement","src":"5633:100:13"},{"expression":{"arguments":[{"id":2321,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2303,"src":"5754:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2322,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2305,"src":"5760:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2323,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"5764:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2320,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"5744:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5744:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2325,"nodeType":"ExpressionStatement","src":"5744:28:13"}]},"documentation":{"id":2301,"nodeType":"StructuredDocumentation","src":"5396:51:13","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":2327,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5461:12:13","nodeType":"FunctionDefinition","overrides":{"id":2309,"nodeType":"OverrideSpecifier","overrides":[],"src":"5562:8:13"},"parameters":{"id":2308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2303,"mutability":"mutable","name":"from","nameLocation":"5491:4:13","nodeType":"VariableDeclaration","scope":2327,"src":"5483:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2302,"name":"address","nodeType":"ElementaryTypeName","src":"5483:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2305,"mutability":"mutable","name":"to","nameLocation":"5513:2:13","nodeType":"VariableDeclaration","scope":2327,"src":"5505:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2304,"name":"address","nodeType":"ElementaryTypeName","src":"5505:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2307,"mutability":"mutable","name":"tokenId","nameLocation":"5533:7:13","nodeType":"VariableDeclaration","scope":2327,"src":"5525:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2306,"name":"uint256","nodeType":"ElementaryTypeName","src":"5525:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5473:73:13"},"returnParameters":{"id":2310,"nodeType":"ParameterList","parameters":[],"src":"5571:0:13"},"scope":2856,"src":"5452:327:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[183],"body":{"id":2345,"nodeType":"Block","src":"5968:56:13","statements":[{"expression":{"arguments":[{"id":2339,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2330,"src":"5995:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2340,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2332,"src":"6001:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2341,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2334,"src":"6005:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6014:2:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2338,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2346,2376],"referencedDeclaration":2376,"src":"5978:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5978:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2344,"nodeType":"ExpressionStatement","src":"5978:39:13"}]},"documentation":{"id":2328,"nodeType":"StructuredDocumentation","src":"5785:55:13","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":2346,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5854:16:13","nodeType":"FunctionDefinition","overrides":{"id":2336,"nodeType":"OverrideSpecifier","overrides":[],"src":"5959:8:13"},"parameters":{"id":2335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2330,"mutability":"mutable","name":"from","nameLocation":"5888:4:13","nodeType":"VariableDeclaration","scope":2346,"src":"5880:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2329,"name":"address","nodeType":"ElementaryTypeName","src":"5880:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2332,"mutability":"mutable","name":"to","nameLocation":"5910:2:13","nodeType":"VariableDeclaration","scope":2346,"src":"5902:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2331,"name":"address","nodeType":"ElementaryTypeName","src":"5902:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2334,"mutability":"mutable","name":"tokenId","nameLocation":"5930:7:13","nodeType":"VariableDeclaration","scope":2346,"src":"5922:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2333,"name":"uint256","nodeType":"ElementaryTypeName","src":"5922:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5870:73:13"},"returnParameters":{"id":2337,"nodeType":"ParameterList","parameters":[],"src":"5968:0:13"},"scope":2856,"src":"5845:179:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[173],"body":{"id":2375,"nodeType":"Block","src":"6240:165:13","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2361,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"6277:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6277:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2363,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2353,"src":"6291:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2360,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"6258:18:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6258:41:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":2365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6301:48:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":2359,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6250:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6250:100:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2367,"nodeType":"ExpressionStatement","src":"6250:100:13"},{"expression":{"arguments":[{"id":2369,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"6374:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2370,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"6380:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2371,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2353,"src":"6384:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2372,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2355,"src":"6393:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2368,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2405,"src":"6360:13:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6360:38:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2374,"nodeType":"ExpressionStatement","src":"6360:38:13"}]},"documentation":{"id":2347,"nodeType":"StructuredDocumentation","src":"6030:55:13","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":2376,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"6099:16:13","nodeType":"FunctionDefinition","overrides":{"id":2357,"nodeType":"OverrideSpecifier","overrides":[],"src":"6231:8:13"},"parameters":{"id":2356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2349,"mutability":"mutable","name":"from","nameLocation":"6133:4:13","nodeType":"VariableDeclaration","scope":2376,"src":"6125:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2348,"name":"address","nodeType":"ElementaryTypeName","src":"6125:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2351,"mutability":"mutable","name":"to","nameLocation":"6155:2:13","nodeType":"VariableDeclaration","scope":2376,"src":"6147:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2350,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2353,"mutability":"mutable","name":"tokenId","nameLocation":"6175:7:13","nodeType":"VariableDeclaration","scope":2376,"src":"6167:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2352,"name":"uint256","nodeType":"ElementaryTypeName","src":"6167:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2355,"mutability":"mutable","name":"data","nameLocation":"6205:4:13","nodeType":"VariableDeclaration","scope":2376,"src":"6192:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2354,"name":"bytes","nodeType":"ElementaryTypeName","src":"6192:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6115:100:13"},"returnParameters":{"id":2358,"nodeType":"ParameterList","parameters":[],"src":"6240:0:13"},"scope":2856,"src":"6090:315:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2404,"nodeType":"Block","src":"7406:165:13","statements":[{"expression":{"arguments":[{"id":2389,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"7426:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2390,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2381,"src":"7432:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2391,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"7436:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2388,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"7416:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7416:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2393,"nodeType":"ExpressionStatement","src":"7416:28:13"},{"expression":{"arguments":[{"arguments":[{"id":2396,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"7485:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2397,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2381,"src":"7491:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2398,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2383,"src":"7495:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2399,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2385,"src":"7504:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2395,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2833,"src":"7462:22:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":2400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7462:47:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":2401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7511:52:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":2394,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7454:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7454:110:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2403,"nodeType":"ExpressionStatement","src":"7454:110:13"}]},"documentation":{"id":2377,"nodeType":"StructuredDocumentation","src":"6411:850:13","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":2405,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"7275:13:13","nodeType":"FunctionDefinition","parameters":{"id":2386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2379,"mutability":"mutable","name":"from","nameLocation":"7306:4:13","nodeType":"VariableDeclaration","scope":2405,"src":"7298:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2378,"name":"address","nodeType":"ElementaryTypeName","src":"7298:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2381,"mutability":"mutable","name":"to","nameLocation":"7328:2:13","nodeType":"VariableDeclaration","scope":2405,"src":"7320:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2380,"name":"address","nodeType":"ElementaryTypeName","src":"7320:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2383,"mutability":"mutable","name":"tokenId","nameLocation":"7348:7:13","nodeType":"VariableDeclaration","scope":2405,"src":"7340:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2382,"name":"uint256","nodeType":"ElementaryTypeName","src":"7340:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2385,"mutability":"mutable","name":"data","nameLocation":"7378:4:13","nodeType":"VariableDeclaration","scope":2405,"src":"7365:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2384,"name":"bytes","nodeType":"ElementaryTypeName","src":"7365:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7288:100:13"},"returnParameters":{"id":2387,"nodeType":"ParameterList","parameters":[],"src":"7406:0:13"},"scope":2856,"src":"7266:305:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2422,"nodeType":"Block","src":"7945:54:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2413,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2023,"src":"7962:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2415,"indexExpression":{"id":2414,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"7970:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7962:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7990:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7982:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2416,"name":"address","nodeType":"ElementaryTypeName","src":"7982:7:13","typeDescriptions":{}}},"id":2419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7982:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7962:30:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2412,"id":2421,"nodeType":"Return","src":"7955:37:13"}]},"documentation":{"id":2406,"nodeType":"StructuredDocumentation","src":"7577:292:13","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":2423,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7883:7:13","nodeType":"FunctionDefinition","parameters":{"id":2409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2408,"mutability":"mutable","name":"tokenId","nameLocation":"7899:7:13","nodeType":"VariableDeclaration","scope":2423,"src":"7891:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2407,"name":"uint256","nodeType":"ElementaryTypeName","src":"7891:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7890:17:13"},"returnParameters":{"id":2412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2423,"src":"7939:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2410,"name":"bool","nodeType":"ElementaryTypeName","src":"7939:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7938:6:13"},"scope":2856,"src":"7874:125:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2455,"nodeType":"Block","src":"8256:155:13","statements":[{"assignments":[2434],"declarations":[{"constant":false,"id":2434,"mutability":"mutable","name":"owner","nameLocation":"8274:5:13","nodeType":"VariableDeclaration","scope":2455,"src":"8266:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2433,"name":"address","nodeType":"ElementaryTypeName","src":"8266:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2438,"initialValue":{"arguments":[{"id":2436,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"8290:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2435,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"8282:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8282:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8266:32:13"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2439,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"8316:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2440,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"8327:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8316:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2443,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"8353:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2444,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"8360:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2442,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"8336:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8336:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8316:52:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2448,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"8384:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2447,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"8372:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8372:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2450,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"8396:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8372:31:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8316:87:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2453,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8315:89:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2432,"id":2454,"nodeType":"Return","src":"8308:96:13"}]},"documentation":{"id":2424,"nodeType":"StructuredDocumentation","src":"8005:147:13","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":2456,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"8166:18:13","nodeType":"FunctionDefinition","parameters":{"id":2429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2426,"mutability":"mutable","name":"spender","nameLocation":"8193:7:13","nodeType":"VariableDeclaration","scope":2456,"src":"8185:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2425,"name":"address","nodeType":"ElementaryTypeName","src":"8185:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2428,"mutability":"mutable","name":"tokenId","nameLocation":"8210:7:13","nodeType":"VariableDeclaration","scope":2456,"src":"8202:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2427,"name":"uint256","nodeType":"ElementaryTypeName","src":"8202:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8184:34:13"},"returnParameters":{"id":2432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2431,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2456,"src":"8250:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2430,"name":"bool","nodeType":"ElementaryTypeName","src":"8250:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8249:6:13"},"scope":2856,"src":"8157:254:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2470,"nodeType":"Block","src":"8806:43:13","statements":[{"expression":{"arguments":[{"id":2465,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"8826:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2466,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8830:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8839:2:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2464,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2471,2500],"referencedDeclaration":2500,"src":"8816:9:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8816:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2469,"nodeType":"ExpressionStatement","src":"8816:26:13"}]},"documentation":{"id":2457,"nodeType":"StructuredDocumentation","src":"8417:319:13","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":2471,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8750:9:13","nodeType":"FunctionDefinition","parameters":{"id":2462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2459,"mutability":"mutable","name":"to","nameLocation":"8768:2:13","nodeType":"VariableDeclaration","scope":2471,"src":"8760:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2458,"name":"address","nodeType":"ElementaryTypeName","src":"8760:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2461,"mutability":"mutable","name":"tokenId","nameLocation":"8780:7:13","nodeType":"VariableDeclaration","scope":2471,"src":"8772:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2460,"name":"uint256","nodeType":"ElementaryTypeName","src":"8772:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8759:29:13"},"returnParameters":{"id":2463,"nodeType":"ParameterList","parameters":[],"src":"8806:0:13"},"scope":2856,"src":"8741:108:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2499,"nodeType":"Block","src":"9184:195:13","statements":[{"expression":{"arguments":[{"id":2482,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"9200:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2483,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"9204:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2481,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2566,"src":"9194:5:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9194:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2485,"nodeType":"ExpressionStatement","src":"9194:18:13"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":2490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9266:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2488,"name":"address","nodeType":"ElementaryTypeName","src":"9266:7:13","typeDescriptions":{}}},"id":2491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9266:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2492,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"9278:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2493,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"9282:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2494,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2478,"src":"9291:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2487,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2833,"src":"9243:22:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9243:53:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":2496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9310:52:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":2486,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9222:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9222:150:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2498,"nodeType":"ExpressionStatement","src":"9222:150:13"}]},"documentation":{"id":2472,"nodeType":"StructuredDocumentation","src":"8855:210:13","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":2500,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"9079:9:13","nodeType":"FunctionDefinition","parameters":{"id":2479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2474,"mutability":"mutable","name":"to","nameLocation":"9106:2:13","nodeType":"VariableDeclaration","scope":2500,"src":"9098:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2473,"name":"address","nodeType":"ElementaryTypeName","src":"9098:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2476,"mutability":"mutable","name":"tokenId","nameLocation":"9126:7:13","nodeType":"VariableDeclaration","scope":2500,"src":"9118:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2475,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2478,"mutability":"mutable","name":"data","nameLocation":"9156:4:13","nodeType":"VariableDeclaration","scope":2500,"src":"9143:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2477,"name":"bytes","nodeType":"ElementaryTypeName","src":"9143:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9088:78:13"},"returnParameters":{"id":2480,"nodeType":"ParameterList","parameters":[],"src":"9184:0:13"},"scope":2856,"src":"9070:309:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2565,"nodeType":"Block","src":"9762:366:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2509,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"9780:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9794:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9786:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2510,"name":"address","nodeType":"ElementaryTypeName","src":"9786:7:13","typeDescriptions":{}}},"id":2513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9786:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9780:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":2515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9798:34:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":2508,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9772:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9772:61:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2517,"nodeType":"ExpressionStatement","src":"9772:61:13"},{"expression":{"arguments":[{"id":2522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9851:17:13","subExpression":{"arguments":[{"id":2520,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"9860:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2519,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2423,"src":"9852:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9852:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":2523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9870:30:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":2518,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9843:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9843:58:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2525,"nodeType":"ExpressionStatement","src":"9843:58:13"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9941:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9933:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2527,"name":"address","nodeType":"ElementaryTypeName","src":"9933:7:13","typeDescriptions":{}}},"id":2530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9933:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2531,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"9945:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2532,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"9949:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2526,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2844,"src":"9912:20:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9912:45:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2534,"nodeType":"ExpressionStatement","src":"9912:45:13"},{"expression":{"id":2539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2535,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"9968:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2537,"indexExpression":{"id":2536,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"9978:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9968:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9985:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9968:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2540,"nodeType":"ExpressionStatement","src":"9968:18:13"},{"expression":{"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2541,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2023,"src":"9996:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2543,"indexExpression":{"id":2542,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"10004:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9996:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2544,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"10015:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9996:21:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2546,"nodeType":"ExpressionStatement","src":"9996:21:13"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10050:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10042:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2548,"name":"address","nodeType":"ElementaryTypeName","src":"10042:7:13","typeDescriptions":{}}},"id":2551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10042:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2552,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"10054:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2553,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"10058:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2547,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"10033:8:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10033:33:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2555,"nodeType":"EmitStatement","src":"10028:38:13"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10105:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10097:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2557,"name":"address","nodeType":"ElementaryTypeName","src":"10097:7:13","typeDescriptions":{}}},"id":2560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10097:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2561,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"10109:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2562,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"10113:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2556,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"10077:19:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10077:44:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2564,"nodeType":"ExpressionStatement","src":"10077:44:13"}]},"documentation":{"id":2501,"nodeType":"StructuredDocumentation","src":"9385:311:13","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":2566,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9710:5:13","nodeType":"FunctionDefinition","parameters":{"id":2506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2503,"mutability":"mutable","name":"to","nameLocation":"9724:2:13","nodeType":"VariableDeclaration","scope":2566,"src":"9716:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2502,"name":"address","nodeType":"ElementaryTypeName","src":"9716:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2505,"mutability":"mutable","name":"tokenId","nameLocation":"9736:7:13","nodeType":"VariableDeclaration","scope":2566,"src":"9728:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2504,"name":"uint256","nodeType":"ElementaryTypeName","src":"9728:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9715:29:13"},"returnParameters":{"id":2507,"nodeType":"ParameterList","parameters":[],"src":"9762:0:13"},"scope":2856,"src":"9701:427:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2625,"nodeType":"Block","src":"10394:431:13","statements":[{"assignments":[2573],"declarations":[{"constant":false,"id":2573,"mutability":"mutable","name":"owner","nameLocation":"10412:5:13","nodeType":"VariableDeclaration","scope":2625,"src":"10404:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2572,"name":"address","nodeType":"ElementaryTypeName","src":"10404:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2577,"initialValue":{"arguments":[{"id":2575,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"10428:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2574,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"10420:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10420:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10404:32:13"},{"expression":{"arguments":[{"id":2579,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"10468:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10483:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10475:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2580,"name":"address","nodeType":"ElementaryTypeName","src":"10475:7:13","typeDescriptions":{}}},"id":2583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10475:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2584,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"10487:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2578,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2844,"src":"10447:20:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10447:48:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2586,"nodeType":"ExpressionStatement","src":"10447:48:13"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10542:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2588,"name":"address","nodeType":"ElementaryTypeName","src":"10542:7:13","typeDescriptions":{}}},"id":2591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10542:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2592,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"10554:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2587,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2723,"src":"10533:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10533:29:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2594,"nodeType":"ExpressionStatement","src":"10533:29:13"},{"expression":{"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2595,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"10573:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2597,"indexExpression":{"id":2596,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"10583:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10573:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10593:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10573:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2600,"nodeType":"ExpressionStatement","src":"10573:21:13"},{"expression":{"id":2605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2601,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2023,"src":"10676:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2603,"indexExpression":{"id":2602,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"10684:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10676:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2604,"name":"_NULL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"10695:13:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10676:32:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2606,"nodeType":"ExpressionStatement","src":"10676:32:13"},{"eventCall":{"arguments":[{"id":2608,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"10733:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10748:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10740:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2609,"name":"address","nodeType":"ElementaryTypeName","src":"10740:7:13","typeDescriptions":{}}},"id":2612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10740:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2613,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"10752:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2607,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"10724:8:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10724:36:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2615,"nodeType":"EmitStatement","src":"10719:41:13"},{"expression":{"arguments":[{"id":2617,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"10791:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10806:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10798:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2618,"name":"address","nodeType":"ElementaryTypeName","src":"10798:7:13","typeDescriptions":{}}},"id":2621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10798:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2622,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"10810:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2616,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"10771:19:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10771:47:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2624,"nodeType":"ExpressionStatement","src":"10771:47:13"}]},"documentation":{"id":2567,"nodeType":"StructuredDocumentation","src":"10134:206:13","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":2626,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10354:5:13","nodeType":"FunctionDefinition","parameters":{"id":2570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2569,"mutability":"mutable","name":"tokenId","nameLocation":"10368:7:13","nodeType":"VariableDeclaration","scope":2626,"src":"10360:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2568,"name":"uint256","nodeType":"ElementaryTypeName","src":"10360:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10359:17:13"},"returnParameters":{"id":2571,"nodeType":"ParameterList","parameters":[],"src":"10394:0:13"},"scope":2856,"src":"10345:480:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2699,"nodeType":"Block","src":"11258:489:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2638,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"11284:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2637,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"11276:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11276:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2640,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"11296:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11276:24:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":2642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11302:39:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":2636,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11268:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11268:74:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2644,"nodeType":"ExpressionStatement","src":"11268:74:13"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2646,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"11360:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11374:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11366:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2647,"name":"address","nodeType":"ElementaryTypeName","src":"11366:7:13","typeDescriptions":{}}},"id":2650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11366:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11360:16:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":2652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11378:38:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":2645,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11352:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11352:65:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2654,"nodeType":"ExpressionStatement","src":"11352:65:13"},{"expression":{"arguments":[{"id":2656,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"11449:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2657,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"11455:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2658,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"11459:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2655,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2844,"src":"11428:20:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11428:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2660,"nodeType":"ExpressionStatement","src":"11428:39:13"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11546:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11538:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2662,"name":"address","nodeType":"ElementaryTypeName","src":"11538:7:13","typeDescriptions":{}}},"id":2665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11538:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2666,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"11550:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2661,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2723,"src":"11529:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11529:29:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2668,"nodeType":"ExpressionStatement","src":"11529:29:13"},{"expression":{"id":2673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2669,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"11569:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2671,"indexExpression":{"id":2670,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"11579:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11569:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11588:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11569:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2674,"nodeType":"ExpressionStatement","src":"11569:20:13"},{"expression":{"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2675,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"11599:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2677,"indexExpression":{"id":2676,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"11609:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11599:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11616:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11599:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2680,"nodeType":"ExpressionStatement","src":"11599:18:13"},{"expression":{"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2681,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2023,"src":"11627:7:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2683,"indexExpression":{"id":2682,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"11635:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11627:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2684,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"11646:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11627:21:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2686,"nodeType":"ExpressionStatement","src":"11627:21:13"},{"eventCall":{"arguments":[{"id":2688,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"11673:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2689,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"11679:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2690,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"11683:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2687,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"11664:8:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11664:27:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2692,"nodeType":"EmitStatement","src":"11659:32:13"},{"expression":{"arguments":[{"id":2694,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"11722:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2695,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"11728:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2696,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"11732:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2693,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"11702:19:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11702:38:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2698,"nodeType":"ExpressionStatement","src":"11702:38:13"}]},"documentation":{"id":2627,"nodeType":"StructuredDocumentation","src":"10831:313:13","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":2700,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11158:9:13","nodeType":"FunctionDefinition","parameters":{"id":2634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2629,"mutability":"mutable","name":"from","nameLocation":"11185:4:13","nodeType":"VariableDeclaration","scope":2700,"src":"11177:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2628,"name":"address","nodeType":"ElementaryTypeName","src":"11177:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"to","nameLocation":"11207:2:13","nodeType":"VariableDeclaration","scope":2700,"src":"11199:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2630,"name":"address","nodeType":"ElementaryTypeName","src":"11199:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2633,"mutability":"mutable","name":"tokenId","nameLocation":"11227:7:13","nodeType":"VariableDeclaration","scope":2700,"src":"11219:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2632,"name":"uint256","nodeType":"ElementaryTypeName","src":"11219:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11167:73:13"},"returnParameters":{"id":2635,"nodeType":"ParameterList","parameters":[],"src":"11258:0:13"},"scope":2856,"src":"11149:598:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2722,"nodeType":"Block","src":"11923:100:13","statements":[{"expression":{"id":2712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2708,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"11933:15:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2710,"indexExpression":{"id":2709,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"11949:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11933:24:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2711,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"11960:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11933:29:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2713,"nodeType":"ExpressionStatement","src":"11933:29:13"},{"eventCall":{"arguments":[{"arguments":[{"id":2716,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"11994:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2715,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"11986:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11986:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2718,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"12004:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2719,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"12008:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2714,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"11977:8:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11977:39:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2721,"nodeType":"EmitStatement","src":"11972:44:13"}]},"documentation":{"id":2701,"nodeType":"StructuredDocumentation","src":"11753:101:13","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":2723,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"11868:8:13","nodeType":"FunctionDefinition","parameters":{"id":2706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2703,"mutability":"mutable","name":"to","nameLocation":"11885:2:13","nodeType":"VariableDeclaration","scope":2723,"src":"11877:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2702,"name":"address","nodeType":"ElementaryTypeName","src":"11877:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2705,"mutability":"mutable","name":"tokenId","nameLocation":"11897:7:13","nodeType":"VariableDeclaration","scope":2723,"src":"11889:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2704,"name":"uint256","nodeType":"ElementaryTypeName","src":"11889:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11876:29:13"},"returnParameters":{"id":2707,"nodeType":"ParameterList","parameters":[],"src":"11923:0:13"},"scope":2856,"src":"11859:164:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2754,"nodeType":"Block","src":"12282:184:13","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2734,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2726,"src":"12300:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2735,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"12309:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12300:17:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":2737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12319:27:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":2733,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12292:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12292:55:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2739,"nodeType":"ExpressionStatement","src":"12292:55:13"},{"expression":{"id":2746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2740,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2037,"src":"12357:18:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2743,"indexExpression":{"id":2741,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2726,"src":"12376:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12357:25:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2744,"indexExpression":{"id":2742,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"12383:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12357:35:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2745,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"12395:8:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12357:46:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2747,"nodeType":"ExpressionStatement","src":"12357:46:13"},{"eventCall":{"arguments":[{"id":2749,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2726,"src":"12433:5:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2750,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"12440:8:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2751,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"12450:8:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2748,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"12418:14:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12418:41:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2753,"nodeType":"EmitStatement","src":"12413:46:13"}]},"documentation":{"id":2724,"nodeType":"StructuredDocumentation","src":"12029:125:13","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":2755,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"12168:18:13","nodeType":"FunctionDefinition","parameters":{"id":2731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2726,"mutability":"mutable","name":"owner","nameLocation":"12204:5:13","nodeType":"VariableDeclaration","scope":2755,"src":"12196:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2725,"name":"address","nodeType":"ElementaryTypeName","src":"12196:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2728,"mutability":"mutable","name":"operator","nameLocation":"12227:8:13","nodeType":"VariableDeclaration","scope":2755,"src":"12219:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2727,"name":"address","nodeType":"ElementaryTypeName","src":"12219:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2730,"mutability":"mutable","name":"approved","nameLocation":"12250:8:13","nodeType":"VariableDeclaration","scope":2755,"src":"12245:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2729,"name":"bool","nodeType":"ElementaryTypeName","src":"12245:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12186:78:13"},"returnParameters":{"id":2732,"nodeType":"ParameterList","parameters":[],"src":"12282:0:13"},"scope":2856,"src":"12159:307:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2768,"nodeType":"Block","src":"12613:70:13","statements":[{"expression":{"arguments":[{"arguments":[{"id":2763,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"12639:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2762,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2423,"src":"12631:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12631:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12649:26:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":2761,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12623:7:13","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12623:53:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2767,"nodeType":"ExpressionStatement","src":"12623:53:13"}]},"documentation":{"id":2756,"nodeType":"StructuredDocumentation","src":"12472:73:13","text":" @dev Reverts if the `tokenId` has not been minted yet."},"id":2769,"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"12559:14:13","nodeType":"FunctionDefinition","parameters":{"id":2759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2758,"mutability":"mutable","name":"tokenId","nameLocation":"12582:7:13","nodeType":"VariableDeclaration","scope":2769,"src":"12574:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2757,"name":"uint256","nodeType":"ElementaryTypeName","src":"12574:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12573:17:13"},"returnParameters":{"id":2760,"nodeType":"ParameterList","parameters":[],"src":"12613:0:13"},"scope":2856,"src":"12550:133:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2832,"nodeType":"Block","src":"13390:679:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2783,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"13404:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"13404:7:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13404:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13421:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13404:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2830,"nodeType":"Block","src":"14027:36:13","statements":[{"expression":{"hexValue":"74727565","id":2828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14048:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2782,"id":2829,"nodeType":"Return","src":"14041:11:13"}]},"id":2831,"nodeType":"IfStatement","src":"13400:663:13","trueBody":{"id":2827,"nodeType":"Block","src":"13424:597:13","statements":[{"clauses":[{"block":{"id":2807,"nodeType":"Block","src":"13538:91:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2801,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2799,"src":"13563:6:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":2802,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"13573:15:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$246_$","typeString":"type(contract IERC721Receiver)"}},"id":2803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":245,"src":"13573:32:13","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":2804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"13573:41:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"13563:51:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2782,"id":2806,"nodeType":"Return","src":"13556:58:13"}]},"errorName":"","id":2808,"nodeType":"TryCatchClause","parameters":{"id":2800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2799,"mutability":"mutable","name":"retval","nameLocation":"13530:6:13","nodeType":"VariableDeclaration","scope":2808,"src":"13523:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2798,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13523:6:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"13522:15:13"},"src":"13514:115:13"},{"block":{"id":2824,"nodeType":"Block","src":"13658:353:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2812,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"13680:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13680:13:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13697:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13680:18:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2822,"nodeType":"Block","src":"13807:190:13","statements":[{"AST":{"nodeType":"YulBlock","src":"13893:86:13","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13930:2:13","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"13934:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13926:3:13"},"nodeType":"YulFunctionCall","src":"13926:15:13"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"13949:6:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13943:5:13"},"nodeType":"YulFunctionCall","src":"13943:13:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13919:6:13"},"nodeType":"YulFunctionCall","src":"13919:38:13"},"nodeType":"YulExpressionStatement","src":"13919:38:13"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2810,"isOffset":false,"isSlot":false,"src":"13934:6:13","valueSize":1},{"declaration":2810,"isOffset":false,"isSlot":false,"src":"13949:6:13","valueSize":1}],"id":2821,"nodeType":"InlineAssembly","src":"13884:95:13"}]},"id":2823,"nodeType":"IfStatement","src":"13676:321:13","trueBody":{"id":2820,"nodeType":"Block","src":"13700:101:13","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":2817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13729:52:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":2816,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"13722:6:13","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13722:60:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2819,"nodeType":"ExpressionStatement","src":"13722:60:13"}]}}]},"errorName":"","id":2825,"nodeType":"TryCatchClause","parameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"reason","nameLocation":"13650:6:13","nodeType":"VariableDeclaration","scope":2825,"src":"13637:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2809,"name":"bytes","nodeType":"ElementaryTypeName","src":"13637:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13636:21:13"},"src":"13630:381:13"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2792,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"13479:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13479:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2794,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2772,"src":"13493:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2795,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2776,"src":"13499:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2796,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"13508:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2789,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2774,"src":"13458:2:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2788,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"13442:15:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$246_$","typeString":"type(contract IERC721Receiver)"}},"id":2790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13442:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$246","typeString":"contract IERC721Receiver"}},"id":2791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":245,"src":"13442:36:13","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13442:71:13","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":2826,"nodeType":"TryStatement","src":"13438:573:13"}]}}]},"documentation":{"id":2770,"nodeType":"StructuredDocumentation","src":"12689:541:13","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":2833,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"13244:22:13","nodeType":"FunctionDefinition","parameters":{"id":2779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2772,"mutability":"mutable","name":"from","nameLocation":"13284:4:13","nodeType":"VariableDeclaration","scope":2833,"src":"13276:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2771,"name":"address","nodeType":"ElementaryTypeName","src":"13276:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2774,"mutability":"mutable","name":"to","nameLocation":"13306:2:13","nodeType":"VariableDeclaration","scope":2833,"src":"13298:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2773,"name":"address","nodeType":"ElementaryTypeName","src":"13298:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2776,"mutability":"mutable","name":"tokenId","nameLocation":"13326:7:13","nodeType":"VariableDeclaration","scope":2833,"src":"13318:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2775,"name":"uint256","nodeType":"ElementaryTypeName","src":"13318:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2778,"mutability":"mutable","name":"data","nameLocation":"13356:4:13","nodeType":"VariableDeclaration","scope":2833,"src":"13343:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2777,"name":"bytes","nodeType":"ElementaryTypeName","src":"13343:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13266:100:13"},"returnParameters":{"id":2782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2833,"src":"13384:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2780,"name":"bool","nodeType":"ElementaryTypeName","src":"13384:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13383:6:13"},"scope":2856,"src":"13235:834:13","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":2843,"nodeType":"Block","src":"14745:2:13","statements":[]},"documentation":{"id":2834,"nodeType":"StructuredDocumentation","src":"14075:545:13","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":2844,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"14634:20:13","nodeType":"FunctionDefinition","parameters":{"id":2841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2836,"mutability":"mutable","name":"from","nameLocation":"14672:4:13","nodeType":"VariableDeclaration","scope":2844,"src":"14664:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2835,"name":"address","nodeType":"ElementaryTypeName","src":"14664:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2838,"mutability":"mutable","name":"to","nameLocation":"14694:2:13","nodeType":"VariableDeclaration","scope":2844,"src":"14686:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2837,"name":"address","nodeType":"ElementaryTypeName","src":"14686:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2840,"mutability":"mutable","name":"tokenId","nameLocation":"14714:7:13","nodeType":"VariableDeclaration","scope":2844,"src":"14706:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2839,"name":"uint256","nodeType":"ElementaryTypeName","src":"14706:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14654:73:13"},"returnParameters":{"id":2842,"nodeType":"ParameterList","parameters":[],"src":"14745:0:13"},"scope":2856,"src":"14625:122:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2854,"nodeType":"Block","src":"15238:2:13","statements":[]},"documentation":{"id":2845,"nodeType":"StructuredDocumentation","src":"14753:361:13","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":2855,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"15128:19:13","nodeType":"FunctionDefinition","parameters":{"id":2852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2847,"mutability":"mutable","name":"from","nameLocation":"15165:4:13","nodeType":"VariableDeclaration","scope":2855,"src":"15157:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2846,"name":"address","nodeType":"ElementaryTypeName","src":"15157:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2849,"mutability":"mutable","name":"to","nameLocation":"15187:2:13","nodeType":"VariableDeclaration","scope":2855,"src":"15179:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2848,"name":"address","nodeType":"ElementaryTypeName","src":"15179:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2851,"mutability":"mutable","name":"tokenId","nameLocation":"15207:7:13","nodeType":"VariableDeclaration","scope":2855,"src":"15199:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2850,"name":"uint256","nodeType":"ElementaryTypeName","src":"15199:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15147:73:13"},"returnParameters":{"id":2853,"nodeType":"ParameterList","parameters":[],"src":"15238:0:13"},"scope":2856,"src":"15119:121:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":2857,"src":"1382:13860:13","usedErrors":[]}],"src":"302:14941:13"},"id":13},"contracts/lib/ERC721iEnumerable.sol":{"ast":{"absolutePath":"contracts/lib/ERC721iEnumerable.sol","exportedSymbols":{"Address":[634],"Context":[656],"ERC165":[909],"ERC721":[2856],"ERC721iEnumerable":[3215],"IERC165":[921],"IERC721":[228],"IERC721Enumerable":[277],"IERC721Metadata":[304],"IERC721Receiver":[246],"Math":[1787],"SignedMath":[1892],"Strings":[885]},"id":3216,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2858,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"309:23:14"},{"absolutePath":"contracts/lib/ERC721.sol","file":"./ERC721.sol","id":2859,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3216,"sourceUnit":2857,"src":"334:22:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","id":2860,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3216,"sourceUnit":278,"src":"357:79:14","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2862,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":2856,"src":"1104:6:14"},"id":2863,"nodeType":"InheritanceSpecifier","src":"1104:6:14"},{"baseName":{"id":2864,"name":"IERC721Enumerable","nodeType":"IdentifierPath","referencedDeclaration":277,"src":"1112:17:14"},"id":2865,"nodeType":"InheritanceSpecifier","src":"1112:17:14"}],"canonicalName":"ERC721iEnumerable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2861,"nodeType":"StructuredDocumentation","src":"438:626:14","text":" @dev This implements an optional extension of {ERC721} defined in the EIP that adds\n enumerability of all the token ids in the contract as well as all token ids owned by each\n account.\n @dev This implementation also includes support for pre-minting a max-supply of tokens up-front.\n Note on pre-mint:\n Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs.\n For this reason, the \"allTokens\" state vars are unneccesary and have been removed.\n Also defines 2 light-weight state vars: \"_preMintReceiver\" & \"_maxSupply\"\n Overrides \"ownerOf\" & \"_exists\""},"fullyImplemented":false,"id":3215,"linearizedBaseContracts":[3215,277,2856,304,228,909,921,656],"name":"ERC721iEnumerable","nameLocation":"1083:17:14","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":2871,"mutability":"mutable","name":"_ownedTokens","nameLocation":"1241:12:14","nodeType":"VariableDeclaration","scope":3215,"src":"1185:68:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":2870,"keyType":{"id":2866,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:47:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":2869,"keyType":{"id":2867,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1204:27:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":2868,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":2875,"mutability":"mutable","name":"_ownedTokensIndex","nameLocation":"1355:17:14","nodeType":"VariableDeclaration","scope":3215,"src":"1319:53:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":2874,"keyType":{"id":2872,"name":"uint256","nodeType":"ElementaryTypeName","src":"1327:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1319:27:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":2873,"name":"uint256","nodeType":"ElementaryTypeName","src":"1338:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":2877,"mutability":"mutable","name":"_preMintReceiver","nameLocation":"1434:16:14","nodeType":"VariableDeclaration","scope":3215,"src":"1417:33:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2876,"name":"address","nodeType":"ElementaryTypeName","src":"1417:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2879,"mutability":"mutable","name":"_maxSupply","nameLocation":"1501:10:14","nodeType":"VariableDeclaration","scope":3215,"src":"1484:27:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2878,"name":"uint256","nodeType":"ElementaryTypeName","src":"1484:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"baseFunctions":[920,2085],"body":{"id":2902,"nodeType":"Block","src":"1788:108:14","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2890,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2882,"src":"1801:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2892,"name":"IERC721Enumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":277,"src":"1821:17:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Enumerable_$277_$","typeString":"type(contract IERC721Enumerable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Enumerable_$277_$","typeString":"type(contract IERC721Enumerable)"}],"id":2891,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1816:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1816:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Enumerable_$277","typeString":"type(contract IERC721Enumerable)"}},"id":2894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"1816:35:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1801:50:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2898,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2882,"src":"1879:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":2896,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1855:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721iEnumerable_$3215_$","typeString":"type(contract super ERC721iEnumerable)"}},"id":2897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2085,"src":"1855:23:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":2899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1855:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1801:90:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2889,"id":2901,"nodeType":"Return","src":"1794:97:14"}]},"documentation":{"id":2880,"nodeType":"StructuredDocumentation","src":"1516:161:14","text":" @dev See {IERC165-supportsInterface}.\n Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable"},"functionSelector":"01ffc9a7","id":2903,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1689:17:14","nodeType":"FunctionDefinition","overrides":{"id":2886,"nodeType":"OverrideSpecifier","overrides":[{"id":2884,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":921,"src":"1756:7:14"},{"id":2885,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":2856,"src":"1765:6:14"}],"src":"1747:25:14"},"parameters":{"id":2883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2882,"mutability":"mutable","name":"interfaceId","nameLocation":"1714:11:14","nodeType":"VariableDeclaration","scope":2903,"src":"1707:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2881,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1707:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1706:20:14"},"returnParameters":{"id":2889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2888,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2903,"src":"1782:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2887,"name":"bool","nodeType":"ElementaryTypeName","src":"1782:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1781:6:14"},"scope":3215,"src":"1680:216:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[268],"body":{"id":2982,"nodeType":"Block","src":"2115:468:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2915,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"2129:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"id":2918,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2154:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2916,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"2137:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2856_$","typeString":"type(contract ERC721)"}},"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2109,"src":"2137:16:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":2919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2137:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2129:31:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e6473","id":2921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2162:45:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","typeString":"literal_string \"ERC721Enumerable: owner index out of bounds\""},"value":"ERC721Enumerable: owner index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","typeString":"literal_string \"ERC721Enumerable: owner index out of bounds\""}],"id":2914,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2121:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2121:87:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2923,"nodeType":"ExpressionStatement","src":"2121:87:14"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2924,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2218:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":2927,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"2235:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2227:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2925,"name":"address","nodeType":"ElementaryTypeName","src":"2227:7:14","typeDescriptions":{}}},"id":2928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2227:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2218:34:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2975,"nodeType":"IfStatement","src":"2214:326:14","trueBody":{"id":2974,"nodeType":"Block","src":"2254:286:14","statements":[{"assignments":[2931],"declarations":[{"constant":false,"id":2931,"mutability":"mutable","name":"supply","nameLocation":"2270:6:14","nodeType":"VariableDeclaration","scope":2974,"src":"2262:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2930,"name":"uint256","nodeType":"ElementaryTypeName","src":"2262:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2934,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2932,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"2279:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2279:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2262:30:14"},{"assignments":[2936],"declarations":[{"constant":false,"id":2936,"mutability":"mutable","name":"matched","nameLocation":"2308:7:14","nodeType":"VariableDeclaration","scope":2974,"src":"2300:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2935,"name":"uint256","nodeType":"ElementaryTypeName","src":"2300:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2938,"initialValue":{"hexValue":"30","id":2937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2318:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2300:19:14"},{"body":{"id":2972,"nodeType":"Block","src":"2364:170:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2950,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2940,"src":"2386:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2949,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[3056],"referencedDeclaration":3056,"src":"2378:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2378:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":2954,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"2400:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2392:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2952,"name":"address","nodeType":"ElementaryTypeName","src":"2392:7:14","typeDescriptions":{}}},"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2392:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2378:39:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2971,"nodeType":"IfStatement","src":"2374:152:14","trueBody":{"id":2970,"nodeType":"Block","src":"2419:107:14","statements":[{"expression":{"id":2959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2957,"name":"matched","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2936,"src":"2431:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2442:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2431:12:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2960,"nodeType":"ExpressionStatement","src":"2431:12:14"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2961,"name":"matched","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2936,"src":"2459:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2469:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2459:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2964,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"2474:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2459:20:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2969,"nodeType":"IfStatement","src":"2455:61:14","trueBody":{"id":2968,"nodeType":"Block","src":"2481:35:14","statements":[{"expression":{"id":2966,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2940,"src":"2502:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2913,"id":2967,"nodeType":"Return","src":"2495:8:14"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2943,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2940,"src":"2347:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2944,"name":"supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2931,"src":"2351:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2347:10:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2973,"initializationExpression":{"assignments":[2940],"declarations":[{"constant":false,"id":2940,"mutability":"mutable","name":"i","nameLocation":"2340:1:14","nodeType":"VariableDeclaration","scope":2973,"src":"2332:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2939,"name":"uint256","nodeType":"ElementaryTypeName","src":"2332:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2942,"initialValue":{"hexValue":"31","id":2941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2344:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"2332:13:14"},"loopExpression":{"expression":{"id":2947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2359:3:14","subExpression":{"id":2946,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2940,"src":"2359:1:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2948,"nodeType":"ExpressionStatement","src":"2359:3:14"},"nodeType":"ForStatement","src":"2327:207:14"}]}},{"expression":{"baseExpression":{"baseExpression":{"id":2976,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"2552:12:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":2978,"indexExpression":{"id":2977,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2565:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2552:19:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":2980,"indexExpression":{"id":2979,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"2572:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2552:26:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2913,"id":2981,"nodeType":"Return","src":"2545:33:14"}]},"documentation":{"id":2904,"nodeType":"StructuredDocumentation","src":"1900:106:14","text":" @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n note: Fix contributed by surfer77"},"functionSelector":"2f745c59","id":2983,"implemented":true,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"2018:19:14","nodeType":"FunctionDefinition","overrides":{"id":2910,"nodeType":"OverrideSpecifier","overrides":[],"src":"2088:8:14"},"parameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2906,"mutability":"mutable","name":"owner","nameLocation":"2046:5:14","nodeType":"VariableDeclaration","scope":2983,"src":"2038:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2905,"name":"address","nodeType":"ElementaryTypeName","src":"2038:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"index","nameLocation":"2061:5:14","nodeType":"VariableDeclaration","scope":2983,"src":"2053:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2907,"name":"uint256","nodeType":"ElementaryTypeName","src":"2053:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2037:30:14"},"returnParameters":{"id":2913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2912,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2983,"src":"2106:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2911,"name":"uint256","nodeType":"ElementaryTypeName","src":"2106:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2105:9:14"},"scope":3215,"src":"2009:574:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[258],"body":{"id":2992,"nodeType":"Block","src":"2718:77:14","statements":[{"expression":{"id":2990,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"2780:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2989,"id":2991,"nodeType":"Return","src":"2773:17:14"}]},"documentation":{"id":2984,"nodeType":"StructuredDocumentation","src":"2587:58:14","text":" @dev See {IERC721Enumerable-totalSupply}."},"functionSelector":"18160ddd","id":2993,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2657:11:14","nodeType":"FunctionDefinition","overrides":{"id":2986,"nodeType":"OverrideSpecifier","overrides":[],"src":"2691:8:14"},"parameters":{"id":2985,"nodeType":"ParameterList","parameters":[],"src":"2668:2:14"},"returnParameters":{"id":2989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2988,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2993,"src":"2709:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2987,"name":"uint256","nodeType":"ElementaryTypeName","src":"2709:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2708:9:14"},"scope":3215,"src":"2648:147:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[276],"body":{"id":3013,"nodeType":"Block","src":"2945:181:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3003,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2996,"src":"2959:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3004,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"2967:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2959:18:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473","id":3006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2979:46:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","typeString":"literal_string \"ERC721Enumerable: global index out of bounds\""},"value":"ERC721Enumerable: global index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","typeString":"literal_string \"ERC721Enumerable: global index out of bounds\""}],"id":3002,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2951:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2951:75:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3008,"nodeType":"ExpressionStatement","src":"2951:75:14"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3009,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2996,"src":"3112:5:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3120:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3112:9:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3001,"id":3012,"nodeType":"Return","src":"3105:16:14"}]},"documentation":{"id":2994,"nodeType":"StructuredDocumentation","src":"2799:59:14","text":" @dev See {IERC721Enumerable-tokenByIndex}."},"functionSelector":"4f6ccce7","id":3014,"implemented":true,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"2870:12:14","nodeType":"FunctionDefinition","overrides":{"id":2998,"nodeType":"OverrideSpecifier","overrides":[],"src":"2918:8:14"},"parameters":{"id":2997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2996,"mutability":"mutable","name":"index","nameLocation":"2891:5:14","nodeType":"VariableDeclaration","scope":3014,"src":"2883:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2995,"name":"uint256","nodeType":"ElementaryTypeName","src":"2883:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2882:15:14"},"returnParameters":{"id":3001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3014,"src":"2936:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2999,"name":"uint256","nodeType":"ElementaryTypeName","src":"2936:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2935:9:14"},"scope":3215,"src":"2861:265:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[161,2137],"body":{"id":3055,"nodeType":"Block","src":"3329:576:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3025,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3017,"src":"3416:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3026,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"3426:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3416:20:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3034,"nodeType":"IfStatement","src":"3412:70:14","trueBody":{"id":3033,"nodeType":"Block","src":"3438:44:14","statements":[{"expression":{"arguments":[{"id":3030,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3017,"src":"3467:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3028,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3453:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721iEnumerable_$3215_$","typeString":"type(contract super ERC721iEnumerable)"}},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":2137,"src":"3453:13:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":3031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3453:22:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3024,"id":3032,"nodeType":"Return","src":"3446:29:14"}]}},{"assignments":[3036],"declarations":[{"constant":false,"id":3036,"mutability":"mutable","name":"owner_","nameLocation":"3785:6:14","nodeType":"VariableDeclaration","scope":3055,"src":"3777:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3035,"name":"address","nodeType":"ElementaryTypeName","src":"3777:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3040,"initialValue":{"baseExpression":{"id":3037,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2023,"src":"3794:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":3039,"indexExpression":{"id":3038,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3017,"src":"3802:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3794:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3777:33:14"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3041,"name":"owner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"3820:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3838:1:14","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":3043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3830:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3042,"name":"address","nodeType":"ElementaryTypeName","src":"3830:7:14","typeDescriptions":{}}},"id":3045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3830:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3820:20:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3052,"nodeType":"IfStatement","src":"3816:66:14","trueBody":{"id":3051,"nodeType":"Block","src":"3842:40:14","statements":[{"expression":{"id":3049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3047,"name":"owner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"3850:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3048,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"3859:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3850:25:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3050,"nodeType":"ExpressionStatement","src":"3850:25:14"}]}},{"expression":{"id":3053,"name":"owner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"3894:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3024,"id":3054,"nodeType":"Return","src":"3887:13:14"}]},"documentation":{"id":3015,"nodeType":"StructuredDocumentation","src":"3130:98:14","text":" @dev Override the ERC721 \"ownerOf\" function to account for the Pre-Mint Receiver."},"functionSelector":"6352211e","id":3056,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"3240:7:14","nodeType":"FunctionDefinition","overrides":{"id":3021,"nodeType":"OverrideSpecifier","overrides":[{"id":3019,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":228,"src":"3294:7:14"},{"id":3020,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":2856,"src":"3303:6:14"}],"src":"3285:25:14"},"parameters":{"id":3018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3017,"mutability":"mutable","name":"tokenId","nameLocation":"3256:7:14","nodeType":"VariableDeclaration","scope":3056,"src":"3248:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3016,"name":"uint256","nodeType":"ElementaryTypeName","src":"3248:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3247:17:14"},"returnParameters":{"id":3024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3056,"src":"3320:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3022,"name":"address","nodeType":"ElementaryTypeName","src":"3320:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3319:9:14"},"scope":3215,"src":"3231:674:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2423],"body":{"id":3085,"nodeType":"Block","src":"4102:285:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3066,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3059,"src":"4189:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3067,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"4199:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4189:20:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3075,"nodeType":"IfStatement","src":"4185:70:14","trueBody":{"id":3074,"nodeType":"Block","src":"4211:44:14","statements":[{"expression":{"arguments":[{"id":3071,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3059,"src":"4240:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3069,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4226:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721iEnumerable_$3215_$","typeString":"type(contract super ERC721iEnumerable)"}},"id":3070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_exists","nodeType":"MemberAccess","referencedDeclaration":2423,"src":"4226:13:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4226:22:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3065,"id":3073,"nodeType":"Return","src":"4219:29:14"}]}},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3076,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3059,"src":"4345:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4355:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4345:11:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3079,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3059,"src":"4360:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3080,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"4371:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4360:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4345:36:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3083,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4344:38:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3065,"id":3084,"nodeType":"Return","src":"4337:45:14"}]},"documentation":{"id":3057,"nodeType":"StructuredDocumentation","src":"3909:102:14","text":" @dev Override the ERC721 \"_exists\" function to account for the Pre-Minted Max-Supply."},"id":3086,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"4023:7:14","nodeType":"FunctionDefinition","overrides":{"id":3062,"nodeType":"OverrideSpecifier","overrides":[{"id":3061,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":2856,"src":"4079:6:14"}],"src":"4070:16:14"},"parameters":{"id":3060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3059,"mutability":"mutable","name":"tokenId","nameLocation":"4039:7:14","nodeType":"VariableDeclaration","scope":3086,"src":"4031:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3058,"name":"uint256","nodeType":"ElementaryTypeName","src":"4031:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4030:17:14"},"returnParameters":{"id":3065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3086,"src":"4096:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3063,"name":"bool","nodeType":"ElementaryTypeName","src":"4096:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4095:6:14"},"scope":3215,"src":"4014:373:14","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[2844],"body":{"id":3120,"nodeType":"Block","src":"4576:188:14","statements":[{"expression":{"arguments":[{"id":3100,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3089,"src":"4609:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3101,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3091,"src":"4615:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3102,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"4619:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3097,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4582:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721iEnumerable_$3215_$","typeString":"type(contract super ERC721iEnumerable)"}},"id":3099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_beforeTokenTransfer","nodeType":"MemberAccess","referencedDeclaration":2844,"src":"4582:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4582:45:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3104,"nodeType":"ExpressionStatement","src":"4582:45:14"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3105,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3089,"src":"4638:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3106,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3091,"src":"4646:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4638:10:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3119,"nodeType":"IfStatement","src":"4634:126:14","trueBody":{"id":3118,"nodeType":"Block","src":"4650:110:14","statements":[{"expression":{"arguments":[{"id":3109,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3089,"src":"4691:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3110,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"4697:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3108,"name":"_removeTokenFromOwnerEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"4658:32:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4658:47:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3112,"nodeType":"ExpressionStatement","src":"4658:47:14"},{"expression":{"arguments":[{"id":3114,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3091,"src":"4741:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3115,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3093,"src":"4745:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3113,"name":"_addTokenToOwnerEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3151,"src":"4713:27:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4713:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3117,"nodeType":"ExpressionStatement","src":"4713:40:14"}]}}]},"documentation":{"id":3087,"nodeType":"StructuredDocumentation","src":"4391:67:14","text":" @dev See {IERC721Enumerable-_beforeTokenTransfer}."},"id":3121,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"4470:20:14","nodeType":"FunctionDefinition","overrides":{"id":3095,"nodeType":"OverrideSpecifier","overrides":[],"src":"4567:8:14"},"parameters":{"id":3094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3089,"mutability":"mutable","name":"from","nameLocation":"4504:4:14","nodeType":"VariableDeclaration","scope":3121,"src":"4496:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3088,"name":"address","nodeType":"ElementaryTypeName","src":"4496:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3091,"mutability":"mutable","name":"to","nameLocation":"4522:2:14","nodeType":"VariableDeclaration","scope":3121,"src":"4514:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3090,"name":"address","nodeType":"ElementaryTypeName","src":"4514:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3093,"mutability":"mutable","name":"tokenId","nameLocation":"4538:7:14","nodeType":"VariableDeclaration","scope":3121,"src":"4530:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3092,"name":"uint256","nodeType":"ElementaryTypeName","src":"4530:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4490:59:14"},"returnParameters":{"id":3096,"nodeType":"ParameterList","parameters":[],"src":"4576:0:14"},"scope":3215,"src":"4461:303:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3150,"nodeType":"Block","src":"4919:129:14","statements":[{"assignments":[3130],"declarations":[{"constant":false,"id":3130,"mutability":"mutable","name":"length","nameLocation":"4933:6:14","nodeType":"VariableDeclaration","scope":3150,"src":"4925:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3129,"name":"uint256","nodeType":"ElementaryTypeName","src":"4925:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3135,"initialValue":{"arguments":[{"id":3133,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"4959:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3131,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"4942:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2856_$","typeString":"type(contract ERC721)"}},"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2109,"src":"4942:16:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4942:20:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4925:37:14"},{"expression":{"id":3142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":3136,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"4968:12:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":3139,"indexExpression":{"id":3137,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3124,"src":"4981:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4968:16:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3140,"indexExpression":{"id":3138,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3130,"src":"4985:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4968:24:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3141,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3126,"src":"4995:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4968:34:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3143,"nodeType":"ExpressionStatement","src":"4968:34:14"},{"expression":{"id":3148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3144,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2875,"src":"5008:17:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3146,"indexExpression":{"id":3145,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3126,"src":"5026:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5008:26:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3147,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3130,"src":"5037:6:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5008:35:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3149,"nodeType":"ExpressionStatement","src":"5008:35:14"}]},"documentation":{"id":3122,"nodeType":"StructuredDocumentation","src":"4768:74:14","text":" @dev See {IERC721Enumerable-_addTokenToOwnerEnumeration}."},"id":3151,"implemented":true,"kind":"function","modifiers":[],"name":"_addTokenToOwnerEnumeration","nameLocation":"4854:27:14","nodeType":"FunctionDefinition","parameters":{"id":3127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3124,"mutability":"mutable","name":"to","nameLocation":"4890:2:14","nodeType":"VariableDeclaration","scope":3151,"src":"4882:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3123,"name":"address","nodeType":"ElementaryTypeName","src":"4882:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3126,"mutability":"mutable","name":"tokenId","nameLocation":"4902:7:14","nodeType":"VariableDeclaration","scope":3151,"src":"4894:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3125,"name":"uint256","nodeType":"ElementaryTypeName","src":"4894:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4881:29:14"},"returnParameters":{"id":3128,"nodeType":"ParameterList","parameters":[],"src":"4919:0:14"},"scope":3215,"src":"4845:203:14","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":3213,"nodeType":"Block","src":"5215:829:14","statements":[{"assignments":[3160],"declarations":[{"constant":false,"id":3160,"mutability":"mutable","name":"lastTokenIndex","nameLocation":"5392:14:14","nodeType":"VariableDeclaration","scope":3213,"src":"5384:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3159,"name":"uint256","nodeType":"ElementaryTypeName","src":"5384:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3167,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3163,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"5426:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3161,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"5409:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$2856_$","typeString":"type(contract ERC721)"}},"id":3162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2109,"src":"5409:16:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5409:22:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5434:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5409:26:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5384:51:14"},{"assignments":[3169],"declarations":[{"constant":false,"id":3169,"mutability":"mutable","name":"tokenIndex","nameLocation":"5449:10:14","nodeType":"VariableDeclaration","scope":3213,"src":"5441:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3168,"name":"uint256","nodeType":"ElementaryTypeName","src":"5441:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3173,"initialValue":{"baseExpression":{"id":3170,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2875,"src":"5462:17:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3172,"indexExpression":{"id":3171,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"5480:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5462:26:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5441:47:14"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3174,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3169,"src":"5584:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3175,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3160,"src":"5598:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5584:28:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3200,"nodeType":"IfStatement","src":"5580:301:14","trueBody":{"id":3199,"nodeType":"Block","src":"5614:267:14","statements":[{"assignments":[3178],"declarations":[{"constant":false,"id":3178,"mutability":"mutable","name":"lastTokenId","nameLocation":"5630:11:14","nodeType":"VariableDeclaration","scope":3199,"src":"5622:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3177,"name":"uint256","nodeType":"ElementaryTypeName","src":"5622:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3184,"initialValue":{"baseExpression":{"baseExpression":{"id":3179,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"5644:12:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":3181,"indexExpression":{"id":3180,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"5657:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5644:18:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3183,"indexExpression":{"id":3182,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3160,"src":"5663:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5644:34:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5622:56:14"},{"expression":{"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":3185,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"5687:12:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":3188,"indexExpression":{"id":3186,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"5700:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5687:18:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3189,"indexExpression":{"id":3187,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3169,"src":"5706:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5687:30:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3190,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"5720:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5687:44:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3192,"nodeType":"ExpressionStatement","src":"5687:44:14"},{"expression":{"id":3197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3193,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2875,"src":"5797:17:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3195,"indexExpression":{"id":3194,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"5815:11:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5797:30:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3196,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3169,"src":"5830:10:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5797:43:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3198,"nodeType":"ExpressionStatement","src":"5797:43:14"}]}},{"expression":{"id":3204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5959:33:14","subExpression":{"baseExpression":{"id":3201,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2875,"src":"5966:17:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3203,"indexExpression":{"id":3202,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"5984:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5966:26:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3205,"nodeType":"ExpressionStatement","src":"5959:33:14"},{"expression":{"id":3211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5998:41:14","subExpression":{"baseExpression":{"baseExpression":{"id":3206,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"6005:12:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":3208,"indexExpression":{"id":3207,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"6018:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6005:18:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3210,"indexExpression":{"id":3209,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3160,"src":"6024:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6005:34:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3212,"nodeType":"ExpressionStatement","src":"5998:41:14"}]},"documentation":{"id":3152,"nodeType":"StructuredDocumentation","src":"5052:79:14","text":" @dev See {IERC721Enumerable-_removeTokenFromOwnerEnumeration}."},"id":3214,"implemented":true,"kind":"function","modifiers":[],"name":"_removeTokenFromOwnerEnumeration","nameLocation":"5143:32:14","nodeType":"FunctionDefinition","parameters":{"id":3157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3154,"mutability":"mutable","name":"from","nameLocation":"5184:4:14","nodeType":"VariableDeclaration","scope":3214,"src":"5176:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3153,"name":"address","nodeType":"ElementaryTypeName","src":"5176:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3156,"mutability":"mutable","name":"tokenId","nameLocation":"5198:7:14","nodeType":"VariableDeclaration","scope":3214,"src":"5190:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3155,"name":"uint256","nodeType":"ElementaryTypeName","src":"5190:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5175:31:14"},"returnParameters":{"id":3158,"nodeType":"ParameterList","parameters":[],"src":"5215:0:14"},"scope":3215,"src":"5134:910:14","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":3216,"src":"1065:4981:14","usedErrors":[]}],"src":"309:5738:14"},"id":14}},"contracts":{"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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.13+commit.abaa5c0e\"},\"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC721 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":"ERC721 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.13+commit.abaa5c0e\"},\"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 ERC721 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\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"IERC721Enumerable":{"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":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"See https://eips.ethereum.org/EIPS/eip-721","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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"tokenByIndex(uint256)":{"details":"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens."},"tokenOfOwnerByIndex(address,uint256)":{"details":"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"totalSupply()":{"details":"Returns the total amount of tokens stored by the contract."},"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 ERC721 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."}},"title":"ERC-721 Non-Fungible Token Standard, optional enumeration extension","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","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"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 ERC721 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.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Enumerable is IERC721 {\\n /**\\n * @dev Returns the total amount of tokens stored by the contract.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\\n * Use along with {totalSupply} to enumerate all tokens.\\n */\\n function tokenByIndex(uint256 index) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"See https://eips.ethereum.org/EIPS/eip-721","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}"},"name()":{"details":"Returns the token collection name."},"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"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 ERC721 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."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","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","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"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}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"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 ERC721 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.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c69445eab20c1bbbd8e32607b6ee96f65377d4a7f653dc7f3367b5ce711236e64736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 0x2C PUSH10 0x445EAB20C1BBBD8E3260 PUSH28 0x6EE96F65377D4A7F653DC7F3367B5CE711236E64736F6C634300080D STOP CALLER ","sourceMap":"194:9169:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c69445eab20c1bbbd8e32607b6ee96f65377d4a7f653dc7f3367b5ce711236e64736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C PUSH10 0x445EAB20C1BBBD8E3260 PUSH28 0x6EE96F65377D4A7F653DC7F3367B5CE711236E64736F6C634300080D STOP CALLER ","sourceMap":"194:9169:5:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fe33877dc3b543331045a7fad8df6528ca3a558fa500af760ddfe6556fe4a6764736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 0xF 0xE3 CODESIZE PUSH24 0xDC3B543331045A7FAD8DF6528CA3A558FA500AF760DDFE65 JUMP INVALID 0x4A PUSH8 0x64736F6C63430008 0xD STOP CALLER ","sourceMap":"220:2559:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fe33877dc3b543331045a7fad8df6528ca3a558fa500af760ddfe6556fe4a6764736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF 0xE3 CODESIZE PUSH24 0xDC3B543331045A7FAD8DF6528CA3A558FA500AF760DDFE65 JUMP INVALID 0x4A PUSH8 0x64736F6C63430008 0xD STOP CALLER ","sourceMap":"220:2559:7:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"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.13+commit.abaa5c0e\"},\"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\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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.13+commit.abaa5c0e\"},\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ff279c248c865934fc9794769239e1a6a591e89789ec518f51e46031f69ab92a64736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 SELFDESTRUCT 0x27 SWAP13 0x24 DUP13 DUP7 MSIZE CALLVALUE 0xFC SWAP8 SWAP5 PUSH23 0x9239E1A6A591E89789EC518F51E46031F69AB92A64736F PUSH13 0x634300080D0033000000000000 ","sourceMap":"202:12582:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ff279c248c865934fc9794769239e1a6a591e89789ec518f51e46031f69ab92a64736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFDESTRUCT 0x27 SWAP13 0x24 DUP13 DUP7 MSIZE CALLVALUE 0xFC SWAP8 SWAP5 PUSH23 0x9239E1A6A591E89789EC518F51E46031F69AB92A64736F PUSH13 0x634300080D0033000000000000 ","sourceMap":"202:12582:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum Math.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum Math.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum Math.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum Math.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum Math.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c616ba86b545d147d95d377117c30fcfaac32d4ba4752e6193d0b63fc60cd3d764736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 0xC6 AND 0xBA DUP7 0xB5 GASLIMIT 0xD1 SELFBALANCE 0xD9 0x5D CALLDATACOPY PUSH18 0x17C30FCFAAC32D4BA4752E6193D0B63FC60C 0xD3 0xD7 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"215:1047:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c616ba86b545d147d95d377117c30fcfaac32d4ba4752e6193d0b63fc60cd3d764736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 AND 0xBA DUP7 0xB5 GASLIMIT 0xD1 SELFBALANCE 0xD9 0x5D CALLDATACOPY PUSH18 0x17C30FCFAAC32D4BA4752E6193D0B63FC60C 0xD3 0xD7 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"215:1047:11:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ERC721i.sol":{"ERC721i":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"baseUri","type":"string"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"This implements a Pre-Mint version of {ERC721} that adds the ability to Pre-Mint all the token ids in the contract as assign an initial owner for each token id. On-chain state for Pre-Mint does not need to be initially stored if Max-Supply is known. Minting is a simple matter of assigning a balance to the pre-mint receiver, and modifying the \"read\" methods to account for the pre-mint receiver as owner. We use the Consecutive Transfer Method as defined in EIP-2309 to signal inital ownership. Almost everything else remains standard. We also default to the contract \"owner\" as the pre-mint receiver, but this can be changed.","events":{"ConsecutiveTransfer(uint256,uint256,address,address)":{"details":"EIP-2309: https://eips.ethereum.org/EIPS/eip-2309"}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection, as well as a `minter` and a `maxSupply` for pre-minting the collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"owner()":{"details":"Returns the address of the current owner."},"ownerOf(uint256)":{"details":"Override the ERC721 \"ownerOf\" function to account for the Pre-Mint Receiver."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}. Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable"},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenByIndex(uint256)":{"details":"See {IERC721Enumerable-tokenByIndex}."},"tokenOfOwnerByIndex(address,uint256)":{"details":"See {IERC721Enumerable-tokenOfOwnerByIndex}. note: Fix contributed by surfer77"},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"totalSupply()":{"details":"See {IERC721Enumerable-totalSupply}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"_baseTokenURI":{"details":"ERC721 Base Token URI"}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_1948":{"entryPoint":null,"id":1948,"parameterSlots":5,"returnSlots":0},"@_2054":{"entryPoint":null,"id":2054,"parameterSlots":2,"returnSlots":0},"@_23":{"entryPoint":null,"id":23,"parameterSlots":0,"returnSlots":0},"@_msgSender_646":{"entryPoint":249,"id":646,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_111":{"entryPoint":257,"id":111,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr_fromMemory":{"entryPoint":916,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":1120,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_string_memory_ptr_fromMemory":{"entryPoint":991,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":1179,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint256_fromMemory":{"entryPoint":1202,"id":null,"parameterSlots":2,"returnSlots":5},"allocate_memory":{"entryPoint":777,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":629,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":808,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address":{"entryPoint":1074,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":1042,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":1143,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":862,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1478,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":723,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x22":{"entryPoint":1431,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":676,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":649,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":654,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":644,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":639,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":659,"id":null,"parameterSlots":1,"returnSlots":1},"validator_revert_t_address":{"entryPoint":1094,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":1153,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5607:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"423:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"440:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"443:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"433:6:15"},"nodeType":"YulFunctionCall","src":"433:12:15"},"nodeType":"YulExpressionStatement","src":"433:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"334:117:15"},{"body":{"nodeType":"YulBlock","src":"546:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:15"},"nodeType":"YulFunctionCall","src":"556:12:15"},"nodeType":"YulExpressionStatement","src":"556:12:15"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"457:117:15"},{"body":{"nodeType":"YulBlock","src":"628:54:15","statements":[{"nodeType":"YulAssignment","src":"638:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"656:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"663:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"652:3:15"},"nodeType":"YulFunctionCall","src":"652:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"668:3:15"},"nodeType":"YulFunctionCall","src":"668:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"648:3:15"},"nodeType":"YulFunctionCall","src":"648:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"638:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"611:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"621:6:15","type":""}],"src":"580:102:15"},{"body":{"nodeType":"YulBlock","src":"716:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"733:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"736:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"726:6:15"},"nodeType":"YulFunctionCall","src":"726:88:15"},"nodeType":"YulExpressionStatement","src":"726:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"830:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"833:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"823:6:15"},"nodeType":"YulFunctionCall","src":"823:15:15"},"nodeType":"YulExpressionStatement","src":"823:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"854:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"857:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"847:6:15"},"nodeType":"YulFunctionCall","src":"847:15:15"},"nodeType":"YulExpressionStatement","src":"847:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"688:180:15"},{"body":{"nodeType":"YulBlock","src":"917:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"927:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"949:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"979:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"957:21:15"},"nodeType":"YulFunctionCall","src":"957:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"945:3:15"},"nodeType":"YulFunctionCall","src":"945:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"931:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"1096:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1098:16:15"},"nodeType":"YulFunctionCall","src":"1098:18:15"},"nodeType":"YulExpressionStatement","src":"1098:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1039:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"1051:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1036:2:15"},"nodeType":"YulFunctionCall","src":"1036:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1075:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1087:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:15"},"nodeType":"YulFunctionCall","src":"1072:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1033:2:15"},"nodeType":"YulFunctionCall","src":"1033:62:15"},"nodeType":"YulIf","src":"1030:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1134:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1138:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1127:6:15"},"nodeType":"YulFunctionCall","src":"1127:22:15"},"nodeType":"YulExpressionStatement","src":"1127:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"903:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"911:4:15","type":""}],"src":"874:281:15"},{"body":{"nodeType":"YulBlock","src":"1202:88:15","statements":[{"nodeType":"YulAssignment","src":"1212:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1222:18:15"},"nodeType":"YulFunctionCall","src":"1222:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1212:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1271:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"1279:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1251:19:15"},"nodeType":"YulFunctionCall","src":"1251:33:15"},"nodeType":"YulExpressionStatement","src":"1251:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1186:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1195:6:15","type":""}],"src":"1161:129:15"},{"body":{"nodeType":"YulBlock","src":"1363:241:15","statements":[{"body":{"nodeType":"YulBlock","src":"1468:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1470:16:15"},"nodeType":"YulFunctionCall","src":"1470:18:15"},"nodeType":"YulExpressionStatement","src":"1470:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1440:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"1448:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1437:2:15"},"nodeType":"YulFunctionCall","src":"1437:30:15"},"nodeType":"YulIf","src":"1434:56:15"},{"nodeType":"YulAssignment","src":"1500:37:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1530:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1508:21:15"},"nodeType":"YulFunctionCall","src":"1508:29:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1500:4:15"}]},{"nodeType":"YulAssignment","src":"1574:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1586:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"1592:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1582:3:15"},"nodeType":"YulFunctionCall","src":"1582:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1574:4:15"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1347:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1358:4:15","type":""}],"src":"1296:308:15"},{"body":{"nodeType":"YulBlock","src":"1659:258:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1669:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"1678:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1673:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"1738:63:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1763:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"1768:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1759:3:15"},"nodeType":"YulFunctionCall","src":"1759:11:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1782:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"1787:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1778:3:15"},"nodeType":"YulFunctionCall","src":"1778:11:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1772:5:15"},"nodeType":"YulFunctionCall","src":"1772:18:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:15"},"nodeType":"YulFunctionCall","src":"1752:39:15"},"nodeType":"YulExpressionStatement","src":"1752:39:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1699:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"1702:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1696:2:15"},"nodeType":"YulFunctionCall","src":"1696:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1710:19:15","statements":[{"nodeType":"YulAssignment","src":"1712:15:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1721:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"1724:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1717:3:15"},"nodeType":"YulFunctionCall","src":"1717:10:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1712:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"1692:3:15","statements":[]},"src":"1688:113:15"},{"body":{"nodeType":"YulBlock","src":"1835:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1885:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1881:3:15"},"nodeType":"YulFunctionCall","src":"1881:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"1899:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1874:6:15"},"nodeType":"YulFunctionCall","src":"1874:27:15"},"nodeType":"YulExpressionStatement","src":"1874:27:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1816:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"1819:6:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1813:2:15"},"nodeType":"YulFunctionCall","src":"1813:13:15"},"nodeType":"YulIf","src":"1810:101:15"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1641:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1646:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1651:6:15","type":""}],"src":"1610:307:15"},{"body":{"nodeType":"YulBlock","src":"2018:326:15","statements":[{"nodeType":"YulAssignment","src":"2028:75:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2095:6:15"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2053:41:15"},"nodeType":"YulFunctionCall","src":"2053:49:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2037:15:15"},"nodeType":"YulFunctionCall","src":"2037:66:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2028:5:15"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2119:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"2126:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2112:6:15"},"nodeType":"YulFunctionCall","src":"2112:21:15"},"nodeType":"YulExpressionStatement","src":"2112:21:15"},{"nodeType":"YulVariableDeclaration","src":"2142:27:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2157:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2164:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2153:3:15"},"nodeType":"YulFunctionCall","src":"2153:16:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2146:3:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"2207:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"2209:77:15"},"nodeType":"YulFunctionCall","src":"2209:79:15"},"nodeType":"YulExpressionStatement","src":"2209:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2188:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"2193:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:15"},"nodeType":"YulFunctionCall","src":"2184:16:15"},{"name":"end","nodeType":"YulIdentifier","src":"2202:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2181:2:15"},"nodeType":"YulFunctionCall","src":"2181:25:15"},"nodeType":"YulIf","src":"2178:112:15"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2321:3:15"},{"name":"dst","nodeType":"YulIdentifier","src":"2326:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"2331:6:15"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2299:21:15"},"nodeType":"YulFunctionCall","src":"2299:39:15"},"nodeType":"YulExpressionStatement","src":"2299:39:15"}]},"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1991:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1996:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"2004:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2012:5:15","type":""}],"src":"1923:421:15"},{"body":{"nodeType":"YulBlock","src":"2437:282:15","statements":[{"body":{"nodeType":"YulBlock","src":"2486:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"2488:77:15"},"nodeType":"YulFunctionCall","src":"2488:79:15"},"nodeType":"YulExpressionStatement","src":"2488:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2465:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"2473:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2461:3:15"},"nodeType":"YulFunctionCall","src":"2461:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"2480:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2457:3:15"},"nodeType":"YulFunctionCall","src":"2457:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2450:6:15"},"nodeType":"YulFunctionCall","src":"2450:35:15"},"nodeType":"YulIf","src":"2447:122:15"},{"nodeType":"YulVariableDeclaration","src":"2578:27:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2598:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2592:5:15"},"nodeType":"YulFunctionCall","src":"2592:13:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2582:6:15","type":""}]},{"nodeType":"YulAssignment","src":"2614:99:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2686:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"2694:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2682:3:15"},"nodeType":"YulFunctionCall","src":"2682:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"2701:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"2709:3:15"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"2623:58:15"},"nodeType":"YulFunctionCall","src":"2623:90:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2614:5:15"}]}]},"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2415:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"2423:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2431:5:15","type":""}],"src":"2364:355:15"},{"body":{"nodeType":"YulBlock","src":"2770:81:15","statements":[{"nodeType":"YulAssignment","src":"2780:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2795:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2802:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2791:3:15"},"nodeType":"YulFunctionCall","src":"2791:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2780:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2752:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2762:7:15","type":""}],"src":"2725:126:15"},{"body":{"nodeType":"YulBlock","src":"2902:51:15","statements":[{"nodeType":"YulAssignment","src":"2912:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2941:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"2923:17:15"},"nodeType":"YulFunctionCall","src":"2923:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2912:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2884:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2894:7:15","type":""}],"src":"2857:96:15"},{"body":{"nodeType":"YulBlock","src":"3002:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"3059:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3068:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3071:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3061:6:15"},"nodeType":"YulFunctionCall","src":"3061:12:15"},"nodeType":"YulExpressionStatement","src":"3061:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3025:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3050:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"3032:17:15"},"nodeType":"YulFunctionCall","src":"3032:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3022:2:15"},"nodeType":"YulFunctionCall","src":"3022:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3015:6:15"},"nodeType":"YulFunctionCall","src":"3015:43:15"},"nodeType":"YulIf","src":"3012:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2995:5:15","type":""}],"src":"2959:122:15"},{"body":{"nodeType":"YulBlock","src":"3150:80:15","statements":[{"nodeType":"YulAssignment","src":"3160:22:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3175:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3169:5:15"},"nodeType":"YulFunctionCall","src":"3169:13:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3160:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3218:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"3191:26:15"},"nodeType":"YulFunctionCall","src":"3191:33:15"},"nodeType":"YulExpressionStatement","src":"3191:33:15"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3128:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3136:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3144:5:15","type":""}],"src":"3087:143:15"},{"body":{"nodeType":"YulBlock","src":"3281:32:15","statements":[{"nodeType":"YulAssignment","src":"3291:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"3302:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3291:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3263:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3273:7:15","type":""}],"src":"3236:77:15"},{"body":{"nodeType":"YulBlock","src":"3362:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"3419:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3428:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3431:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3421:6:15"},"nodeType":"YulFunctionCall","src":"3421:12:15"},"nodeType":"YulExpressionStatement","src":"3421:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3385:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3410:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3392:17:15"},"nodeType":"YulFunctionCall","src":"3392:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3382:2:15"},"nodeType":"YulFunctionCall","src":"3382:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3375:6:15"},"nodeType":"YulFunctionCall","src":"3375:43:15"},"nodeType":"YulIf","src":"3372:63:15"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3355:5:15","type":""}],"src":"3319:122:15"},{"body":{"nodeType":"YulBlock","src":"3510:80:15","statements":[{"nodeType":"YulAssignment","src":"3520:22:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3535:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3529:5:15"},"nodeType":"YulFunctionCall","src":"3529:13:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3520:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3578:5:15"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"3551:26:15"},"nodeType":"YulFunctionCall","src":"3551:33:15"},"nodeType":"YulExpressionStatement","src":"3551:33:15"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3488:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3496:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3504:5:15","type":""}],"src":"3447:143:15"},{"body":{"nodeType":"YulBlock","src":"3771:1321:15","statements":[{"body":{"nodeType":"YulBlock","src":"3818:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3820:77:15"},"nodeType":"YulFunctionCall","src":"3820:79:15"},"nodeType":"YulExpressionStatement","src":"3820:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3792:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"3801:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3788:3:15"},"nodeType":"YulFunctionCall","src":"3788:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"3813:3:15","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3784:3:15"},"nodeType":"YulFunctionCall","src":"3784:33:15"},"nodeType":"YulIf","src":"3781:120:15"},{"nodeType":"YulBlock","src":"3911:291:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3926:38:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3950:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"3961:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3946:3:15"},"nodeType":"YulFunctionCall","src":"3946:17:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3940:5:15"},"nodeType":"YulFunctionCall","src":"3940:24:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3930:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"4011:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4013:77:15"},"nodeType":"YulFunctionCall","src":"4013:79:15"},"nodeType":"YulExpressionStatement","src":"4013:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3983:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3991:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3980:2:15"},"nodeType":"YulFunctionCall","src":"3980:30:15"},"nodeType":"YulIf","src":"3977:117:15"},{"nodeType":"YulAssignment","src":"4108:84:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4164:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4175:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4160:3:15"},"nodeType":"YulFunctionCall","src":"4160:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4184:7:15"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"4118:41:15"},"nodeType":"YulFunctionCall","src":"4118:74:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4108:6:15"}]}]},{"nodeType":"YulBlock","src":"4212:292:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4227:39:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4251:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4262:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4247:3:15"},"nodeType":"YulFunctionCall","src":"4247:18:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4241:5:15"},"nodeType":"YulFunctionCall","src":"4241:25:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4231:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"4313:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4315:77:15"},"nodeType":"YulFunctionCall","src":"4315:79:15"},"nodeType":"YulExpressionStatement","src":"4315:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4285:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4293:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4282:2:15"},"nodeType":"YulFunctionCall","src":"4282:30:15"},"nodeType":"YulIf","src":"4279:117:15"},{"nodeType":"YulAssignment","src":"4410:84:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4466:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4477:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4462:3:15"},"nodeType":"YulFunctionCall","src":"4462:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4486:7:15"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"4420:41:15"},"nodeType":"YulFunctionCall","src":"4420:74:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4410:6:15"}]}]},{"nodeType":"YulBlock","src":"4514:292:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4529:39:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4553:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4564:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4549:3:15"},"nodeType":"YulFunctionCall","src":"4549:18:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4543:5:15"},"nodeType":"YulFunctionCall","src":"4543:25:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4533:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"4615:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4617:77:15"},"nodeType":"YulFunctionCall","src":"4617:79:15"},"nodeType":"YulExpressionStatement","src":"4617:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4587:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4595:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4584:2:15"},"nodeType":"YulFunctionCall","src":"4584:30:15"},"nodeType":"YulIf","src":"4581:117:15"},{"nodeType":"YulAssignment","src":"4712:84:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4768:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4779:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4764:3:15"},"nodeType":"YulFunctionCall","src":"4764:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4788:7:15"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"4722:41:15"},"nodeType":"YulFunctionCall","src":"4722:74:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4712:6:15"}]}]},{"nodeType":"YulBlock","src":"4816:129:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4831:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"4845:2:15","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4835:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4861:74:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4907:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4918:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4903:3:15"},"nodeType":"YulFunctionCall","src":"4903:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4927:7:15"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"4871:31:15"},"nodeType":"YulFunctionCall","src":"4871:64:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4861:6:15"}]}]},{"nodeType":"YulBlock","src":"4955:130:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4970:17:15","value":{"kind":"number","nodeType":"YulLiteral","src":"4984:3:15","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4974:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5001:74:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5047:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5058:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5043:3:15"},"nodeType":"YulFunctionCall","src":"5043:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5067:7:15"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"5011:31:15"},"nodeType":"YulFunctionCall","src":"5011:64:15"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5001:6:15"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3709:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3720:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3732:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3740:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3748:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3756:6:15","type":""},{"name":"value4","nodeType":"YulTypedName","src":"3764:6:15","type":""}],"src":"3596:1496:15"},{"body":{"nodeType":"YulBlock","src":"5126:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5143:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5146:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5136:6:15"},"nodeType":"YulFunctionCall","src":"5136:88:15"},"nodeType":"YulExpressionStatement","src":"5136:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5240:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5243:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5233:6:15"},"nodeType":"YulFunctionCall","src":"5233:15:15"},"nodeType":"YulExpressionStatement","src":"5233:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5264:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5267:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5257:6:15"},"nodeType":"YulFunctionCall","src":"5257:15:15"},"nodeType":"YulExpressionStatement","src":"5257:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"5098:180:15"},{"body":{"nodeType":"YulBlock","src":"5335:269:15","statements":[{"nodeType":"YulAssignment","src":"5345:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5359:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"5365:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"5355:3:15"},"nodeType":"YulFunctionCall","src":"5355:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5345:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"5376:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5406:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"5412:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5402:3:15"},"nodeType":"YulFunctionCall","src":"5402:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"5380:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"5453:51:15","statements":[{"nodeType":"YulAssignment","src":"5467:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5481:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"5489:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5477:3:15"},"nodeType":"YulFunctionCall","src":"5477:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5467:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5433:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5426:6:15"},"nodeType":"YulFunctionCall","src":"5426:26:15"},"nodeType":"YulIf","src":"5423:81:15"},{"body":{"nodeType":"YulBlock","src":"5556:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"5570:16:15"},"nodeType":"YulFunctionCall","src":"5570:18:15"},"nodeType":"YulExpressionStatement","src":"5570:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5520:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5543:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"5551:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5540:2:15"},"nodeType":"YulFunctionCall","src":"5540:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5517:2:15"},"nodeType":"YulFunctionCall","src":"5517:38:15"},"nodeType":"YulIf","src":"5514:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"5319:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5328:6:15","type":""}],"src":"5284:320:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200342a3803806200342a8339818101604052810190620000379190620004b2565b8484620000596200004d620000f960201b60201c565b6200010160201b60201c565b816001908051906020019062000071929190620001c5565b5080600290805190602001906200008a929190620001c5565b50505082600b9080519060200190620000a5929190620001c5565b5080600a8190555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050620005fb565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001d390620005c6565b90600052602060002090601f016020900481019282620001f7576000855562000243565b82601f106200021257805160ff191683800117855562000243565b8280016001018555821562000243579182015b828111156200024257825182559160200191906001019062000225565b5b50905062000252919062000256565b5090565b5b808211156200027157600081600090555060010162000257565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002de8262000293565b810181811067ffffffffffffffff821117156200030057620002ff620002a4565b5b80604052505050565b60006200031562000275565b9050620003238282620002d3565b919050565b600067ffffffffffffffff821115620003465762000345620002a4565b5b620003518262000293565b9050602081019050919050565b60005b838110156200037e57808201518184015260208101905062000361565b838111156200038e576000848401525b50505050565b6000620003ab620003a58462000328565b62000309565b905082815260208101848484011115620003ca57620003c96200028e565b5b620003d78482856200035e565b509392505050565b600082601f830112620003f757620003f662000289565b5b81516200040984826020860162000394565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200043f8262000412565b9050919050565b620004518162000432565b81146200045d57600080fd5b50565b600081519050620004718162000446565b92915050565b6000819050919050565b6200048c8162000477565b81146200049857600080fd5b50565b600081519050620004ac8162000481565b92915050565b600080600080600060a08688031215620004d157620004d06200027f565b5b600086015167ffffffffffffffff811115620004f257620004f162000284565b5b6200050088828901620003df565b955050602086015167ffffffffffffffff81111562000524576200052362000284565b5b6200053288828901620003df565b945050604086015167ffffffffffffffff81111562000556576200055562000284565b5b6200056488828901620003df565b9350506060620005778882890162000460565b92505060806200058a888289016200049b565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005df57607f821691505b602082108103620005f557620005f462000597565b5b50919050565b612e1f806200060b6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80636352211e116100ad578063a22cb46511610071578063a22cb46514610331578063b88d4fde1461034d578063c87b56dd14610369578063e985e9c514610399578063f2fde38b146103c95761012c565b80636352211e1461028b57806370a08231146102bb578063715018a6146102eb5780638da5cb5b146102f557806395d89b41146103135761012c565b806323b872dd116100f457806323b872dd146101e95780632f745c59146102055780633cd29ac81461023557806342842e0e1461023f5780634f6ccce71461025b5761012c565b806301ffc9a71461013157806306fdde0314610161578063081812fc1461017f578063095ea7b3146101af57806318160ddd146101cb575b600080fd5b61014b60048036038101906101469190611ec7565b6103e5565b6040516101589190611f0f565b60405180910390f35b61016961045f565b6040516101769190611fc3565b60405180910390f35b6101996004803603810190610194919061201b565b6104f1565b6040516101a69190612089565b60405180910390f35b6101c960048036038101906101c491906120d0565b610537565b005b6101d361064e565b6040516101e0919061211f565b60405180910390f35b61020360048036038101906101fe919061213a565b610658565b005b61021f600480360381019061021a91906120d0565b6106b8565b60405161022c919061211f565b60405180910390f35b61023d610871565b005b6102596004803603810190610254919061213a565b610883565b005b6102756004803603810190610270919061201b565b6108a3565b604051610282919061211f565b60405180910390f35b6102a560048036038101906102a0919061201b565b6108fd565b6040516102b29190612089565b60405180910390f35b6102d560048036038101906102d0919061218d565b6109b5565b6040516102e2919061211f565b60405180910390f35b6102f3610a6c565b005b6102fd610a80565b60405161030a9190612089565b60405180910390f35b61031b610aa9565b6040516103289190611fc3565b60405180910390f35b61034b600480360381019061034691906121e6565b610b3b565b005b6103676004803603810190610362919061235b565b610b51565b005b610383600480360381019061037e919061201b565b610bb3565b6040516103909190611fc3565b60405180910390f35b6103b360048036038101906103ae91906123de565b610c1b565b6040516103c09190611f0f565b60405180910390f35b6103e360048036038101906103de919061218d565b610caf565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610458575061045782610d32565b5b9050919050565b60606001805461046e9061244d565b80601f016020809104026020016040519081016040528092919081815260200182805461049a9061244d565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60006104fc82610e14565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610542826108fd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906124f0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105d1610e5f565b73ffffffffffffffffffffffffffffffffffffffff16148061060057506105ff816105fa610e5f565b610c1b565b5b61063f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063690612582565b60405180910390fd5b6106498383610e67565b505050565b6000600a54905090565b610669610663610e5f565b82610f20565b6106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f90612614565b60405180910390fd5b6106b3838383610fb5565b505050565b60006106c3836109b5565b8210610704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fb906126a6565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361081757600061076361064e565b9050600080600190505b8281101561081357600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107b7826108fd565b73ffffffffffffffffffffffffffffffffffffffff1603610800576001826107df91906126f5565b9150846001836107ef919061274b565b036107ff5780935050505061086b565b5b808061080b9061277f565b91505061076d565b5050505b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000205490505b92915050565b61087961121b565b610881611299565b565b61089e83838360405180602001604052806000815250610b51565b505050565b6000600a5482106108e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e090612839565b60405180910390fd5b6001826108f691906126f5565b9050919050565b6000600a54821115610919576109128261138f565b90506109b0565b60006003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109ab57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b809150505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c906128cb565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a7461121b565b610a7e6000611440565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610ab89061244d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae49061244d565b8015610b315780601f10610b0657610100808354040283529160200191610b31565b820191906000526020600020905b815481529060010190602001808311610b1457829003601f168201915b5050505050905090565b610b4d610b46610e5f565b8383611504565b5050565b610b62610b5c610e5f565b83610f20565b610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890612614565b60405180910390fd5b610bad84848484611670565b50505050565b6060610bbe82610e14565b6000610bc86116cc565b90506000815111610be85760405180602001604052806000815250610c13565b80610bf28461175e565b604051602001610c03929190612927565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610cb761121b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d906129bd565b60405180910390fd5b610d2f81611440565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610dfd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e0d5750610e0c8261182c565b5b9050919050565b610e1d81611896565b610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5390612a29565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610eda836108fd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610f2c836108fd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f6e5750610f6d8185610c1b565b5b80610fac57508373ffffffffffffffffffffffffffffffffffffffff16610f94846104f1565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610fd5826108fd565b73ffffffffffffffffffffffffffffffffffffffff161461102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102290612abb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190612b4d565b60405180910390fd5b6110a58383836118cc565b6110b0600082610e67565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611100919061274b565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461115791906126f5565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611216838383611924565b505050565b611223610e5f565b73ffffffffffffffffffffffffffffffffffffffff16611241610a80565b73ffffffffffffffffffffffffffffffffffffffff1614611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90612bb9565b60405180910390fd5b565b600a5460046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1660017fdeaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d600a54604051611385919061211f565b60405180910390a4565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90612a29565b60405180910390fd5b80915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156990612c25565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116639190611f0f565b60405180910390a3505050565b61167b848484610fb5565b61168784848484611929565b6116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90612cb7565b60405180910390fd5b50505050565b6060600b80546116db9061244d565b80601f01602080910402602001604051908101604052809291908181526020018280546117079061244d565b80156117545780601f1061172957610100808354040283529160200191611754565b820191906000526020600020905b81548152906001019060200180831161173757829003601f168201915b5050505050905090565b60606000600161176d84611aab565b01905060008167ffffffffffffffff81111561178c5761178b612230565b5b6040519080825280601f01601f1916602001820160405280156117be5781602001600182028036833780820191505090505b509050600082602001820190505b600115611821578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161181557611814612cd7565b5b049450600085036117cc575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000600a548211156118b2576118ab82611bfe565b90506118c7565b6000821180156118c45750600a548211155b90505b919050565b6118d7838383611c6a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461191f576119148382611c6f565b61191e8282611ddc565b5b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115611a9e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261196e610e5f565b8786866040518563ffffffff1660e01b81526004016119909493929190612d5b565b6020604051808303816000875af19250505080156119cc57506040513d601f19601f820116820180604052508101906119c99190612dbc565b60015b611a4e573d80600081146119fc576040519150601f19603f3d011682016040523d82523d6000602084013e611a01565b606091505b506000815103611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d90612cb7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611aa3565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611b09577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611aff57611afe612cd7565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611b46576d04ee2d6d415b85acef81000000008381611b3c57611b3b612cd7565b5b0492506020810190505b662386f26fc100008310611b7557662386f26fc100008381611b6b57611b6a612cd7565b5b0492506010810190505b6305f5e1008310611b9e576305f5e1008381611b9457611b93612cd7565b5b0492506008810190505b6127108310611bc3576127108381611bb957611bb8612cd7565b5b0492506004810190505b60648310611be65760648381611bdc57611bdb612cd7565b5b0492506002810190505b600a8310611bf5576001810190505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b60006001611c7c846109b5565b611c86919061274b565b9050600060086000848152602001908152602001600020549050818114611d6b576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000611de7836109b5565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ea481611e6f565b8114611eaf57600080fd5b50565b600081359050611ec181611e9b565b92915050565b600060208284031215611edd57611edc611e65565b5b6000611eeb84828501611eb2565b91505092915050565b60008115159050919050565b611f0981611ef4565b82525050565b6000602082019050611f246000830184611f00565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f64578082015181840152602081019050611f49565b83811115611f73576000848401525b50505050565b6000601f19601f8301169050919050565b6000611f9582611f2a565b611f9f8185611f35565b9350611faf818560208601611f46565b611fb881611f79565b840191505092915050565b60006020820190508181036000830152611fdd8184611f8a565b905092915050565b6000819050919050565b611ff881611fe5565b811461200357600080fd5b50565b60008135905061201581611fef565b92915050565b60006020828403121561203157612030611e65565b5b600061203f84828501612006565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061207382612048565b9050919050565b61208381612068565b82525050565b600060208201905061209e600083018461207a565b92915050565b6120ad81612068565b81146120b857600080fd5b50565b6000813590506120ca816120a4565b92915050565b600080604083850312156120e7576120e6611e65565b5b60006120f5858286016120bb565b925050602061210685828601612006565b9150509250929050565b61211981611fe5565b82525050565b60006020820190506121346000830184612110565b92915050565b60008060006060848603121561215357612152611e65565b5b6000612161868287016120bb565b9350506020612172868287016120bb565b925050604061218386828701612006565b9150509250925092565b6000602082840312156121a3576121a2611e65565b5b60006121b1848285016120bb565b91505092915050565b6121c381611ef4565b81146121ce57600080fd5b50565b6000813590506121e0816121ba565b92915050565b600080604083850312156121fd576121fc611e65565b5b600061220b858286016120bb565b925050602061221c858286016121d1565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61226882611f79565b810181811067ffffffffffffffff8211171561228757612286612230565b5b80604052505050565b600061229a611e5b565b90506122a6828261225f565b919050565b600067ffffffffffffffff8211156122c6576122c5612230565b5b6122cf82611f79565b9050602081019050919050565b82818337600083830152505050565b60006122fe6122f9846122ab565b612290565b90508281526020810184848401111561231a5761231961222b565b5b6123258482856122dc565b509392505050565b600082601f83011261234257612341612226565b5b81356123528482602086016122eb565b91505092915050565b6000806000806080858703121561237557612374611e65565b5b6000612383878288016120bb565b9450506020612394878288016120bb565b93505060406123a587828801612006565b925050606085013567ffffffffffffffff8111156123c6576123c5611e6a565b5b6123d28782880161232d565b91505092959194509250565b600080604083850312156123f5576123f4611e65565b5b6000612403858286016120bb565b9250506020612414858286016120bb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061246557607f821691505b6020821081036124785761247761241e565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006124da602183611f35565b91506124e58261247e565b604082019050919050565b60006020820190508181036000830152612509816124cd565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b600061256c603e83611f35565b915061257782612510565b604082019050919050565b6000602082019050818103600083015261259b8161255f565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b60006125fe602e83611f35565b9150612609826125a2565b604082019050919050565b6000602082019050818103600083015261262d816125f1565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000612690602b83611f35565b915061269b82612634565b604082019050919050565b600060208201905081810360008301526126bf81612683565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061270082611fe5565b915061270b83611fe5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127405761273f6126c6565b5b828201905092915050565b600061275682611fe5565b915061276183611fe5565b925082821015612774576127736126c6565b5b828203905092915050565b600061278a82611fe5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127bc576127bb6126c6565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000612823602c83611f35565b915061282e826127c7565b604082019050919050565b6000602082019050818103600083015261285281612816565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006128b5602983611f35565b91506128c082612859565b604082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b600081905092915050565b600061290182611f2a565b61290b81856128eb565b935061291b818560208601611f46565b80840191505092915050565b600061293382856128f6565b915061293f82846128f6565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129a7602683611f35565b91506129b28261294b565b604082019050919050565b600060208201905081810360008301526129d68161299a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612a13601883611f35565b9150612a1e826129dd565b602082019050919050565b60006020820190508181036000830152612a4281612a06565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612aa5602583611f35565b9150612ab082612a49565b604082019050919050565b60006020820190508181036000830152612ad481612a98565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b37602483611f35565b9150612b4282612adb565b604082019050919050565b60006020820190508181036000830152612b6681612b2a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ba3602083611f35565b9150612bae82612b6d565b602082019050919050565b60006020820190508181036000830152612bd281612b96565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612c0f601983611f35565b9150612c1a82612bd9565b602082019050919050565b60006020820190508181036000830152612c3e81612c02565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000612ca1603283611f35565b9150612cac82612c45565b604082019050919050565b60006020820190508181036000830152612cd081612c94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000612d2d82612d06565b612d378185612d11565b9350612d47818560208601611f46565b612d5081611f79565b840191505092915050565b6000608082019050612d70600083018761207a565b612d7d602083018661207a565b612d8a6040830185612110565b8181036060830152612d9c8184612d22565b905095945050505050565b600081519050612db681611e9b565b92915050565b600060208284031215612dd257612dd1611e65565b5b6000612de084828501612da7565b9150509291505056fea2646970667358221220b45d17fb345108e1f5e95136d199cb2932d281c69cc816f10ee22fb0bb6f4a2a64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x342A CODESIZE SUB DUP1 PUSH3 0x342A DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x4B2 JUMP JUMPDEST DUP5 DUP5 PUSH3 0x59 PUSH3 0x4D PUSH3 0xF9 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x101 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x71 SWAP3 SWAP2 SWAP1 PUSH3 0x1C5 JUMP JUMPDEST POP DUP1 PUSH1 0x2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x8A SWAP3 SWAP2 SWAP1 PUSH3 0x1C5 JUMP JUMPDEST POP POP POP DUP3 PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xA5 SWAP3 SWAP2 SWAP1 PUSH3 0x1C5 JUMP JUMPDEST POP DUP1 PUSH1 0xA DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x9 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP PUSH3 0x5FB JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x1D3 SWAP1 PUSH3 0x5C6 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x1F7 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x243 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x212 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x243 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x243 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x242 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x225 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x252 SWAP2 SWAP1 PUSH3 0x256 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x271 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x257 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH3 0x2DE DUP3 PUSH3 0x293 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x300 JUMPI PUSH3 0x2FF PUSH3 0x2A4 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x315 PUSH3 0x275 JUMP JUMPDEST SWAP1 POP PUSH3 0x323 DUP3 DUP3 PUSH3 0x2D3 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x346 JUMPI PUSH3 0x345 PUSH3 0x2A4 JUMP JUMPDEST JUMPDEST PUSH3 0x351 DUP3 PUSH3 0x293 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x37E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x361 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x38E JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3AB PUSH3 0x3A5 DUP5 PUSH3 0x328 JUMP JUMPDEST PUSH3 0x309 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x3CA JUMPI PUSH3 0x3C9 PUSH3 0x28E JUMP JUMPDEST JUMPDEST PUSH3 0x3D7 DUP5 DUP3 DUP6 PUSH3 0x35E JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x3F7 JUMPI PUSH3 0x3F6 PUSH3 0x289 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0x409 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x394 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x43F DUP3 PUSH3 0x412 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x451 DUP2 PUSH3 0x432 JUMP JUMPDEST DUP2 EQ PUSH3 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x471 DUP2 PUSH3 0x446 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x48C DUP2 PUSH3 0x477 JUMP JUMPDEST DUP2 EQ PUSH3 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x4AC DUP2 PUSH3 0x481 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x4D1 JUMPI PUSH3 0x4D0 PUSH3 0x27F JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4F2 JUMPI PUSH3 0x4F1 PUSH3 0x284 JUMP JUMPDEST JUMPDEST PUSH3 0x500 DUP9 DUP3 DUP10 ADD PUSH3 0x3DF JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x524 JUMPI PUSH3 0x523 PUSH3 0x284 JUMP JUMPDEST JUMPDEST PUSH3 0x532 DUP9 DUP3 DUP10 ADD PUSH3 0x3DF JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x556 JUMPI PUSH3 0x555 PUSH3 0x284 JUMP JUMPDEST JUMPDEST PUSH3 0x564 DUP9 DUP3 DUP10 ADD PUSH3 0x3DF JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH3 0x577 DUP9 DUP3 DUP10 ADD PUSH3 0x460 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH3 0x58A DUP9 DUP3 DUP10 ADD PUSH3 0x49B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x5DF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x5F5 JUMPI PUSH3 0x5F4 PUSH3 0x597 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2E1F DUP1 PUSH3 0x60B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3C9 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x313 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x3CD29AC8 EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x25B JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1CB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x1EC7 JUMP JUMPDEST PUSH2 0x3E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x158 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x45F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x176 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x194 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A6 SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C4 SWAP2 SWAP1 PUSH2 0x20D0 JUMP JUMPDEST PUSH2 0x537 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x64E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E0 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x658 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x21A SWAP2 SWAP1 PUSH2 0x20D0 JUMP JUMPDEST PUSH2 0x6B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22C SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH2 0x871 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x254 SWAP2 SWAP1 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x883 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x275 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x270 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x282 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B2 SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x218D JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH2 0xA6C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FD PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x30A SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x31B PUSH2 0xAA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x328 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x34B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x346 SWAP2 SWAP1 PUSH2 0x21E6 JUMP JUMPDEST PUSH2 0xB3B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x367 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x362 SWAP2 SWAP1 PUSH2 0x235B JUMP JUMPDEST PUSH2 0xB51 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x383 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x37E SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0xBB3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3AE SWAP2 SWAP1 PUSH2 0x23DE JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3DE SWAP2 SWAP1 PUSH2 0x218D JUMP JUMPDEST PUSH2 0xCAF JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x780E9D6300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x458 JUMPI POP PUSH2 0x457 DUP3 PUSH2 0xD32 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x46E SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x49A SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4E7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4BC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4E7 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4CA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FC DUP3 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x542 DUP3 PUSH2 0x8FD JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x5B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A9 SWAP1 PUSH2 0x24F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5D1 PUSH2 0xE5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x600 JUMPI POP PUSH2 0x5FF DUP2 PUSH2 0x5FA PUSH2 0xE5F JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST JUMPDEST PUSH2 0x63F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x636 SWAP1 PUSH2 0x2582 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x649 DUP4 DUP4 PUSH2 0xE67 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x669 PUSH2 0x663 PUSH2 0xE5F JUMP JUMPDEST DUP3 PUSH2 0xF20 JUMP JUMPDEST PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69F SWAP1 PUSH2 0x2614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6B3 DUP4 DUP4 DUP4 PUSH2 0xFB5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C3 DUP4 PUSH2 0x9B5 JUMP JUMPDEST DUP3 LT PUSH2 0x704 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6FB SWAP1 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x817 JUMPI PUSH1 0x0 PUSH2 0x763 PUSH2 0x64E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x813 JUMPI PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7B7 DUP3 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x800 JUMPI PUSH1 0x1 DUP3 PUSH2 0x7DF SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP2 POP DUP5 PUSH1 0x1 DUP4 PUSH2 0x7EF SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SUB PUSH2 0x7FF JUMPI DUP1 SWAP4 POP POP POP POP PUSH2 0x86B JUMP JUMPDEST JUMPDEST DUP1 DUP1 PUSH2 0x80B SWAP1 PUSH2 0x277F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x76D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x879 PUSH2 0x121B JUMP JUMPDEST PUSH2 0x881 PUSH2 0x1299 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x89E DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xB51 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 LT PUSH2 0x8E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8E0 SWAP1 PUSH2 0x2839 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP3 PUSH2 0x8F6 SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 GT ISZERO PUSH2 0x919 JUMPI PUSH2 0x912 DUP3 PUSH2 0x138F JUMP JUMPDEST SWAP1 POP PUSH2 0x9B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9AB JUMPI PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA1C SWAP1 PUSH2 0x28CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA74 PUSH2 0x121B JUMP JUMPDEST PUSH2 0xA7E PUSH1 0x0 PUSH2 0x1440 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0xAB8 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xAE4 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB31 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB06 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB31 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB14 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xB4D PUSH2 0xB46 PUSH2 0xE5F JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1504 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB62 PUSH2 0xB5C PUSH2 0xE5F JUMP JUMPDEST DUP4 PUSH2 0xF20 JUMP JUMPDEST PUSH2 0xBA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB98 SWAP1 PUSH2 0x2614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBAD DUP5 DUP5 DUP5 DUP5 PUSH2 0x1670 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xBBE DUP3 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBC8 PUSH2 0x16CC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xBE8 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xC13 JUMP JUMPDEST DUP1 PUSH2 0xBF2 DUP5 PUSH2 0x175E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC03 SWAP3 SWAP2 SWAP1 PUSH2 0x2927 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xCB7 PUSH2 0x121B JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD26 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD1D SWAP1 PUSH2 0x29BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD2F DUP2 PUSH2 0x1440 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0xDFD JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0xE0D JUMPI POP PUSH2 0xE0C DUP3 PUSH2 0x182C JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE1D DUP2 PUSH2 0x1896 JUMP JUMPDEST PUSH2 0xE5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE53 SWAP1 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xEDA DUP4 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF2C DUP4 PUSH2 0x8FD JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xF6E JUMPI POP PUSH2 0xF6D DUP2 DUP6 PUSH2 0xC1B JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xFAC JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xF94 DUP5 PUSH2 0x4F1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFD5 DUP3 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x102B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1022 SWAP1 PUSH2 0x2ABB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x109A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1091 SWAP1 PUSH2 0x2B4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10A5 DUP4 DUP4 DUP4 PUSH2 0x18CC JUMP JUMPDEST PUSH2 0x10B0 PUSH1 0x0 DUP3 PUSH2 0xE67 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1100 SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1157 SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1216 DUP4 DUP4 DUP4 PUSH2 0x1924 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1223 PUSH2 0xE5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1241 PUSH2 0xA80 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x128E SWAP1 PUSH2 0x2BB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x4 PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH32 0xDEAA91B6123D068F5821D0FB0678463D1A8A6079FE8AF5DE3CE5E896DCF9133D PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0x1385 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1437 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x142E SWAP1 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1569 SWAP1 PUSH2 0x2C25 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1663 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x167B DUP5 DUP5 DUP5 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0x1687 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1929 JUMP JUMPDEST PUSH2 0x16C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16BD SWAP1 PUSH2 0x2CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xB DUP1 SLOAD PUSH2 0x16DB SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1707 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1754 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1729 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1754 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1737 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0x176D DUP5 PUSH2 0x1AAB JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x178C JUMPI PUSH2 0x178B PUSH2 0x2230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x17BE JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x1821 JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x1815 JUMPI PUSH2 0x1814 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x17CC JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 GT ISZERO PUSH2 0x18B2 JUMPI PUSH2 0x18AB DUP3 PUSH2 0x1BFE JUMP JUMPDEST SWAP1 POP PUSH2 0x18C7 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x18C4 JUMPI POP PUSH1 0xA SLOAD DUP3 GT ISZERO JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18D7 DUP4 DUP4 DUP4 PUSH2 0x1C6A JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x191F JUMPI PUSH2 0x1914 DUP4 DUP3 PUSH2 0x1C6F JUMP JUMPDEST PUSH2 0x191E DUP3 DUP3 PUSH2 0x1DDC JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x1A9E JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x196E PUSH2 0xE5F JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1990 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D5B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x19CC JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19C9 SWAP2 SWAP1 PUSH2 0x2DBC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1A4E JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x19FC 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 0x1A01 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x1A46 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A3D SWAP1 PUSH2 0x2CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x1AA3 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1B09 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x1AFF JUMPI PUSH2 0x1AFE PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1B46 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1B3C JUMPI PUSH2 0x1B3B PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1B75 JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1B6B JUMPI PUSH2 0x1B6A PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1B9E JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x1B94 JUMPI PUSH2 0x1B93 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x1BC3 JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x1BB9 JUMPI PUSH2 0x1BB8 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1BE6 JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x1BDC JUMPI PUSH2 0x1BDB PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x1BF5 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1C7C DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0x1C86 SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1D6B JUMPI PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x8 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x7 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DE7 DUP4 PUSH2 0x9B5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x7 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EA4 DUP2 PUSH2 0x1E6F JUMP JUMPDEST DUP2 EQ PUSH2 0x1EAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1EC1 DUP2 PUSH2 0x1E9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EDD JUMPI PUSH2 0x1EDC PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1EEB DUP5 DUP3 DUP6 ADD PUSH2 0x1EB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F09 DUP2 PUSH2 0x1EF4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1F24 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1F00 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F64 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1F49 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1F73 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F95 DUP3 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x1F9F DUP2 DUP6 PUSH2 0x1F35 JUMP JUMPDEST SWAP4 POP PUSH2 0x1FAF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST PUSH2 0x1FB8 DUP2 PUSH2 0x1F79 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FDD DUP2 DUP5 PUSH2 0x1F8A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1FF8 DUP2 PUSH2 0x1FE5 JUMP JUMPDEST DUP2 EQ PUSH2 0x2003 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2015 DUP2 PUSH2 0x1FEF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2031 JUMPI PUSH2 0x2030 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x203F DUP5 DUP3 DUP6 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2073 DUP3 PUSH2 0x2048 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2083 DUP2 PUSH2 0x2068 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x209E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x207A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x20AD DUP2 PUSH2 0x2068 JUMP JUMPDEST DUP2 EQ PUSH2 0x20B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x20CA DUP2 PUSH2 0x20A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20E7 JUMPI PUSH2 0x20E6 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20F5 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2106 DUP6 DUP3 DUP7 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2119 DUP2 PUSH2 0x1FE5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2134 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2110 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2153 JUMPI PUSH2 0x2152 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2161 DUP7 DUP3 DUP8 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2172 DUP7 DUP3 DUP8 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2183 DUP7 DUP3 DUP8 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21A3 JUMPI PUSH2 0x21A2 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x21B1 DUP5 DUP3 DUP6 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x21C3 DUP2 PUSH2 0x1EF4 JUMP JUMPDEST DUP2 EQ PUSH2 0x21CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x21E0 DUP2 PUSH2 0x21BA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21FD JUMPI PUSH2 0x21FC PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x220B DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x221C DUP6 DUP3 DUP7 ADD PUSH2 0x21D1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2268 DUP3 PUSH2 0x1F79 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2287 JUMPI PUSH2 0x2286 PUSH2 0x2230 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x229A PUSH2 0x1E5B JUMP JUMPDEST SWAP1 POP PUSH2 0x22A6 DUP3 DUP3 PUSH2 0x225F JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x22C6 JUMPI PUSH2 0x22C5 PUSH2 0x2230 JUMP JUMPDEST JUMPDEST PUSH2 0x22CF DUP3 PUSH2 0x1F79 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22FE PUSH2 0x22F9 DUP5 PUSH2 0x22AB JUMP JUMPDEST PUSH2 0x2290 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x231A JUMPI PUSH2 0x2319 PUSH2 0x222B JUMP JUMPDEST JUMPDEST PUSH2 0x2325 DUP5 DUP3 DUP6 PUSH2 0x22DC JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2342 JUMPI PUSH2 0x2341 PUSH2 0x2226 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2352 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x22EB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2375 JUMPI PUSH2 0x2374 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2383 DUP8 DUP3 DUP9 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x2394 DUP8 DUP3 DUP9 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x23A5 DUP8 DUP3 DUP9 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x23C6 JUMPI PUSH2 0x23C5 PUSH2 0x1E6A JUMP JUMPDEST JUMPDEST PUSH2 0x23D2 DUP8 DUP3 DUP9 ADD PUSH2 0x232D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23F5 JUMPI PUSH2 0x23F4 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2403 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2414 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2465 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2478 JUMPI PUSH2 0x2477 PUSH2 0x241E JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24DA PUSH1 0x21 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x24E5 DUP3 PUSH2 0x247E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2509 DUP2 PUSH2 0x24CD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x256C PUSH1 0x3E DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2577 DUP3 PUSH2 0x2510 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x259B DUP2 PUSH2 0x255F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25FE PUSH1 0x2E DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2609 DUP3 PUSH2 0x25A2 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x262D DUP2 PUSH2 0x25F1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x455243373231456E756D657261626C653A206F776E657220696E646578206F75 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74206F6620626F756E6473000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2690 PUSH1 0x2B DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x269B DUP3 PUSH2 0x2634 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x26BF DUP2 PUSH2 0x2683 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2700 DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH2 0x270B DUP4 PUSH2 0x1FE5 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x2740 JUMPI PUSH2 0x273F PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2756 DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH2 0x2761 DUP4 PUSH2 0x1FE5 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x2774 JUMPI PUSH2 0x2773 PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x278A DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x27BC JUMPI PUSH2 0x27BB PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x455243373231456E756D657261626C653A20676C6F62616C20696E646578206F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7574206F6620626F756E64730000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2823 PUSH1 0x2C DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x282E DUP3 PUSH2 0x27C7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2852 DUP2 PUSH2 0x2816 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B5 PUSH1 0x29 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x28C0 DUP3 PUSH2 0x2859 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x28E4 DUP2 PUSH2 0x28A8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2901 DUP3 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x290B DUP2 DUP6 PUSH2 0x28EB JUMP JUMPDEST SWAP4 POP PUSH2 0x291B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2933 DUP3 DUP6 PUSH2 0x28F6 JUMP JUMPDEST SWAP2 POP PUSH2 0x293F DUP3 DUP5 PUSH2 0x28F6 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29A7 PUSH1 0x26 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x29B2 DUP3 PUSH2 0x294B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x29D6 DUP2 PUSH2 0x299A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A13 PUSH1 0x18 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A1E DUP3 PUSH2 0x29DD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2A42 DUP2 PUSH2 0x2A06 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA5 PUSH1 0x25 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2AB0 DUP3 PUSH2 0x2A49 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2AD4 DUP2 PUSH2 0x2A98 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B37 PUSH1 0x24 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B42 DUP3 PUSH2 0x2ADB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2B66 DUP2 PUSH2 0x2B2A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BA3 PUSH1 0x20 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BAE DUP3 PUSH2 0x2B6D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2BD2 DUP2 PUSH2 0x2B96 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C0F PUSH1 0x19 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2C1A DUP3 PUSH2 0x2BD9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2C3E DUP2 PUSH2 0x2C02 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CA1 PUSH1 0x32 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2CAC DUP3 PUSH2 0x2C45 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2CD0 DUP2 PUSH2 0x2C94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D2D DUP3 PUSH2 0x2D06 JUMP JUMPDEST PUSH2 0x2D37 DUP2 DUP6 PUSH2 0x2D11 JUMP JUMPDEST SWAP4 POP PUSH2 0x2D47 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST PUSH2 0x2D50 DUP2 PUSH2 0x1F79 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2D70 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x207A JUMP JUMPDEST PUSH2 0x2D7D PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x207A JUMP JUMPDEST PUSH2 0x2D8A PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2110 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x2D9C DUP2 DUP5 PUSH2 0x2D22 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2DB6 DUP2 PUSH2 0x1E9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DD2 JUMPI PUSH2 0x2DD1 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DE0 DUP5 DUP3 DUP6 ADD PUSH2 0x2DA7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0x5D OR 0xFB CALLVALUE MLOAD ADDMOD 0xE1 CREATE2 0xE9 MLOAD CALLDATASIZE 0xD1 SWAP10 0xCB 0x29 ORIGIN 0xD2 DUP2 0xC6 SWAP13 0xC8 AND CALL 0xE 0xE2 0x2F 0xB0 0xBB PUSH16 0x4A2A64736F6C634300080D0033000000 ","sourceMap":"998:1396:12:-:0;;;1502:319;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1649:4;1655:6;936:32:0;955:12;:10;;;:12;;:::i;:::-;936:18;;;:32;;:::i;:::-;2311:5:13;2303;:13;;;;;;;;;;;;:::i;:::-;;2336:7;2326;:17;;;;;;;;;;;;:::i;:::-;;2237:113;;1701:7:12::2;1685:13;:23;;;;;;;;;;;;:::i;:::-;;1776:9;1763:10;:22;;;;1810:6;1791:16;;:25;;;;;;;;;;;;;;;;;;1502:319:::0;;;;;998:1396;;640:96:6;693:7;719:10;712:17;;640:96;:::o;2426:187:0:-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;998:1396:12:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:126::-;2762:7;2802:42;2795:5;2791:54;2780:65;;2725:126;;;:::o;2857:96::-;2894:7;2923:24;2941:5;2923:24;:::i;:::-;2912:35;;2857:96;;;:::o;2959:122::-;3032:24;3050:5;3032:24;:::i;:::-;3025:5;3022:35;3012:63;;3071:1;3068;3061:12;3012:63;2959:122;:::o;3087:143::-;3144:5;3175:6;3169:13;3160:22;;3191:33;3218:5;3191:33;:::i;:::-;3087:143;;;;:::o;3236:77::-;3273:7;3302:5;3291:16;;3236:77;;;:::o;3319:122::-;3392:24;3410:5;3392:24;:::i;:::-;3385:5;3382:35;3372:63;;3431:1;3428;3421:12;3372:63;3319:122;:::o;3447:143::-;3504:5;3535:6;3529:13;3520:22;;3551:33;3578:5;3551:33;:::i;:::-;3447:143;;;;:::o;3596:1496::-;3732:6;3740;3748;3756;3764;3813:3;3801:9;3792:7;3788:23;3784:33;3781:120;;;3820:79;;:::i;:::-;3781:120;3961:1;3950:9;3946:17;3940:24;3991:18;3983:6;3980:30;3977:117;;;4013:79;;:::i;:::-;3977:117;4118:74;4184:7;4175:6;4164:9;4160:22;4118:74;:::i;:::-;4108:84;;3911:291;4262:2;4251:9;4247:18;4241:25;4293:18;4285:6;4282:30;4279:117;;;4315:79;;:::i;:::-;4279:117;4420:74;4486:7;4477:6;4466:9;4462:22;4420:74;:::i;:::-;4410:84;;4212:292;4564:2;4553:9;4549:18;4543:25;4595:18;4587:6;4584:30;4581:117;;;4617:79;;:::i;:::-;4581:117;4722:74;4788:7;4779:6;4768:9;4764:22;4722:74;:::i;:::-;4712:84;;4514:292;4845:2;4871:64;4927:7;4918:6;4907:9;4903:22;4871:64;:::i;:::-;4861:74;;4816:129;4984:3;5011:64;5067:7;5058:6;5047:9;5043:22;5011:64;:::i;:::-;5001:74;;4955:130;3596:1496;;;;;;;;:::o;5098:180::-;5146:77;5143:1;5136:88;5243:4;5240:1;5233:15;5267:4;5264:1;5257:15;5284:320;5328:6;5365:1;5359:4;5355:12;5345:22;;5412:1;5406:4;5402:12;5433:18;5423:81;;5489:4;5481:6;5477:17;5467:27;;5423:81;5551:2;5543:6;5540:14;5520:18;5517:38;5514:84;;5570:18;;:::i;:::-;5514:84;5335:269;5284:320;;;:::o;998:1396:12:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_addTokenToOwnerEnumeration_3151":{"entryPoint":7644,"id":3151,"parameterSlots":2,"returnSlots":0},"@_afterTokenTransfer_2855":{"entryPoint":6436,"id":2855,"parameterSlots":3,"returnSlots":0},"@_approve_2723":{"entryPoint":3687,"id":2723,"parameterSlots":2,"returnSlots":0},"@_baseURI_1987":{"entryPoint":5836,"id":1987,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_2844":{"entryPoint":7274,"id":2844,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_3121":{"entryPoint":6348,"id":3121,"parameterSlots":3,"returnSlots":0},"@_checkOnERC721Received_2833":{"entryPoint":6441,"id":2833,"parameterSlots":4,"returnSlots":1},"@_checkOwner_54":{"entryPoint":4635,"id":54,"parameterSlots":0,"returnSlots":0},"@_exists_2423":{"entryPoint":7166,"id":2423,"parameterSlots":1,"returnSlots":1},"@_exists_3086":{"entryPoint":6294,"id":3086,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_2456":{"entryPoint":3872,"id":2456,"parameterSlots":2,"returnSlots":1},"@_msgSender_646":{"entryPoint":3679,"id":646,"parameterSlots":0,"returnSlots":1},"@_preMint_1969":{"entryPoint":4761,"id":1969,"parameterSlots":0,"returnSlots":0},"@_removeTokenFromOwnerEnumeration_3214":{"entryPoint":7279,"id":3214,"parameterSlots":2,"returnSlots":0},"@_requireMinted_2769":{"entryPoint":3604,"id":2769,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_2405":{"entryPoint":5744,"id":2405,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_2755":{"entryPoint":5380,"id":2755,"parameterSlots":3,"returnSlots":0},"@_transferOwnership_111":{"entryPoint":5184,"id":111,"parameterSlots":1,"returnSlots":0},"@_transfer_2700":{"entryPoint":4021,"id":2700,"parameterSlots":3,"returnSlots":0},"@approve_2247":{"entryPoint":1335,"id":2247,"parameterSlots":2,"returnSlots":0},"@balanceOf_2109":{"entryPoint":2485,"id":2109,"parameterSlots":1,"returnSlots":1},"@getApproved_2265":{"entryPoint":1265,"id":2265,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_2300":{"entryPoint":3099,"id":2300,"parameterSlots":2,"returnSlots":1},"@log10_1624":{"entryPoint":6827,"id":1624,"parameterSlots":1,"returnSlots":1},"@name_2147":{"entryPoint":1119,"id":2147,"parameterSlots":0,"returnSlots":1},"@ownerOf_2137":{"entryPoint":5007,"id":2137,"parameterSlots":1,"returnSlots":1},"@ownerOf_3056":{"entryPoint":2301,"id":3056,"parameterSlots":1,"returnSlots":1},"@owner_40":{"entryPoint":2688,"id":40,"parameterSlots":0,"returnSlots":1},"@preMint_1978":{"entryPoint":2161,"id":1978,"parameterSlots":0,"returnSlots":0},"@renounceOwnership_68":{"entryPoint":2668,"id":68,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_2346":{"entryPoint":2179,"id":2346,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_2376":{"entryPoint":2897,"id":2376,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_2282":{"entryPoint":2875,"id":2282,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2085":{"entryPoint":3378,"id":2085,"parameterSlots":1,"returnSlots":1},"@supportsInterface_2903":{"entryPoint":997,"id":2903,"parameterSlots":1,"returnSlots":1},"@supportsInterface_908":{"entryPoint":6188,"id":908,"parameterSlots":1,"returnSlots":1},"@symbol_2157":{"entryPoint":2729,"id":2157,"parameterSlots":0,"returnSlots":1},"@toString_715":{"entryPoint":5982,"id":715,"parameterSlots":1,"returnSlots":1},"@tokenByIndex_3014":{"entryPoint":2211,"id":3014,"parameterSlots":1,"returnSlots":1},"@tokenOfOwnerByIndex_2983":{"entryPoint":1720,"id":2983,"parameterSlots":2,"returnSlots":1},"@tokenURI_2196":{"entryPoint":2995,"id":2196,"parameterSlots":1,"returnSlots":1},"@totalSupply_2993":{"entryPoint":1614,"id":2993,"parameterSlots":0,"returnSlots":1},"@transferFrom_2327":{"entryPoint":1624,"id":2327,"parameterSlots":3,"returnSlots":0},"@transferOwnership_91":{"entryPoint":3247,"id":91,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_bytes_memory_ptr":{"entryPoint":8939,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":8379,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":8657,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4":{"entryPoint":7858,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4_fromMemory":{"entryPoint":11687,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr":{"entryPoint":9005,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":8198,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":8589,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":9182,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":8506,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":9051,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":8678,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":8400,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":7879,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":11708,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":8219,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":8314,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":7936,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":11554,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":8074,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":10486,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack":{"entryPoint":9859,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack":{"entryPoint":11412,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":10650,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack":{"entryPoint":10904,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack":{"entryPoint":11050,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack":{"entryPoint":11266,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack":{"entryPoint":10408,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack":{"entryPoint":9567,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":11158,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack":{"entryPoint":10758,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack":{"entryPoint":9421,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack":{"entryPoint":10262,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack":{"entryPoint":9713,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":8464,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":10535,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":8329,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11611,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":7951,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8131,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9894,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11447,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10685,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10939,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11085,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11301,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10443,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9602,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11193,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10793,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9456,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10297,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9748,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":8479,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":8848,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":7771,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":8875,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":11526,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":7978,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":11537,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":7989,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":10475,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":9973,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":10059,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":8296,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":7924,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":7791,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":8264,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":8165,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory":{"entryPoint":8924,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory":{"entryPoint":8006,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":9293,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":8799,"id":null,"parameterSlots":2,"returnSlots":0},"increment_t_uint256":{"entryPoint":10111,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":9926,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":11479,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":9246,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":8752,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":8742,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":8747,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":7786,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":7781,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":8057,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c":{"entryPoint":9780,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e":{"entryPoint":11333,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":10571,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48":{"entryPoint":10825,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4":{"entryPoint":10971,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05":{"entryPoint":11225,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159":{"entryPoint":10329,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304":{"entryPoint":9488,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":11117,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f":{"entryPoint":10717,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942":{"entryPoint":9342,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc":{"entryPoint":10183,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b":{"entryPoint":9634,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":8356,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":8634,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes4":{"entryPoint":7835,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":8175,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:28182:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"378:105:15","statements":[{"nodeType":"YulAssignment","src":"388:89:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"410:66:15","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"399:3:15"},"nodeType":"YulFunctionCall","src":"399:78:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"388:7:15"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"360:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"370:7:15","type":""}],"src":"334:149:15"},{"body":{"nodeType":"YulBlock","src":"531:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"587:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"596:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"599:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"589:6:15"},"nodeType":"YulFunctionCall","src":"589:12:15"},"nodeType":"YulExpressionStatement","src":"589:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"554:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"578:5:15"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"561:16:15"},"nodeType":"YulFunctionCall","src":"561:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"551:2:15"},"nodeType":"YulFunctionCall","src":"551:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"544:6:15"},"nodeType":"YulFunctionCall","src":"544:42:15"},"nodeType":"YulIf","src":"541:62:15"}]},"name":"validator_revert_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"524:5:15","type":""}],"src":"489:120:15"},{"body":{"nodeType":"YulBlock","src":"666:86:15","statements":[{"nodeType":"YulAssignment","src":"676:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"698:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:15"},"nodeType":"YulFunctionCall","src":"685:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"676:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"740:5:15"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"714:25:15"},"nodeType":"YulFunctionCall","src":"714:32:15"},"nodeType":"YulExpressionStatement","src":"714:32:15"}]},"name":"abi_decode_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"644:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"652:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"660:5:15","type":""}],"src":"615:137:15"},{"body":{"nodeType":"YulBlock","src":"823:262:15","statements":[{"body":{"nodeType":"YulBlock","src":"869:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"871:77:15"},"nodeType":"YulFunctionCall","src":"871:79:15"},"nodeType":"YulExpressionStatement","src":"871:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"844:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"853:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"840:3:15"},"nodeType":"YulFunctionCall","src":"840:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"865:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"836:3:15"},"nodeType":"YulFunctionCall","src":"836:32:15"},"nodeType":"YulIf","src":"833:119:15"},{"nodeType":"YulBlock","src":"962:116:15","statements":[{"nodeType":"YulVariableDeclaration","src":"977:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"991:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"981:6:15","type":""}]},{"nodeType":"YulAssignment","src":"1006:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1040:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"1051:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1036:3:15"},"nodeType":"YulFunctionCall","src":"1036:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1060:7:15"}],"functionName":{"name":"abi_decode_t_bytes4","nodeType":"YulIdentifier","src":"1016:19:15"},"nodeType":"YulFunctionCall","src":"1016:52:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1006:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"793:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"804:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"816:6:15","type":""}],"src":"758:327:15"},{"body":{"nodeType":"YulBlock","src":"1133:48:15","statements":[{"nodeType":"YulAssignment","src":"1143:32:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1161:6:15"},"nodeType":"YulFunctionCall","src":"1161:13:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1154:6:15"},"nodeType":"YulFunctionCall","src":"1154:21:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1143:7:15"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1115:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1125:7:15","type":""}],"src":"1091:90:15"},{"body":{"nodeType":"YulBlock","src":"1246:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1283:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"1268:14:15"},"nodeType":"YulFunctionCall","src":"1268:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1256:6:15"},"nodeType":"YulFunctionCall","src":"1256:34:15"},"nodeType":"YulExpressionStatement","src":"1256:34:15"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1234:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1241:3:15","type":""}],"src":"1187:109:15"},{"body":{"nodeType":"YulBlock","src":"1394:118:15","statements":[{"nodeType":"YulAssignment","src":"1404:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:15"},"nodeType":"YulFunctionCall","src":"1412:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1404:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1478:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1491:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1502:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1487:3:15"},"nodeType":"YulFunctionCall","src":"1487:17:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"1440:37:15"},"nodeType":"YulFunctionCall","src":"1440:65:15"},"nodeType":"YulExpressionStatement","src":"1440:65:15"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1366:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1378:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1389:4:15","type":""}],"src":"1302:210:15"},{"body":{"nodeType":"YulBlock","src":"1577:40:15","statements":[{"nodeType":"YulAssignment","src":"1588:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1604:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1598:5:15"},"nodeType":"YulFunctionCall","src":"1598:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1588:6:15"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1560:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1570:6:15","type":""}],"src":"1518:99:15"},{"body":{"nodeType":"YulBlock","src":"1719:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1736:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"1741:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1729:6:15"},"nodeType":"YulFunctionCall","src":"1729:19:15"},"nodeType":"YulExpressionStatement","src":"1729:19:15"},{"nodeType":"YulAssignment","src":"1757:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1776:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1781:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1772:3:15"},"nodeType":"YulFunctionCall","src":"1772:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1757:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1691:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1696:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1707:11:15","type":""}],"src":"1623:169:15"},{"body":{"nodeType":"YulBlock","src":"1847:258:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1857:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"1866:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1861:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"1926:63:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1951:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"1956:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1947:3:15"},"nodeType":"YulFunctionCall","src":"1947:11:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1970:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"1975:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:15"},"nodeType":"YulFunctionCall","src":"1966:11:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1960:5:15"},"nodeType":"YulFunctionCall","src":"1960:18:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1940:6:15"},"nodeType":"YulFunctionCall","src":"1940:39:15"},"nodeType":"YulExpressionStatement","src":"1940:39:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1887:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1884:2:15"},"nodeType":"YulFunctionCall","src":"1884:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1898:19:15","statements":[{"nodeType":"YulAssignment","src":"1900:15:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1909:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"1912:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1905:3:15"},"nodeType":"YulFunctionCall","src":"1905:10:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1900:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"1880:3:15","statements":[]},"src":"1876:113:15"},{"body":{"nodeType":"YulBlock","src":"2023:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2073:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"2078:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2069:3:15"},"nodeType":"YulFunctionCall","src":"2069:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"2087:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2062:6:15"},"nodeType":"YulFunctionCall","src":"2062:27:15"},"nodeType":"YulExpressionStatement","src":"2062:27:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2004:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"2007:6:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2001:2:15"},"nodeType":"YulFunctionCall","src":"2001:13:15"},"nodeType":"YulIf","src":"1998:101:15"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1829:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1834:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1839:6:15","type":""}],"src":"1798:307:15"},{"body":{"nodeType":"YulBlock","src":"2159:54:15","statements":[{"nodeType":"YulAssignment","src":"2169:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2187:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2194:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2183:3:15"},"nodeType":"YulFunctionCall","src":"2183:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2203:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2199:3:15"},"nodeType":"YulFunctionCall","src":"2199:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2179:3:15"},"nodeType":"YulFunctionCall","src":"2179:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2169:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2142:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"2152:6:15","type":""}],"src":"2111:102:15"},{"body":{"nodeType":"YulBlock","src":"2311:272:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2321:53:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2368:5:15"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2335:32:15"},"nodeType":"YulFunctionCall","src":"2335:39:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2325:6:15","type":""}]},{"nodeType":"YulAssignment","src":"2383:78:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2449:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"2454:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2390:58:15"},"nodeType":"YulFunctionCall","src":"2390:71:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2383:3:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2496:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2503:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:15"},"nodeType":"YulFunctionCall","src":"2492:16:15"},{"name":"pos","nodeType":"YulIdentifier","src":"2510:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"2515:6:15"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2470:21:15"},"nodeType":"YulFunctionCall","src":"2470:52:15"},"nodeType":"YulExpressionStatement","src":"2470:52:15"},{"nodeType":"YulAssignment","src":"2531:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2542:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2569:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2547:21:15"},"nodeType":"YulFunctionCall","src":"2547:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2538:3:15"},"nodeType":"YulFunctionCall","src":"2538:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2531:3:15"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2292:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2299:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2307:3:15","type":""}],"src":"2219:364:15"},{"body":{"nodeType":"YulBlock","src":"2707:195:15","statements":[{"nodeType":"YulAssignment","src":"2717:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2729:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"2740:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2725:3:15"},"nodeType":"YulFunctionCall","src":"2725:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2717:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2764:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"2775:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2760:3:15"},"nodeType":"YulFunctionCall","src":"2760:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2783:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"2789:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2779:3:15"},"nodeType":"YulFunctionCall","src":"2779:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2753:6:15"},"nodeType":"YulFunctionCall","src":"2753:47:15"},"nodeType":"YulExpressionStatement","src":"2753:47:15"},{"nodeType":"YulAssignment","src":"2809:86:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2881:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"2890:4:15"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2817:63:15"},"nodeType":"YulFunctionCall","src":"2817:78:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2809:4:15"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2679:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2691:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2702:4:15","type":""}],"src":"2589:313:15"},{"body":{"nodeType":"YulBlock","src":"2953:32:15","statements":[{"nodeType":"YulAssignment","src":"2963:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"2974:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2963:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2935:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2945:7:15","type":""}],"src":"2908:77:15"},{"body":{"nodeType":"YulBlock","src":"3034:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"3091:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3100:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3103:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3093:6:15"},"nodeType":"YulFunctionCall","src":"3093:12:15"},"nodeType":"YulExpressionStatement","src":"3093:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3057:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3082:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3064:17:15"},"nodeType":"YulFunctionCall","src":"3064:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3054:2:15"},"nodeType":"YulFunctionCall","src":"3054:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3047:6:15"},"nodeType":"YulFunctionCall","src":"3047:43:15"},"nodeType":"YulIf","src":"3044:63:15"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3027:5:15","type":""}],"src":"2991:122:15"},{"body":{"nodeType":"YulBlock","src":"3171:87:15","statements":[{"nodeType":"YulAssignment","src":"3181:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3203:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3190:12:15"},"nodeType":"YulFunctionCall","src":"3190:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3181:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3246:5:15"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"3219:26:15"},"nodeType":"YulFunctionCall","src":"3219:33:15"},"nodeType":"YulExpressionStatement","src":"3219:33:15"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3149:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3157:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3165:5:15","type":""}],"src":"3119:139:15"},{"body":{"nodeType":"YulBlock","src":"3330:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"3376:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3378:77:15"},"nodeType":"YulFunctionCall","src":"3378:79:15"},"nodeType":"YulExpressionStatement","src":"3378:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3351:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"3360:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3347:3:15"},"nodeType":"YulFunctionCall","src":"3347:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"3372:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3343:3:15"},"nodeType":"YulFunctionCall","src":"3343:32:15"},"nodeType":"YulIf","src":"3340:119:15"},{"nodeType":"YulBlock","src":"3469:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3484:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"3498:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3488:6:15","type":""}]},{"nodeType":"YulAssignment","src":"3513:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"3559:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3544:3:15"},"nodeType":"YulFunctionCall","src":"3544:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3568:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3523:20:15"},"nodeType":"YulFunctionCall","src":"3523:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3513:6:15"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3300:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3311:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3323:6:15","type":""}],"src":"3264:329:15"},{"body":{"nodeType":"YulBlock","src":"3644:81:15","statements":[{"nodeType":"YulAssignment","src":"3654:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3669:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"3676:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3665:3:15"},"nodeType":"YulFunctionCall","src":"3665:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3654:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3626:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3636:7:15","type":""}],"src":"3599:126:15"},{"body":{"nodeType":"YulBlock","src":"3776:51:15","statements":[{"nodeType":"YulAssignment","src":"3786:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3815:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"3797:17:15"},"nodeType":"YulFunctionCall","src":"3797:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3786:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3758:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3768:7:15","type":""}],"src":"3731:96:15"},{"body":{"nodeType":"YulBlock","src":"3898:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3915:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3938:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"3920:17:15"},"nodeType":"YulFunctionCall","src":"3920:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3908:6:15"},"nodeType":"YulFunctionCall","src":"3908:37:15"},"nodeType":"YulExpressionStatement","src":"3908:37:15"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3886:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3893:3:15","type":""}],"src":"3833:118:15"},{"body":{"nodeType":"YulBlock","src":"4055:124:15","statements":[{"nodeType":"YulAssignment","src":"4065:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4077:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4088:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4073:3:15"},"nodeType":"YulFunctionCall","src":"4073:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4065:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4145:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4158:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4169:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4154:3:15"},"nodeType":"YulFunctionCall","src":"4154:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"4101:43:15"},"nodeType":"YulFunctionCall","src":"4101:71:15"},"nodeType":"YulExpressionStatement","src":"4101:71:15"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4027:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4039:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4050:4:15","type":""}],"src":"3957:222:15"},{"body":{"nodeType":"YulBlock","src":"4228:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"4285:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4294:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4297:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4287:6:15"},"nodeType":"YulFunctionCall","src":"4287:12:15"},"nodeType":"YulExpressionStatement","src":"4287:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4251:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4276:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"4258:17:15"},"nodeType":"YulFunctionCall","src":"4258:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4248:2:15"},"nodeType":"YulFunctionCall","src":"4248:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4241:6:15"},"nodeType":"YulFunctionCall","src":"4241:43:15"},"nodeType":"YulIf","src":"4238:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4221:5:15","type":""}],"src":"4185:122:15"},{"body":{"nodeType":"YulBlock","src":"4365:87:15","statements":[{"nodeType":"YulAssignment","src":"4375:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4397:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4384:12:15"},"nodeType":"YulFunctionCall","src":"4384:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4375:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4440:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4413:26:15"},"nodeType":"YulFunctionCall","src":"4413:33:15"},"nodeType":"YulExpressionStatement","src":"4413:33:15"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4343:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"4351:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4359:5:15","type":""}],"src":"4313:139:15"},{"body":{"nodeType":"YulBlock","src":"4541:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"4587:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4589:77:15"},"nodeType":"YulFunctionCall","src":"4589:79:15"},"nodeType":"YulExpressionStatement","src":"4589:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4562:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4558:3:15"},"nodeType":"YulFunctionCall","src":"4558:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"4583:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4554:3:15"},"nodeType":"YulFunctionCall","src":"4554:32:15"},"nodeType":"YulIf","src":"4551:119:15"},{"nodeType":"YulBlock","src":"4680:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4695:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"4709:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4699:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4724:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4759:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4770:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4755:3:15"},"nodeType":"YulFunctionCall","src":"4755:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4779:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4734:20:15"},"nodeType":"YulFunctionCall","src":"4734:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4724:6:15"}]}]},{"nodeType":"YulBlock","src":"4807:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4822:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"4836:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4826:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4852:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4898:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4883:3:15"},"nodeType":"YulFunctionCall","src":"4883:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4907:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4862:20:15"},"nodeType":"YulFunctionCall","src":"4862:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4852:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4503:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4514:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4526:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4534:6:15","type":""}],"src":"4458:474:15"},{"body":{"nodeType":"YulBlock","src":"5003:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5020:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5043:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5025:17:15"},"nodeType":"YulFunctionCall","src":"5025:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5013:6:15"},"nodeType":"YulFunctionCall","src":"5013:37:15"},"nodeType":"YulExpressionStatement","src":"5013:37:15"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4991:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4998:3:15","type":""}],"src":"4938:118:15"},{"body":{"nodeType":"YulBlock","src":"5160:124:15","statements":[{"nodeType":"YulAssignment","src":"5170:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5182:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"5193:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5178:3:15"},"nodeType":"YulFunctionCall","src":"5178:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5170:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5250:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5263:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"5274:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5259:3:15"},"nodeType":"YulFunctionCall","src":"5259:17:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5206:43:15"},"nodeType":"YulFunctionCall","src":"5206:71:15"},"nodeType":"YulExpressionStatement","src":"5206:71:15"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5132:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5144:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5155:4:15","type":""}],"src":"5062:222:15"},{"body":{"nodeType":"YulBlock","src":"5390:519:15","statements":[{"body":{"nodeType":"YulBlock","src":"5436:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5438:77:15"},"nodeType":"YulFunctionCall","src":"5438:79:15"},"nodeType":"YulExpressionStatement","src":"5438:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5411:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"5420:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5407:3:15"},"nodeType":"YulFunctionCall","src":"5407:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"5432:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5403:3:15"},"nodeType":"YulFunctionCall","src":"5403:32:15"},"nodeType":"YulIf","src":"5400:119:15"},{"nodeType":"YulBlock","src":"5529:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5544:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5558:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5548:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5573:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5608:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5619:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5604:3:15"},"nodeType":"YulFunctionCall","src":"5604:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5628:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5583:20:15"},"nodeType":"YulFunctionCall","src":"5583:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5573:6:15"}]}]},{"nodeType":"YulBlock","src":"5656:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5671:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5685:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5675:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5701:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5736:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5747:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5732:3:15"},"nodeType":"YulFunctionCall","src":"5732:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5756:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5711:20:15"},"nodeType":"YulFunctionCall","src":"5711:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5701:6:15"}]}]},{"nodeType":"YulBlock","src":"5784:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5799:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5813:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5803:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5829:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5864:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5875:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5860:3:15"},"nodeType":"YulFunctionCall","src":"5860:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5884:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5839:20:15"},"nodeType":"YulFunctionCall","src":"5839:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5829:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5344:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5355:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5367:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5375:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5383:6:15","type":""}],"src":"5290:619:15"},{"body":{"nodeType":"YulBlock","src":"5981:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"6027:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6029:77:15"},"nodeType":"YulFunctionCall","src":"6029:79:15"},"nodeType":"YulExpressionStatement","src":"6029:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6002:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6011:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5998:3:15"},"nodeType":"YulFunctionCall","src":"5998:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6023:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5994:3:15"},"nodeType":"YulFunctionCall","src":"5994:32:15"},"nodeType":"YulIf","src":"5991:119:15"},{"nodeType":"YulBlock","src":"6120:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6135:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6149:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6139:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6164:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6210:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:15"},"nodeType":"YulFunctionCall","src":"6195:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6219:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6174:20:15"},"nodeType":"YulFunctionCall","src":"6174:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6164:6:15"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5951:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5962:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5974:6:15","type":""}],"src":"5915:329:15"},{"body":{"nodeType":"YulBlock","src":"6290:76:15","statements":[{"body":{"nodeType":"YulBlock","src":"6344:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6353:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6356:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6346:6:15"},"nodeType":"YulFunctionCall","src":"6346:12:15"},"nodeType":"YulExpressionStatement","src":"6346:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6313:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6335:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6320:14:15"},"nodeType":"YulFunctionCall","src":"6320:21:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6310:2:15"},"nodeType":"YulFunctionCall","src":"6310:32:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6303:6:15"},"nodeType":"YulFunctionCall","src":"6303:40:15"},"nodeType":"YulIf","src":"6300:60:15"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6283:5:15","type":""}],"src":"6250:116:15"},{"body":{"nodeType":"YulBlock","src":"6421:84:15","statements":[{"nodeType":"YulAssignment","src":"6431:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6453:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6440:12:15"},"nodeType":"YulFunctionCall","src":"6440:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6431:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6493:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6469:23:15"},"nodeType":"YulFunctionCall","src":"6469:30:15"},"nodeType":"YulExpressionStatement","src":"6469:30:15"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6399:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6407:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6415:5:15","type":""}],"src":"6372:133:15"},{"body":{"nodeType":"YulBlock","src":"6591:388:15","statements":[{"body":{"nodeType":"YulBlock","src":"6637:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6639:77:15"},"nodeType":"YulFunctionCall","src":"6639:79:15"},"nodeType":"YulExpressionStatement","src":"6639:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6612:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6621:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6608:3:15"},"nodeType":"YulFunctionCall","src":"6608:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6633:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6604:3:15"},"nodeType":"YulFunctionCall","src":"6604:32:15"},"nodeType":"YulIf","src":"6601:119:15"},{"nodeType":"YulBlock","src":"6730:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6745:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6759:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6749:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6774:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6809:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6820:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6805:3:15"},"nodeType":"YulFunctionCall","src":"6805:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6829:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6784:20:15"},"nodeType":"YulFunctionCall","src":"6784:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6774:6:15"}]}]},{"nodeType":"YulBlock","src":"6857:115:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6872:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6886:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6876:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6902:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6934:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6945:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6930:3:15"},"nodeType":"YulFunctionCall","src":"6930:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6954:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"6912:17:15"},"nodeType":"YulFunctionCall","src":"6912:50:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6902:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6553:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6564:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6576:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6584:6:15","type":""}],"src":"6511:468:15"},{"body":{"nodeType":"YulBlock","src":"7074:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7091:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7094:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7084:6:15"},"nodeType":"YulFunctionCall","src":"7084:12:15"},"nodeType":"YulExpressionStatement","src":"7084:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"6985:117:15"},{"body":{"nodeType":"YulBlock","src":"7197:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7214:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7217:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7207:6:15"},"nodeType":"YulFunctionCall","src":"7207:12:15"},"nodeType":"YulExpressionStatement","src":"7207:12:15"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"7108:117:15"},{"body":{"nodeType":"YulBlock","src":"7259:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7276:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7279:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7269:6:15"},"nodeType":"YulFunctionCall","src":"7269:88:15"},"nodeType":"YulExpressionStatement","src":"7269:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7373:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7376:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7366:6:15"},"nodeType":"YulFunctionCall","src":"7366:15:15"},"nodeType":"YulExpressionStatement","src":"7366:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7397:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7400:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7390:6:15"},"nodeType":"YulFunctionCall","src":"7390:15:15"},"nodeType":"YulExpressionStatement","src":"7390:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7231:180:15"},{"body":{"nodeType":"YulBlock","src":"7460:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7470:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7492:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7522:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7500:21:15"},"nodeType":"YulFunctionCall","src":"7500:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7488:3:15"},"nodeType":"YulFunctionCall","src":"7488:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7474:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"7639:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7641:16:15"},"nodeType":"YulFunctionCall","src":"7641:18:15"},"nodeType":"YulExpressionStatement","src":"7641:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7582:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"7594:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7579:2:15"},"nodeType":"YulFunctionCall","src":"7579:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7618:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7630:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7615:2:15"},"nodeType":"YulFunctionCall","src":"7615:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7576:2:15"},"nodeType":"YulFunctionCall","src":"7576:62:15"},"nodeType":"YulIf","src":"7573:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7677:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7681:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7670:6:15"},"nodeType":"YulFunctionCall","src":"7670:22:15"},"nodeType":"YulExpressionStatement","src":"7670:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7446:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"7454:4:15","type":""}],"src":"7417:281:15"},{"body":{"nodeType":"YulBlock","src":"7745:88:15","statements":[{"nodeType":"YulAssignment","src":"7755:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7765:18:15"},"nodeType":"YulFunctionCall","src":"7765:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7755:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7814:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"7822:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7794:19:15"},"nodeType":"YulFunctionCall","src":"7794:33:15"},"nodeType":"YulExpressionStatement","src":"7794:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7729:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7738:6:15","type":""}],"src":"7704:129:15"},{"body":{"nodeType":"YulBlock","src":"7905:241:15","statements":[{"body":{"nodeType":"YulBlock","src":"8010:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"8012:16:15"},"nodeType":"YulFunctionCall","src":"8012:18:15"},"nodeType":"YulExpressionStatement","src":"8012:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7982:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7990:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7979:2:15"},"nodeType":"YulFunctionCall","src":"7979:30:15"},"nodeType":"YulIf","src":"7976:56:15"},{"nodeType":"YulAssignment","src":"8042:37:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8072:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8050:21:15"},"nodeType":"YulFunctionCall","src":"8050:29:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8042:4:15"}]},{"nodeType":"YulAssignment","src":"8116:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"8128:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"8134:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8124:3:15"},"nodeType":"YulFunctionCall","src":"8124:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8116:4:15"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7889:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7900:4:15","type":""}],"src":"7839:307:15"},{"body":{"nodeType":"YulBlock","src":"8203:103:15","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8226:3:15"},{"name":"src","nodeType":"YulIdentifier","src":"8231:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"8236:6:15"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8213:12:15"},"nodeType":"YulFunctionCall","src":"8213:30:15"},"nodeType":"YulExpressionStatement","src":"8213:30:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8284:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"8289:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8280:3:15"},"nodeType":"YulFunctionCall","src":"8280:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"8298:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8273:6:15"},"nodeType":"YulFunctionCall","src":"8273:27:15"},"nodeType":"YulExpressionStatement","src":"8273:27:15"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8185:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8190:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"8195:6:15","type":""}],"src":"8152:154:15"},{"body":{"nodeType":"YulBlock","src":"8395:327:15","statements":[{"nodeType":"YulAssignment","src":"8405:74:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8471:6:15"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8430:40:15"},"nodeType":"YulFunctionCall","src":"8430:48:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8414:15:15"},"nodeType":"YulFunctionCall","src":"8414:65:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8405:5:15"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8495:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"8502:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8488:6:15"},"nodeType":"YulFunctionCall","src":"8488:21:15"},"nodeType":"YulExpressionStatement","src":"8488:21:15"},{"nodeType":"YulVariableDeclaration","src":"8518:27:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8533:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"8540:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8529:3:15"},"nodeType":"YulFunctionCall","src":"8529:16:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8522:3:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"8583:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"8585:77:15"},"nodeType":"YulFunctionCall","src":"8585:79:15"},"nodeType":"YulExpressionStatement","src":"8585:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8564:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"8569:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8560:3:15"},"nodeType":"YulFunctionCall","src":"8560:16:15"},{"name":"end","nodeType":"YulIdentifier","src":"8578:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8557:2:15"},"nodeType":"YulFunctionCall","src":"8557:25:15"},"nodeType":"YulIf","src":"8554:112:15"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8699:3:15"},{"name":"dst","nodeType":"YulIdentifier","src":"8704:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"8709:6:15"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"8675:23:15"},"nodeType":"YulFunctionCall","src":"8675:41:15"},"nodeType":"YulExpressionStatement","src":"8675:41:15"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8368:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"8373:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"8381:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8389:5:15","type":""}],"src":"8312:410:15"},{"body":{"nodeType":"YulBlock","src":"8802:277:15","statements":[{"body":{"nodeType":"YulBlock","src":"8851:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"8853:77:15"},"nodeType":"YulFunctionCall","src":"8853:79:15"},"nodeType":"YulExpressionStatement","src":"8853:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8830:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8838:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8826:3:15"},"nodeType":"YulFunctionCall","src":"8826:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"8845:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8822:3:15"},"nodeType":"YulFunctionCall","src":"8822:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8815:6:15"},"nodeType":"YulFunctionCall","src":"8815:35:15"},"nodeType":"YulIf","src":"8812:122:15"},{"nodeType":"YulVariableDeclaration","src":"8943:34:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8970:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8957:12:15"},"nodeType":"YulFunctionCall","src":"8957:20:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8947:6:15","type":""}]},{"nodeType":"YulAssignment","src":"8986:87:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9046:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9054:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9042:3:15"},"nodeType":"YulFunctionCall","src":"9042:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"9061:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"9069:3:15"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8995:46:15"},"nodeType":"YulFunctionCall","src":"8995:78:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8986:5:15"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8780:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"8788:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8796:5:15","type":""}],"src":"8741:338:15"},{"body":{"nodeType":"YulBlock","src":"9211:817:15","statements":[{"body":{"nodeType":"YulBlock","src":"9258:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9260:77:15"},"nodeType":"YulFunctionCall","src":"9260:79:15"},"nodeType":"YulExpressionStatement","src":"9260:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9232:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"9241:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9228:3:15"},"nodeType":"YulFunctionCall","src":"9228:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"9253:3:15","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9224:3:15"},"nodeType":"YulFunctionCall","src":"9224:33:15"},"nodeType":"YulIf","src":"9221:120:15"},{"nodeType":"YulBlock","src":"9351:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9366:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9380:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9370:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9395:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9430:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9441:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9426:3:15"},"nodeType":"YulFunctionCall","src":"9426:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9450:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9405:20:15"},"nodeType":"YulFunctionCall","src":"9405:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9395:6:15"}]}]},{"nodeType":"YulBlock","src":"9478:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9493:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9507:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9497:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9523:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9558:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9569:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9554:3:15"},"nodeType":"YulFunctionCall","src":"9554:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9578:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9533:20:15"},"nodeType":"YulFunctionCall","src":"9533:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9523:6:15"}]}]},{"nodeType":"YulBlock","src":"9606:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9621:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9635:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9625:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9651:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9686:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9697:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9682:3:15"},"nodeType":"YulFunctionCall","src":"9682:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9706:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"9661:20:15"},"nodeType":"YulFunctionCall","src":"9661:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9651:6:15"}]}]},{"nodeType":"YulBlock","src":"9734:287:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9749:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9780:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"9791:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9776:3:15"},"nodeType":"YulFunctionCall","src":"9776:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9763:12:15"},"nodeType":"YulFunctionCall","src":"9763:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9753:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"9842:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9844:77:15"},"nodeType":"YulFunctionCall","src":"9844:79:15"},"nodeType":"YulExpressionStatement","src":"9844:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9814:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9822:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9811:2:15"},"nodeType":"YulFunctionCall","src":"9811:30:15"},"nodeType":"YulIf","src":"9808:117:15"},{"nodeType":"YulAssignment","src":"9939:72:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9983:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9994:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:15"},"nodeType":"YulFunctionCall","src":"9979:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10003:7:15"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"9949:29:15"},"nodeType":"YulFunctionCall","src":"9949:62:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9939:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9157:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9168:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9180:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9188:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9196:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9204:6:15","type":""}],"src":"9085:943:15"},{"body":{"nodeType":"YulBlock","src":"10117:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"10163:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10165:77:15"},"nodeType":"YulFunctionCall","src":"10165:79:15"},"nodeType":"YulExpressionStatement","src":"10165:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10138:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"10147:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10134:3:15"},"nodeType":"YulFunctionCall","src":"10134:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"10159:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10130:3:15"},"nodeType":"YulFunctionCall","src":"10130:32:15"},"nodeType":"YulIf","src":"10127:119:15"},{"nodeType":"YulBlock","src":"10256:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10271:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10285:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10275:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10300:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10335:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10346:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10331:3:15"},"nodeType":"YulFunctionCall","src":"10331:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10355:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10310:20:15"},"nodeType":"YulFunctionCall","src":"10310:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10300:6:15"}]}]},{"nodeType":"YulBlock","src":"10383:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10398:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10412:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10402:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10428:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10463:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10474:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10459:3:15"},"nodeType":"YulFunctionCall","src":"10459:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10483:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10438:20:15"},"nodeType":"YulFunctionCall","src":"10438:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10428:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10079:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10090:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10102:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10110:6:15","type":""}],"src":"10034:474:15"},{"body":{"nodeType":"YulBlock","src":"10542:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10559:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10562:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10552:6:15"},"nodeType":"YulFunctionCall","src":"10552:88:15"},"nodeType":"YulExpressionStatement","src":"10552:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10656:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10659:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10649:6:15"},"nodeType":"YulFunctionCall","src":"10649:15:15"},"nodeType":"YulExpressionStatement","src":"10649:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10680:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10683:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10673:6:15"},"nodeType":"YulFunctionCall","src":"10673:15:15"},"nodeType":"YulExpressionStatement","src":"10673:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"10514:180:15"},{"body":{"nodeType":"YulBlock","src":"10751:269:15","statements":[{"nodeType":"YulAssignment","src":"10761:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10775:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"10781:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10771:3:15"},"nodeType":"YulFunctionCall","src":"10771:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10761:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"10792:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10822:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"10828:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10818:3:15"},"nodeType":"YulFunctionCall","src":"10818:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"10796:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"10869:51:15","statements":[{"nodeType":"YulAssignment","src":"10883:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10897:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"10905:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10893:3:15"},"nodeType":"YulFunctionCall","src":"10893:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10883:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10849:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10842:6:15"},"nodeType":"YulFunctionCall","src":"10842:26:15"},"nodeType":"YulIf","src":"10839:81:15"},{"body":{"nodeType":"YulBlock","src":"10972:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"10986:16:15"},"nodeType":"YulFunctionCall","src":"10986:18:15"},"nodeType":"YulExpressionStatement","src":"10986:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10936:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10959:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"10967:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10956:2:15"},"nodeType":"YulFunctionCall","src":"10956:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10933:2:15"},"nodeType":"YulFunctionCall","src":"10933:38:15"},"nodeType":"YulIf","src":"10930:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"10735:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"10744:6:15","type":""}],"src":"10700:320:15"},{"body":{"nodeType":"YulBlock","src":"11132:114:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11154:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"11162:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11150:3:15"},"nodeType":"YulFunctionCall","src":"11150:14:15"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"11166:34:15","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11143:6:15"},"nodeType":"YulFunctionCall","src":"11143:58:15"},"nodeType":"YulExpressionStatement","src":"11143:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11222:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"11230:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11218:3:15"},"nodeType":"YulFunctionCall","src":"11218:15:15"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"11235:3:15","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11211:6:15"},"nodeType":"YulFunctionCall","src":"11211:28:15"},"nodeType":"YulExpressionStatement","src":"11211:28:15"}]},"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11124:6:15","type":""}],"src":"11026:220:15"},{"body":{"nodeType":"YulBlock","src":"11398:220:15","statements":[{"nodeType":"YulAssignment","src":"11408:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11474:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"11479:2:15","type":"","value":"33"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11415:58:15"},"nodeType":"YulFunctionCall","src":"11415:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11408:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11580:3:15"}],"functionName":{"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulIdentifier","src":"11491:88:15"},"nodeType":"YulFunctionCall","src":"11491:93:15"},"nodeType":"YulExpressionStatement","src":"11491:93:15"},{"nodeType":"YulAssignment","src":"11593:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11604:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"11609:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11600:3:15"},"nodeType":"YulFunctionCall","src":"11600:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11593:3:15"}]}]},"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11386:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11394:3:15","type":""}],"src":"11252:366:15"},{"body":{"nodeType":"YulBlock","src":"11795:248:15","statements":[{"nodeType":"YulAssignment","src":"11805:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11817:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11828:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11813:3:15"},"nodeType":"YulFunctionCall","src":"11813:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11805:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11852:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11863:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11848:3:15"},"nodeType":"YulFunctionCall","src":"11848:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11871:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"11877:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11867:3:15"},"nodeType":"YulFunctionCall","src":"11867:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11841:6:15"},"nodeType":"YulFunctionCall","src":"11841:47:15"},"nodeType":"YulExpressionStatement","src":"11841:47:15"},{"nodeType":"YulAssignment","src":"11897:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12031:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11905:124:15"},"nodeType":"YulFunctionCall","src":"11905:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11897:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11775:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11790:4:15","type":""}],"src":"11624:419:15"},{"body":{"nodeType":"YulBlock","src":"12155:143:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12177:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12185:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12173:3:15"},"nodeType":"YulFunctionCall","src":"12173:14:15"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"12189:34:15","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12166:6:15"},"nodeType":"YulFunctionCall","src":"12166:58:15"},"nodeType":"YulExpressionStatement","src":"12166:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12245:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12253:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12241:3:15"},"nodeType":"YulFunctionCall","src":"12241:15:15"},{"hexValue":"6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"12258:32:15","type":"","value":"ken owner nor approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12234:6:15"},"nodeType":"YulFunctionCall","src":"12234:57:15"},"nodeType":"YulExpressionStatement","src":"12234:57:15"}]},"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12147:6:15","type":""}],"src":"12049:249:15"},{"body":{"nodeType":"YulBlock","src":"12450:220:15","statements":[{"nodeType":"YulAssignment","src":"12460:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12526:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"12531:2:15","type":"","value":"62"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12467:58:15"},"nodeType":"YulFunctionCall","src":"12467:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12460:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12632:3:15"}],"functionName":{"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulIdentifier","src":"12543:88:15"},"nodeType":"YulFunctionCall","src":"12543:93:15"},"nodeType":"YulExpressionStatement","src":"12543:93:15"},{"nodeType":"YulAssignment","src":"12645:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12656:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"12661:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12652:3:15"},"nodeType":"YulFunctionCall","src":"12652:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12645:3:15"}]}]},"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12438:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12446:3:15","type":""}],"src":"12304:366:15"},{"body":{"nodeType":"YulBlock","src":"12847:248:15","statements":[{"nodeType":"YulAssignment","src":"12857:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12869:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"12880:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12865:3:15"},"nodeType":"YulFunctionCall","src":"12865:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12857:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12904:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"12915:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12900:3:15"},"nodeType":"YulFunctionCall","src":"12900:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12923:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"12929:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12919:3:15"},"nodeType":"YulFunctionCall","src":"12919:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12893:6:15"},"nodeType":"YulFunctionCall","src":"12893:47:15"},"nodeType":"YulExpressionStatement","src":"12893:47:15"},{"nodeType":"YulAssignment","src":"12949:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13083:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12957:124:15"},"nodeType":"YulFunctionCall","src":"12957:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12949:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12827:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12842:4:15","type":""}],"src":"12676:419:15"},{"body":{"nodeType":"YulBlock","src":"13207:127:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13229:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"13237:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13225:3:15"},"nodeType":"YulFunctionCall","src":"13225:14:15"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"13241:34:15","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13218:6:15"},"nodeType":"YulFunctionCall","src":"13218:58:15"},"nodeType":"YulExpressionStatement","src":"13218:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13297:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"13305:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13293:3:15"},"nodeType":"YulFunctionCall","src":"13293:15:15"},{"hexValue":"72206e6f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"13310:16:15","type":"","value":"r nor approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13286:6:15"},"nodeType":"YulFunctionCall","src":"13286:41:15"},"nodeType":"YulExpressionStatement","src":"13286:41:15"}]},"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"13199:6:15","type":""}],"src":"13101:233:15"},{"body":{"nodeType":"YulBlock","src":"13486:220:15","statements":[{"nodeType":"YulAssignment","src":"13496:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13562:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"13567:2:15","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13503:58:15"},"nodeType":"YulFunctionCall","src":"13503:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13496:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13668:3:15"}],"functionName":{"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulIdentifier","src":"13579:88:15"},"nodeType":"YulFunctionCall","src":"13579:93:15"},"nodeType":"YulExpressionStatement","src":"13579:93:15"},{"nodeType":"YulAssignment","src":"13681:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13692:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"13697:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13688:3:15"},"nodeType":"YulFunctionCall","src":"13688:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13681:3:15"}]}]},"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13474:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13482:3:15","type":""}],"src":"13340:366:15"},{"body":{"nodeType":"YulBlock","src":"13883:248:15","statements":[{"nodeType":"YulAssignment","src":"13893:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13905:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"13916:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13901:3:15"},"nodeType":"YulFunctionCall","src":"13901:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13893:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13940:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"13951:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13936:3:15"},"nodeType":"YulFunctionCall","src":"13936:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13959:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"13965:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13955:3:15"},"nodeType":"YulFunctionCall","src":"13955:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13929:6:15"},"nodeType":"YulFunctionCall","src":"13929:47:15"},"nodeType":"YulExpressionStatement","src":"13929:47:15"},{"nodeType":"YulAssignment","src":"13985:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14119:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13993:124:15"},"nodeType":"YulFunctionCall","src":"13993:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13985:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13863:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13878:4:15","type":""}],"src":"13712:419:15"},{"body":{"nodeType":"YulBlock","src":"14243:124:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14265:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14273:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14261:3:15"},"nodeType":"YulFunctionCall","src":"14261:14:15"},{"hexValue":"455243373231456e756d657261626c653a206f776e657220696e646578206f75","kind":"string","nodeType":"YulLiteral","src":"14277:34:15","type":"","value":"ERC721Enumerable: owner index ou"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14254:6:15"},"nodeType":"YulFunctionCall","src":"14254:58:15"},"nodeType":"YulExpressionStatement","src":"14254:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14333:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14341:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14329:3:15"},"nodeType":"YulFunctionCall","src":"14329:15:15"},{"hexValue":"74206f6620626f756e6473","kind":"string","nodeType":"YulLiteral","src":"14346:13:15","type":"","value":"t of bounds"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14322:6:15"},"nodeType":"YulFunctionCall","src":"14322:38:15"},"nodeType":"YulExpressionStatement","src":"14322:38:15"}]},"name":"store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14235:6:15","type":""}],"src":"14137:230:15"},{"body":{"nodeType":"YulBlock","src":"14519:220:15","statements":[{"nodeType":"YulAssignment","src":"14529:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14595:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14600:2:15","type":"","value":"43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14536:58:15"},"nodeType":"YulFunctionCall","src":"14536:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14529:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14701:3:15"}],"functionName":{"name":"store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","nodeType":"YulIdentifier","src":"14612:88:15"},"nodeType":"YulFunctionCall","src":"14612:93:15"},"nodeType":"YulExpressionStatement","src":"14612:93:15"},{"nodeType":"YulAssignment","src":"14714:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14725:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14730:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14721:3:15"},"nodeType":"YulFunctionCall","src":"14721:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14714:3:15"}]}]},"name":"abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14507:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14515:3:15","type":""}],"src":"14373:366:15"},{"body":{"nodeType":"YulBlock","src":"14916:248:15","statements":[{"nodeType":"YulAssignment","src":"14926:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14938:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"14949:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14934:3:15"},"nodeType":"YulFunctionCall","src":"14934:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14926:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14973:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"14984:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14969:3:15"},"nodeType":"YulFunctionCall","src":"14969:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14992:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"14998:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14988:3:15"},"nodeType":"YulFunctionCall","src":"14988:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14962:6:15"},"nodeType":"YulFunctionCall","src":"14962:47:15"},"nodeType":"YulExpressionStatement","src":"14962:47:15"},{"nodeType":"YulAssignment","src":"15018:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15152:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15026:124:15"},"nodeType":"YulFunctionCall","src":"15026:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15018:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14896:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14911:4:15","type":""}],"src":"14745:419:15"},{"body":{"nodeType":"YulBlock","src":"15198:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15215:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15218:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15208:6:15"},"nodeType":"YulFunctionCall","src":"15208:88:15"},"nodeType":"YulExpressionStatement","src":"15208:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15312:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"15315:4:15","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15305:6:15"},"nodeType":"YulFunctionCall","src":"15305:15:15"},"nodeType":"YulExpressionStatement","src":"15305:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15336:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15339:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15329:6:15"},"nodeType":"YulFunctionCall","src":"15329:15:15"},"nodeType":"YulExpressionStatement","src":"15329:15:15"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"15170:180:15"},{"body":{"nodeType":"YulBlock","src":"15400:261:15","statements":[{"nodeType":"YulAssignment","src":"15410:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15433:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"15415:17:15"},"nodeType":"YulFunctionCall","src":"15415:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"15410:1:15"}]},{"nodeType":"YulAssignment","src":"15444:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15467:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"15449:17:15"},"nodeType":"YulFunctionCall","src":"15449:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"15444:1:15"}]},{"body":{"nodeType":"YulBlock","src":"15607:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"15609:16:15"},"nodeType":"YulFunctionCall","src":"15609:18:15"},"nodeType":"YulExpressionStatement","src":"15609:18:15"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15528:1:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15535:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"15603:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15531:3:15"},"nodeType":"YulFunctionCall","src":"15531:74:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15525:2:15"},"nodeType":"YulFunctionCall","src":"15525:81:15"},"nodeType":"YulIf","src":"15522:107:15"},{"nodeType":"YulAssignment","src":"15639:16:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15650:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"15653:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15646:3:15"},"nodeType":"YulFunctionCall","src":"15646:9:15"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"15639:3:15"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15387:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"15390:1:15","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"15396:3:15","type":""}],"src":"15356:305:15"},{"body":{"nodeType":"YulBlock","src":"15712:146:15","statements":[{"nodeType":"YulAssignment","src":"15722:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15745:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"15727:17:15"},"nodeType":"YulFunctionCall","src":"15727:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"15722:1:15"}]},{"nodeType":"YulAssignment","src":"15756:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15779:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"15761:17:15"},"nodeType":"YulFunctionCall","src":"15761:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"15756:1:15"}]},{"body":{"nodeType":"YulBlock","src":"15803:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"15805:16:15"},"nodeType":"YulFunctionCall","src":"15805:18:15"},"nodeType":"YulExpressionStatement","src":"15805:18:15"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15797:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"15800:1:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15794:2:15"},"nodeType":"YulFunctionCall","src":"15794:8:15"},"nodeType":"YulIf","src":"15791:34:15"},{"nodeType":"YulAssignment","src":"15835:17:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15847:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"15850:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15843:3:15"},"nodeType":"YulFunctionCall","src":"15843:9:15"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"15835:4:15"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15698:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"15701:1:15","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"15707:4:15","type":""}],"src":"15667:191:15"},{"body":{"nodeType":"YulBlock","src":"15907:190:15","statements":[{"nodeType":"YulAssignment","src":"15917:33:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15944:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"15926:17:15"},"nodeType":"YulFunctionCall","src":"15926:24:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"15917:5:15"}]},{"body":{"nodeType":"YulBlock","src":"16040:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"16042:16:15"},"nodeType":"YulFunctionCall","src":"16042:18:15"},"nodeType":"YulExpressionStatement","src":"16042:18:15"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15965:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"15972:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15962:2:15"},"nodeType":"YulFunctionCall","src":"15962:77:15"},"nodeType":"YulIf","src":"15959:103:15"},{"nodeType":"YulAssignment","src":"16071:20:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16082:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"16089:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16078:3:15"},"nodeType":"YulFunctionCall","src":"16078:13:15"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"16071:3:15"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15893:5:15","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"15903:3:15","type":""}],"src":"15864:233:15"},{"body":{"nodeType":"YulBlock","src":"16209:125:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"16231:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16239:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16227:3:15"},"nodeType":"YulFunctionCall","src":"16227:14:15"},{"hexValue":"455243373231456e756d657261626c653a20676c6f62616c20696e646578206f","kind":"string","nodeType":"YulLiteral","src":"16243:34:15","type":"","value":"ERC721Enumerable: global index o"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16220:6:15"},"nodeType":"YulFunctionCall","src":"16220:58:15"},"nodeType":"YulExpressionStatement","src":"16220:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"16299:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"16307:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16295:3:15"},"nodeType":"YulFunctionCall","src":"16295:15:15"},{"hexValue":"7574206f6620626f756e6473","kind":"string","nodeType":"YulLiteral","src":"16312:14:15","type":"","value":"ut of bounds"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16288:6:15"},"nodeType":"YulFunctionCall","src":"16288:39:15"},"nodeType":"YulExpressionStatement","src":"16288:39:15"}]},"name":"store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"16201:6:15","type":""}],"src":"16103:231:15"},{"body":{"nodeType":"YulBlock","src":"16486:220:15","statements":[{"nodeType":"YulAssignment","src":"16496:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16562:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"16567:2:15","type":"","value":"44"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16503:58:15"},"nodeType":"YulFunctionCall","src":"16503:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16496:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16668:3:15"}],"functionName":{"name":"store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","nodeType":"YulIdentifier","src":"16579:88:15"},"nodeType":"YulFunctionCall","src":"16579:93:15"},"nodeType":"YulExpressionStatement","src":"16579:93:15"},{"nodeType":"YulAssignment","src":"16681:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16692:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"16697:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16688:3:15"},"nodeType":"YulFunctionCall","src":"16688:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16681:3:15"}]}]},"name":"abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16474:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16482:3:15","type":""}],"src":"16340:366:15"},{"body":{"nodeType":"YulBlock","src":"16883:248:15","statements":[{"nodeType":"YulAssignment","src":"16893:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16905:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16916:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16901:3:15"},"nodeType":"YulFunctionCall","src":"16901:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16893:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16940:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"16951:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16936:3:15"},"nodeType":"YulFunctionCall","src":"16936:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16959:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"16965:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16955:3:15"},"nodeType":"YulFunctionCall","src":"16955:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16929:6:15"},"nodeType":"YulFunctionCall","src":"16929:47:15"},"nodeType":"YulExpressionStatement","src":"16929:47:15"},{"nodeType":"YulAssignment","src":"16985:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17119:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16993:124:15"},"nodeType":"YulFunctionCall","src":"16993:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16985:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16863:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16878:4:15","type":""}],"src":"16712:419:15"},{"body":{"nodeType":"YulBlock","src":"17243:122:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17265:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"17273:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17261:3:15"},"nodeType":"YulFunctionCall","src":"17261:14:15"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"17277:34:15","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17254:6:15"},"nodeType":"YulFunctionCall","src":"17254:58:15"},"nodeType":"YulExpressionStatement","src":"17254:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17333:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"17341:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17329:3:15"},"nodeType":"YulFunctionCall","src":"17329:15:15"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"17346:11:15","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17322:6:15"},"nodeType":"YulFunctionCall","src":"17322:36:15"},"nodeType":"YulExpressionStatement","src":"17322:36:15"}]},"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17235:6:15","type":""}],"src":"17137:228:15"},{"body":{"nodeType":"YulBlock","src":"17517:220:15","statements":[{"nodeType":"YulAssignment","src":"17527:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17593:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"17598:2:15","type":"","value":"41"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17534:58:15"},"nodeType":"YulFunctionCall","src":"17534:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17527:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17699:3:15"}],"functionName":{"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulIdentifier","src":"17610:88:15"},"nodeType":"YulFunctionCall","src":"17610:93:15"},"nodeType":"YulExpressionStatement","src":"17610:93:15"},{"nodeType":"YulAssignment","src":"17712:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17723:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"17728:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17719:3:15"},"nodeType":"YulFunctionCall","src":"17719:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17712:3:15"}]}]},"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17505:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17513:3:15","type":""}],"src":"17371:366:15"},{"body":{"nodeType":"YulBlock","src":"17914:248:15","statements":[{"nodeType":"YulAssignment","src":"17924:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17936:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17947:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17932:3:15"},"nodeType":"YulFunctionCall","src":"17932:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17924:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17971:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17982:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17967:3:15"},"nodeType":"YulFunctionCall","src":"17967:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17990:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"17996:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17986:3:15"},"nodeType":"YulFunctionCall","src":"17986:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17960:6:15"},"nodeType":"YulFunctionCall","src":"17960:47:15"},"nodeType":"YulExpressionStatement","src":"17960:47:15"},{"nodeType":"YulAssignment","src":"18016:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18150:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18024:124:15"},"nodeType":"YulFunctionCall","src":"18024:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18016:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17894:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17909:4:15","type":""}],"src":"17743:419:15"},{"body":{"nodeType":"YulBlock","src":"18282:34:15","statements":[{"nodeType":"YulAssignment","src":"18292:18:15","value":{"name":"pos","nodeType":"YulIdentifier","src":"18307:3:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"18292:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18254:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"18259:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"18270:11:15","type":""}],"src":"18168:148:15"},{"body":{"nodeType":"YulBlock","src":"18432:267:15","statements":[{"nodeType":"YulVariableDeclaration","src":"18442:53:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18489:5:15"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"18456:32:15"},"nodeType":"YulFunctionCall","src":"18456:39:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"18446:6:15","type":""}]},{"nodeType":"YulAssignment","src":"18504:96:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18588:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"18593:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"18511:76:15"},"nodeType":"YulFunctionCall","src":"18511:89:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18504:3:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18635:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"18642:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18631:3:15"},"nodeType":"YulFunctionCall","src":"18631:16:15"},{"name":"pos","nodeType":"YulIdentifier","src":"18649:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"18654:6:15"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"18609:21:15"},"nodeType":"YulFunctionCall","src":"18609:52:15"},"nodeType":"YulExpressionStatement","src":"18609:52:15"},{"nodeType":"YulAssignment","src":"18670:23:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18681:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"18686:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18677:3:15"},"nodeType":"YulFunctionCall","src":"18677:16:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18670:3:15"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18413:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18420:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18428:3:15","type":""}],"src":"18322:377:15"},{"body":{"nodeType":"YulBlock","src":"18889:251:15","statements":[{"nodeType":"YulAssignment","src":"18900:102:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18989:6:15"},{"name":"pos","nodeType":"YulIdentifier","src":"18998:3:15"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"18907:81:15"},"nodeType":"YulFunctionCall","src":"18907:95:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18900:3:15"}]},{"nodeType":"YulAssignment","src":"19012:102:15","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"19101:6:15"},{"name":"pos","nodeType":"YulIdentifier","src":"19110:3:15"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"19019:81:15"},"nodeType":"YulFunctionCall","src":"19019:95:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19012:3:15"}]},{"nodeType":"YulAssignment","src":"19124:10:15","value":{"name":"pos","nodeType":"YulIdentifier","src":"19131:3:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19124:3:15"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18860:3:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18866:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18874:6:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18885:3:15","type":""}],"src":"18705:435:15"},{"body":{"nodeType":"YulBlock","src":"19252:119:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19274:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"19282:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19270:3:15"},"nodeType":"YulFunctionCall","src":"19270:14:15"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"19286:34:15","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19263:6:15"},"nodeType":"YulFunctionCall","src":"19263:58:15"},"nodeType":"YulExpressionStatement","src":"19263:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19342:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"19350:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19338:3:15"},"nodeType":"YulFunctionCall","src":"19338:15:15"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"19355:8:15","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19331:6:15"},"nodeType":"YulFunctionCall","src":"19331:33:15"},"nodeType":"YulExpressionStatement","src":"19331:33:15"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19244:6:15","type":""}],"src":"19146:225:15"},{"body":{"nodeType":"YulBlock","src":"19523:220:15","statements":[{"nodeType":"YulAssignment","src":"19533:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19599:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19604:2:15","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19540:58:15"},"nodeType":"YulFunctionCall","src":"19540:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19533:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19705:3:15"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"19616:88:15"},"nodeType":"YulFunctionCall","src":"19616:93:15"},"nodeType":"YulExpressionStatement","src":"19616:93:15"},{"nodeType":"YulAssignment","src":"19718:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19729:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"19734:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19725:3:15"},"nodeType":"YulFunctionCall","src":"19725:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19718:3:15"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"19511:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"19519:3:15","type":""}],"src":"19377:366:15"},{"body":{"nodeType":"YulBlock","src":"19920:248:15","statements":[{"nodeType":"YulAssignment","src":"19930:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19942:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19953:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19938:3:15"},"nodeType":"YulFunctionCall","src":"19938:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19930:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19977:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"19988:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19973:3:15"},"nodeType":"YulFunctionCall","src":"19973:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19996:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"20002:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19992:3:15"},"nodeType":"YulFunctionCall","src":"19992:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19966:6:15"},"nodeType":"YulFunctionCall","src":"19966:47:15"},"nodeType":"YulExpressionStatement","src":"19966:47:15"},{"nodeType":"YulAssignment","src":"20022:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20156:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20030:124:15"},"nodeType":"YulFunctionCall","src":"20030:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20022:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19900:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19915:4:15","type":""}],"src":"19749:419:15"},{"body":{"nodeType":"YulBlock","src":"20280:68:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20302:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"20310:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20298:3:15"},"nodeType":"YulFunctionCall","src":"20298:14:15"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"20314:26:15","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20291:6:15"},"nodeType":"YulFunctionCall","src":"20291:50:15"},"nodeType":"YulExpressionStatement","src":"20291:50:15"}]},"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"20272:6:15","type":""}],"src":"20174:174:15"},{"body":{"nodeType":"YulBlock","src":"20500:220:15","statements":[{"nodeType":"YulAssignment","src":"20510:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20576:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"20581:2:15","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20517:58:15"},"nodeType":"YulFunctionCall","src":"20517:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"20510:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20682:3:15"}],"functionName":{"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulIdentifier","src":"20593:88:15"},"nodeType":"YulFunctionCall","src":"20593:93:15"},"nodeType":"YulExpressionStatement","src":"20593:93:15"},{"nodeType":"YulAssignment","src":"20695:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20706:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"20711:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20702:3:15"},"nodeType":"YulFunctionCall","src":"20702:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"20695:3:15"}]}]},"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"20488:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"20496:3:15","type":""}],"src":"20354:366:15"},{"body":{"nodeType":"YulBlock","src":"20897:248:15","statements":[{"nodeType":"YulAssignment","src":"20907:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20919:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20930:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20915:3:15"},"nodeType":"YulFunctionCall","src":"20915:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20907:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20954:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20965:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20950:3:15"},"nodeType":"YulFunctionCall","src":"20950:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20973:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"20979:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20969:3:15"},"nodeType":"YulFunctionCall","src":"20969:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20943:6:15"},"nodeType":"YulFunctionCall","src":"20943:47:15"},"nodeType":"YulExpressionStatement","src":"20943:47:15"},{"nodeType":"YulAssignment","src":"20999:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21133:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21007:124:15"},"nodeType":"YulFunctionCall","src":"21007:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20999:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20877:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20892:4:15","type":""}],"src":"20726:419:15"},{"body":{"nodeType":"YulBlock","src":"21257:118:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21279:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"21287:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21275:3:15"},"nodeType":"YulFunctionCall","src":"21275:14:15"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"21291:34:15","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21268:6:15"},"nodeType":"YulFunctionCall","src":"21268:58:15"},"nodeType":"YulExpressionStatement","src":"21268:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21347:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"21355:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21343:3:15"},"nodeType":"YulFunctionCall","src":"21343:15:15"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"21360:7:15","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21336:6:15"},"nodeType":"YulFunctionCall","src":"21336:32:15"},"nodeType":"YulExpressionStatement","src":"21336:32:15"}]},"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"21249:6:15","type":""}],"src":"21151:224:15"},{"body":{"nodeType":"YulBlock","src":"21527:220:15","statements":[{"nodeType":"YulAssignment","src":"21537:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21603:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21608:2:15","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21544:58:15"},"nodeType":"YulFunctionCall","src":"21544:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"21537:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21709:3:15"}],"functionName":{"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulIdentifier","src":"21620:88:15"},"nodeType":"YulFunctionCall","src":"21620:93:15"},"nodeType":"YulExpressionStatement","src":"21620:93:15"},{"nodeType":"YulAssignment","src":"21722:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21733:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21738:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21729:3:15"},"nodeType":"YulFunctionCall","src":"21729:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21722:3:15"}]}]},"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21515:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21523:3:15","type":""}],"src":"21381:366:15"},{"body":{"nodeType":"YulBlock","src":"21924:248:15","statements":[{"nodeType":"YulAssignment","src":"21934:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21946:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21957:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21942:3:15"},"nodeType":"YulFunctionCall","src":"21942:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21934:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21981:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21992:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21977:3:15"},"nodeType":"YulFunctionCall","src":"21977:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22000:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"22006:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21996:3:15"},"nodeType":"YulFunctionCall","src":"21996:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21970:6:15"},"nodeType":"YulFunctionCall","src":"21970:47:15"},"nodeType":"YulExpressionStatement","src":"21970:47:15"},{"nodeType":"YulAssignment","src":"22026:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22160:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22034:124:15"},"nodeType":"YulFunctionCall","src":"22034:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22026:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21904:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21919:4:15","type":""}],"src":"21753:419:15"},{"body":{"nodeType":"YulBlock","src":"22284:117:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"22306:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"22314:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22302:3:15"},"nodeType":"YulFunctionCall","src":"22302:14:15"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"22318:34:15","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22295:6:15"},"nodeType":"YulFunctionCall","src":"22295:58:15"},"nodeType":"YulExpressionStatement","src":"22295:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"22374:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"22382:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22370:3:15"},"nodeType":"YulFunctionCall","src":"22370:15:15"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"22387:6:15","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22363:6:15"},"nodeType":"YulFunctionCall","src":"22363:31:15"},"nodeType":"YulExpressionStatement","src":"22363:31:15"}]},"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"22276:6:15","type":""}],"src":"22178:223:15"},{"body":{"nodeType":"YulBlock","src":"22553:220:15","statements":[{"nodeType":"YulAssignment","src":"22563:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22629:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"22634:2:15","type":"","value":"36"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22570:58:15"},"nodeType":"YulFunctionCall","src":"22570:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"22563:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22735:3:15"}],"functionName":{"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulIdentifier","src":"22646:88:15"},"nodeType":"YulFunctionCall","src":"22646:93:15"},"nodeType":"YulExpressionStatement","src":"22646:93:15"},{"nodeType":"YulAssignment","src":"22748:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22759:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"22764:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22755:3:15"},"nodeType":"YulFunctionCall","src":"22755:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"22748:3:15"}]}]},"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"22541:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"22549:3:15","type":""}],"src":"22407:366:15"},{"body":{"nodeType":"YulBlock","src":"22950:248:15","statements":[{"nodeType":"YulAssignment","src":"22960:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22972:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"22983:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22968:3:15"},"nodeType":"YulFunctionCall","src":"22968:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22960:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23007:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23018:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23003:3:15"},"nodeType":"YulFunctionCall","src":"23003:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23026:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"23032:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23022:3:15"},"nodeType":"YulFunctionCall","src":"23022:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22996:6:15"},"nodeType":"YulFunctionCall","src":"22996:47:15"},"nodeType":"YulExpressionStatement","src":"22996:47:15"},{"nodeType":"YulAssignment","src":"23052:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23186:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23060:124:15"},"nodeType":"YulFunctionCall","src":"23060:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23052:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22930:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22945:4:15","type":""}],"src":"22779:419:15"},{"body":{"nodeType":"YulBlock","src":"23310:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23332:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"23340:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23328:3:15"},"nodeType":"YulFunctionCall","src":"23328:14:15"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"23344:34:15","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23321:6:15"},"nodeType":"YulFunctionCall","src":"23321:58:15"},"nodeType":"YulExpressionStatement","src":"23321:58:15"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"23302:6:15","type":""}],"src":"23204:182:15"},{"body":{"nodeType":"YulBlock","src":"23538:220:15","statements":[{"nodeType":"YulAssignment","src":"23548:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23614:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"23619:2:15","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23555:58:15"},"nodeType":"YulFunctionCall","src":"23555:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"23548:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23720:3:15"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"23631:88:15"},"nodeType":"YulFunctionCall","src":"23631:93:15"},"nodeType":"YulExpressionStatement","src":"23631:93:15"},{"nodeType":"YulAssignment","src":"23733:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23744:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"23749:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23740:3:15"},"nodeType":"YulFunctionCall","src":"23740:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"23733:3:15"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"23526:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"23534:3:15","type":""}],"src":"23392:366:15"},{"body":{"nodeType":"YulBlock","src":"23935:248:15","statements":[{"nodeType":"YulAssignment","src":"23945:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23957:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23968:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23953:3:15"},"nodeType":"YulFunctionCall","src":"23953:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23945:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23992:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"24003:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23988:3:15"},"nodeType":"YulFunctionCall","src":"23988:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24011:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"24017:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24007:3:15"},"nodeType":"YulFunctionCall","src":"24007:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23981:6:15"},"nodeType":"YulFunctionCall","src":"23981:47:15"},"nodeType":"YulExpressionStatement","src":"23981:47:15"},{"nodeType":"YulAssignment","src":"24037:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24171:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24045:124:15"},"nodeType":"YulFunctionCall","src":"24045:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24037:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23915:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23930:4:15","type":""}],"src":"23764:419:15"},{"body":{"nodeType":"YulBlock","src":"24295:69:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24317:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"24325:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24313:3:15"},"nodeType":"YulFunctionCall","src":"24313:14:15"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"24329:27:15","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24306:6:15"},"nodeType":"YulFunctionCall","src":"24306:51:15"},"nodeType":"YulExpressionStatement","src":"24306:51:15"}]},"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"24287:6:15","type":""}],"src":"24189:175:15"},{"body":{"nodeType":"YulBlock","src":"24516:220:15","statements":[{"nodeType":"YulAssignment","src":"24526:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24592:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"24597:2:15","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24533:58:15"},"nodeType":"YulFunctionCall","src":"24533:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"24526:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24698:3:15"}],"functionName":{"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulIdentifier","src":"24609:88:15"},"nodeType":"YulFunctionCall","src":"24609:93:15"},"nodeType":"YulExpressionStatement","src":"24609:93:15"},{"nodeType":"YulAssignment","src":"24711:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24722:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"24727:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24718:3:15"},"nodeType":"YulFunctionCall","src":"24718:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"24711:3:15"}]}]},"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"24504:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"24512:3:15","type":""}],"src":"24370:366:15"},{"body":{"nodeType":"YulBlock","src":"24913:248:15","statements":[{"nodeType":"YulAssignment","src":"24923:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24935:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"24946:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24931:3:15"},"nodeType":"YulFunctionCall","src":"24931:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24923:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24970:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"24981:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24966:3:15"},"nodeType":"YulFunctionCall","src":"24966:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24989:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"24995:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24985:3:15"},"nodeType":"YulFunctionCall","src":"24985:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24959:6:15"},"nodeType":"YulFunctionCall","src":"24959:47:15"},"nodeType":"YulExpressionStatement","src":"24959:47:15"},{"nodeType":"YulAssignment","src":"25015:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"25149:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"25023:124:15"},"nodeType":"YulFunctionCall","src":"25023:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"25015:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24893:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24908:4:15","type":""}],"src":"24742:419:15"},{"body":{"nodeType":"YulBlock","src":"25273:131:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"25295:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"25303:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25291:3:15"},"nodeType":"YulFunctionCall","src":"25291:14:15"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"25307:34:15","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25284:6:15"},"nodeType":"YulFunctionCall","src":"25284:58:15"},"nodeType":"YulExpressionStatement","src":"25284:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"25363:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"25371:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25359:3:15"},"nodeType":"YulFunctionCall","src":"25359:15:15"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"25376:20:15","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25352:6:15"},"nodeType":"YulFunctionCall","src":"25352:45:15"},"nodeType":"YulExpressionStatement","src":"25352:45:15"}]},"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"25265:6:15","type":""}],"src":"25167:237:15"},{"body":{"nodeType":"YulBlock","src":"25556:220:15","statements":[{"nodeType":"YulAssignment","src":"25566:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25632:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"25637:2:15","type":"","value":"50"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"25573:58:15"},"nodeType":"YulFunctionCall","src":"25573:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25566:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25738:3:15"}],"functionName":{"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulIdentifier","src":"25649:88:15"},"nodeType":"YulFunctionCall","src":"25649:93:15"},"nodeType":"YulExpressionStatement","src":"25649:93:15"},{"nodeType":"YulAssignment","src":"25751:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25762:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"25767:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25758:3:15"},"nodeType":"YulFunctionCall","src":"25758:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"25751:3:15"}]}]},"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"25544:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"25552:3:15","type":""}],"src":"25410:366:15"},{"body":{"nodeType":"YulBlock","src":"25953:248:15","statements":[{"nodeType":"YulAssignment","src":"25963:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25975:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"25986:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25971:3:15"},"nodeType":"YulFunctionCall","src":"25971:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"25963:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26010:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"26021:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26006:3:15"},"nodeType":"YulFunctionCall","src":"26006:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"26029:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"26035:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26025:3:15"},"nodeType":"YulFunctionCall","src":"26025:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25999:6:15"},"nodeType":"YulFunctionCall","src":"25999:47:15"},"nodeType":"YulExpressionStatement","src":"25999:47:15"},{"nodeType":"YulAssignment","src":"26055:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"26189:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26063:124:15"},"nodeType":"YulFunctionCall","src":"26063:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26055:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25933:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"25948:4:15","type":""}],"src":"25782:419:15"},{"body":{"nodeType":"YulBlock","src":"26235:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26252:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26255:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26245:6:15"},"nodeType":"YulFunctionCall","src":"26245:88:15"},"nodeType":"YulExpressionStatement","src":"26245:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26349:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"26352:4:15","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26342:6:15"},"nodeType":"YulFunctionCall","src":"26342:15:15"},"nodeType":"YulExpressionStatement","src":"26342:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26373:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26376:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26366:6:15"},"nodeType":"YulFunctionCall","src":"26366:15:15"},"nodeType":"YulExpressionStatement","src":"26366:15:15"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"26207:180:15"},{"body":{"nodeType":"YulBlock","src":"26451:40:15","statements":[{"nodeType":"YulAssignment","src":"26462:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26478:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26472:5:15"},"nodeType":"YulFunctionCall","src":"26472:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"26462:6:15"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26434:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"26444:6:15","type":""}],"src":"26393:98:15"},{"body":{"nodeType":"YulBlock","src":"26592:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26609:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"26614:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26602:6:15"},"nodeType":"YulFunctionCall","src":"26602:19:15"},"nodeType":"YulExpressionStatement","src":"26602:19:15"},{"nodeType":"YulAssignment","src":"26630:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26649:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"26654:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26645:3:15"},"nodeType":"YulFunctionCall","src":"26645:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"26630:11:15"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"26564:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"26569:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"26580:11:15","type":""}],"src":"26497:168:15"},{"body":{"nodeType":"YulBlock","src":"26761:270:15","statements":[{"nodeType":"YulVariableDeclaration","src":"26771:52:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26817:5:15"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"26785:31:15"},"nodeType":"YulFunctionCall","src":"26785:38:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"26775:6:15","type":""}]},{"nodeType":"YulAssignment","src":"26832:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26897:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"26902:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26839:57:15"},"nodeType":"YulFunctionCall","src":"26839:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"26832:3:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26944:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"26951:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26940:3:15"},"nodeType":"YulFunctionCall","src":"26940:16:15"},{"name":"pos","nodeType":"YulIdentifier","src":"26958:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"26963:6:15"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"26918:21:15"},"nodeType":"YulFunctionCall","src":"26918:52:15"},"nodeType":"YulExpressionStatement","src":"26918:52:15"},{"nodeType":"YulAssignment","src":"26979:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26990:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"27017:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"26995:21:15"},"nodeType":"YulFunctionCall","src":"26995:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26986:3:15"},"nodeType":"YulFunctionCall","src":"26986:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"26979:3:15"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26742:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"26749:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"26757:3:15","type":""}],"src":"26671:360:15"},{"body":{"nodeType":"YulBlock","src":"27237:440:15","statements":[{"nodeType":"YulAssignment","src":"27247:27:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27259:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27270:3:15","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27255:3:15"},"nodeType":"YulFunctionCall","src":"27255:19:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27247:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"27328:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27341:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27352:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27337:3:15"},"nodeType":"YulFunctionCall","src":"27337:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27284:43:15"},"nodeType":"YulFunctionCall","src":"27284:71:15"},"nodeType":"YulExpressionStatement","src":"27284:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"27409:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27422:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27433:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27418:3:15"},"nodeType":"YulFunctionCall","src":"27418:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27365:43:15"},"nodeType":"YulFunctionCall","src":"27365:72:15"},"nodeType":"YulExpressionStatement","src":"27365:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"27491:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27504:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27515:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27500:3:15"},"nodeType":"YulFunctionCall","src":"27500:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"27447:43:15"},"nodeType":"YulFunctionCall","src":"27447:72:15"},"nodeType":"YulExpressionStatement","src":"27447:72:15"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27540:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"27551:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27536:3:15"},"nodeType":"YulFunctionCall","src":"27536:18:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27560:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"27566:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27556:3:15"},"nodeType":"YulFunctionCall","src":"27556:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27529:6:15"},"nodeType":"YulFunctionCall","src":"27529:48:15"},"nodeType":"YulExpressionStatement","src":"27529:48:15"},{"nodeType":"YulAssignment","src":"27586:84:15","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"27656:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"27665:4:15"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27594:61:15"},"nodeType":"YulFunctionCall","src":"27594:76:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27586:4:15"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27185:9:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"27197:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"27205:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"27213:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"27221:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27232:4:15","type":""}],"src":"27037:640:15"},{"body":{"nodeType":"YulBlock","src":"27745:79:15","statements":[{"nodeType":"YulAssignment","src":"27755:22:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"27770:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27764:5:15"},"nodeType":"YulFunctionCall","src":"27764:13:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"27755:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"27812:5:15"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"27786:25:15"},"nodeType":"YulFunctionCall","src":"27786:32:15"},"nodeType":"YulExpressionStatement","src":"27786:32:15"}]},"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"27723:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"27731:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"27739:5:15","type":""}],"src":"27683:141:15"},{"body":{"nodeType":"YulBlock","src":"27906:273:15","statements":[{"body":{"nodeType":"YulBlock","src":"27952:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"27954:77:15"},"nodeType":"YulFunctionCall","src":"27954:79:15"},"nodeType":"YulExpressionStatement","src":"27954:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"27927:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"27936:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27923:3:15"},"nodeType":"YulFunctionCall","src":"27923:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"27948:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"27919:3:15"},"nodeType":"YulFunctionCall","src":"27919:32:15"},"nodeType":"YulIf","src":"27916:119:15"},{"nodeType":"YulBlock","src":"28045:127:15","statements":[{"nodeType":"YulVariableDeclaration","src":"28060:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"28074:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"28064:6:15","type":""}]},{"nodeType":"YulAssignment","src":"28089:73:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28134:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"28145:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28130:3:15"},"nodeType":"YulFunctionCall","src":"28130:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"28154:7:15"}],"functionName":{"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulIdentifier","src":"28099:30:15"},"nodeType":"YulFunctionCall","src":"28099:63:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"28089:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27876:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"27887:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"27899:6:15","type":""}],"src":"27830:349:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approval to current owne\")\n\n mstore(add(memPtr, 32), \"r\")\n\n }\n\n function abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve caller is not to\")\n\n mstore(add(memPtr, 32), \"ken owner nor approved for all\")\n\n }\n\n function abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 62)\n store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: caller is not token owne\")\n\n mstore(add(memPtr, 32), \"r nor approved\")\n\n }\n\n function abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721Enumerable: owner index ou\")\n\n mstore(add(memPtr, 32), \"t of bounds\")\n\n }\n\n function abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721Enumerable: global index o\")\n\n mstore(add(memPtr, 32), \"ut of bounds\")\n\n }\n\n function abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 44)\n store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: address zero is not a va\")\n\n mstore(add(memPtr, 32), \"lid owner\")\n\n }\n\n function abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: invalid token ID\")\n\n }\n\n function abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer from incorrect \")\n\n mstore(add(memPtr, 32), \"owner\")\n\n }\n\n function abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve to caller\")\n\n }\n\n function abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to non ERC721Re\")\n\n mstore(add(memPtr, 32), \"ceiver implementer\")\n\n }\n\n function abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 50)\n store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_decode_t_bytes4_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061012c5760003560e01c80636352211e116100ad578063a22cb46511610071578063a22cb46514610331578063b88d4fde1461034d578063c87b56dd14610369578063e985e9c514610399578063f2fde38b146103c95761012c565b80636352211e1461028b57806370a08231146102bb578063715018a6146102eb5780638da5cb5b146102f557806395d89b41146103135761012c565b806323b872dd116100f457806323b872dd146101e95780632f745c59146102055780633cd29ac81461023557806342842e0e1461023f5780634f6ccce71461025b5761012c565b806301ffc9a71461013157806306fdde0314610161578063081812fc1461017f578063095ea7b3146101af57806318160ddd146101cb575b600080fd5b61014b60048036038101906101469190611ec7565b6103e5565b6040516101589190611f0f565b60405180910390f35b61016961045f565b6040516101769190611fc3565b60405180910390f35b6101996004803603810190610194919061201b565b6104f1565b6040516101a69190612089565b60405180910390f35b6101c960048036038101906101c491906120d0565b610537565b005b6101d361064e565b6040516101e0919061211f565b60405180910390f35b61020360048036038101906101fe919061213a565b610658565b005b61021f600480360381019061021a91906120d0565b6106b8565b60405161022c919061211f565b60405180910390f35b61023d610871565b005b6102596004803603810190610254919061213a565b610883565b005b6102756004803603810190610270919061201b565b6108a3565b604051610282919061211f565b60405180910390f35b6102a560048036038101906102a0919061201b565b6108fd565b6040516102b29190612089565b60405180910390f35b6102d560048036038101906102d0919061218d565b6109b5565b6040516102e2919061211f565b60405180910390f35b6102f3610a6c565b005b6102fd610a80565b60405161030a9190612089565b60405180910390f35b61031b610aa9565b6040516103289190611fc3565b60405180910390f35b61034b600480360381019061034691906121e6565b610b3b565b005b6103676004803603810190610362919061235b565b610b51565b005b610383600480360381019061037e919061201b565b610bb3565b6040516103909190611fc3565b60405180910390f35b6103b360048036038101906103ae91906123de565b610c1b565b6040516103c09190611f0f565b60405180910390f35b6103e360048036038101906103de919061218d565b610caf565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610458575061045782610d32565b5b9050919050565b60606001805461046e9061244d565b80601f016020809104026020016040519081016040528092919081815260200182805461049a9061244d565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60006104fc82610e14565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610542826108fd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906124f0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105d1610e5f565b73ffffffffffffffffffffffffffffffffffffffff16148061060057506105ff816105fa610e5f565b610c1b565b5b61063f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063690612582565b60405180910390fd5b6106498383610e67565b505050565b6000600a54905090565b610669610663610e5f565b82610f20565b6106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f90612614565b60405180910390fd5b6106b3838383610fb5565b505050565b60006106c3836109b5565b8210610704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fb906126a6565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361081757600061076361064e565b9050600080600190505b8281101561081357600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107b7826108fd565b73ffffffffffffffffffffffffffffffffffffffff1603610800576001826107df91906126f5565b9150846001836107ef919061274b565b036107ff5780935050505061086b565b5b808061080b9061277f565b91505061076d565b5050505b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000205490505b92915050565b61087961121b565b610881611299565b565b61089e83838360405180602001604052806000815250610b51565b505050565b6000600a5482106108e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e090612839565b60405180910390fd5b6001826108f691906126f5565b9050919050565b6000600a54821115610919576109128261138f565b90506109b0565b60006003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109ab57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b809150505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c906128cb565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a7461121b565b610a7e6000611440565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610ab89061244d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae49061244d565b8015610b315780601f10610b0657610100808354040283529160200191610b31565b820191906000526020600020905b815481529060010190602001808311610b1457829003601f168201915b5050505050905090565b610b4d610b46610e5f565b8383611504565b5050565b610b62610b5c610e5f565b83610f20565b610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890612614565b60405180910390fd5b610bad84848484611670565b50505050565b6060610bbe82610e14565b6000610bc86116cc565b90506000815111610be85760405180602001604052806000815250610c13565b80610bf28461175e565b604051602001610c03929190612927565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610cb761121b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d906129bd565b60405180910390fd5b610d2f81611440565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610dfd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e0d5750610e0c8261182c565b5b9050919050565b610e1d81611896565b610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5390612a29565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610eda836108fd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610f2c836108fd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f6e5750610f6d8185610c1b565b5b80610fac57508373ffffffffffffffffffffffffffffffffffffffff16610f94846104f1565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610fd5826108fd565b73ffffffffffffffffffffffffffffffffffffffff161461102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102290612abb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190612b4d565b60405180910390fd5b6110a58383836118cc565b6110b0600082610e67565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611100919061274b565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461115791906126f5565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611216838383611924565b505050565b611223610e5f565b73ffffffffffffffffffffffffffffffffffffffff16611241610a80565b73ffffffffffffffffffffffffffffffffffffffff1614611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90612bb9565b60405180910390fd5b565b600a5460046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1660017fdeaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d600a54604051611385919061211f565b60405180910390a4565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90612a29565b60405180910390fd5b80915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156990612c25565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116639190611f0f565b60405180910390a3505050565b61167b848484610fb5565b61168784848484611929565b6116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90612cb7565b60405180910390fd5b50505050565b6060600b80546116db9061244d565b80601f01602080910402602001604051908101604052809291908181526020018280546117079061244d565b80156117545780601f1061172957610100808354040283529160200191611754565b820191906000526020600020905b81548152906001019060200180831161173757829003601f168201915b5050505050905090565b60606000600161176d84611aab565b01905060008167ffffffffffffffff81111561178c5761178b612230565b5b6040519080825280601f01601f1916602001820160405280156117be5781602001600182028036833780820191505090505b509050600082602001820190505b600115611821578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161181557611814612cd7565b5b049450600085036117cc575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000600a548211156118b2576118ab82611bfe565b90506118c7565b6000821180156118c45750600a548211155b90505b919050565b6118d7838383611c6a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461191f576119148382611c6f565b61191e8282611ddc565b5b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115611a9e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261196e610e5f565b8786866040518563ffffffff1660e01b81526004016119909493929190612d5b565b6020604051808303816000875af19250505080156119cc57506040513d601f19601f820116820180604052508101906119c99190612dbc565b60015b611a4e573d80600081146119fc576040519150601f19603f3d011682016040523d82523d6000602084013e611a01565b606091505b506000815103611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d90612cb7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611aa3565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611b09577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611aff57611afe612cd7565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611b46576d04ee2d6d415b85acef81000000008381611b3c57611b3b612cd7565b5b0492506020810190505b662386f26fc100008310611b7557662386f26fc100008381611b6b57611b6a612cd7565b5b0492506010810190505b6305f5e1008310611b9e576305f5e1008381611b9457611b93612cd7565b5b0492506008810190505b6127108310611bc3576127108381611bb957611bb8612cd7565b5b0492506004810190505b60648310611be65760648381611bdc57611bdb612cd7565b5b0492506002810190505b600a8310611bf5576001810190505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b60006001611c7c846109b5565b611c86919061274b565b9050600060086000848152602001908152602001600020549050818114611d6b576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000611de7836109b5565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ea481611e6f565b8114611eaf57600080fd5b50565b600081359050611ec181611e9b565b92915050565b600060208284031215611edd57611edc611e65565b5b6000611eeb84828501611eb2565b91505092915050565b60008115159050919050565b611f0981611ef4565b82525050565b6000602082019050611f246000830184611f00565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f64578082015181840152602081019050611f49565b83811115611f73576000848401525b50505050565b6000601f19601f8301169050919050565b6000611f9582611f2a565b611f9f8185611f35565b9350611faf818560208601611f46565b611fb881611f79565b840191505092915050565b60006020820190508181036000830152611fdd8184611f8a565b905092915050565b6000819050919050565b611ff881611fe5565b811461200357600080fd5b50565b60008135905061201581611fef565b92915050565b60006020828403121561203157612030611e65565b5b600061203f84828501612006565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061207382612048565b9050919050565b61208381612068565b82525050565b600060208201905061209e600083018461207a565b92915050565b6120ad81612068565b81146120b857600080fd5b50565b6000813590506120ca816120a4565b92915050565b600080604083850312156120e7576120e6611e65565b5b60006120f5858286016120bb565b925050602061210685828601612006565b9150509250929050565b61211981611fe5565b82525050565b60006020820190506121346000830184612110565b92915050565b60008060006060848603121561215357612152611e65565b5b6000612161868287016120bb565b9350506020612172868287016120bb565b925050604061218386828701612006565b9150509250925092565b6000602082840312156121a3576121a2611e65565b5b60006121b1848285016120bb565b91505092915050565b6121c381611ef4565b81146121ce57600080fd5b50565b6000813590506121e0816121ba565b92915050565b600080604083850312156121fd576121fc611e65565b5b600061220b858286016120bb565b925050602061221c858286016121d1565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61226882611f79565b810181811067ffffffffffffffff8211171561228757612286612230565b5b80604052505050565b600061229a611e5b565b90506122a6828261225f565b919050565b600067ffffffffffffffff8211156122c6576122c5612230565b5b6122cf82611f79565b9050602081019050919050565b82818337600083830152505050565b60006122fe6122f9846122ab565b612290565b90508281526020810184848401111561231a5761231961222b565b5b6123258482856122dc565b509392505050565b600082601f83011261234257612341612226565b5b81356123528482602086016122eb565b91505092915050565b6000806000806080858703121561237557612374611e65565b5b6000612383878288016120bb565b9450506020612394878288016120bb565b93505060406123a587828801612006565b925050606085013567ffffffffffffffff8111156123c6576123c5611e6a565b5b6123d28782880161232d565b91505092959194509250565b600080604083850312156123f5576123f4611e65565b5b6000612403858286016120bb565b9250506020612414858286016120bb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061246557607f821691505b6020821081036124785761247761241e565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006124da602183611f35565b91506124e58261247e565b604082019050919050565b60006020820190508181036000830152612509816124cd565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b600061256c603e83611f35565b915061257782612510565b604082019050919050565b6000602082019050818103600083015261259b8161255f565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b60006125fe602e83611f35565b9150612609826125a2565b604082019050919050565b6000602082019050818103600083015261262d816125f1565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000612690602b83611f35565b915061269b82612634565b604082019050919050565b600060208201905081810360008301526126bf81612683565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061270082611fe5565b915061270b83611fe5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127405761273f6126c6565b5b828201905092915050565b600061275682611fe5565b915061276183611fe5565b925082821015612774576127736126c6565b5b828203905092915050565b600061278a82611fe5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127bc576127bb6126c6565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000612823602c83611f35565b915061282e826127c7565b604082019050919050565b6000602082019050818103600083015261285281612816565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006128b5602983611f35565b91506128c082612859565b604082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b600081905092915050565b600061290182611f2a565b61290b81856128eb565b935061291b818560208601611f46565b80840191505092915050565b600061293382856128f6565b915061293f82846128f6565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129a7602683611f35565b91506129b28261294b565b604082019050919050565b600060208201905081810360008301526129d68161299a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612a13601883611f35565b9150612a1e826129dd565b602082019050919050565b60006020820190508181036000830152612a4281612a06565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612aa5602583611f35565b9150612ab082612a49565b604082019050919050565b60006020820190508181036000830152612ad481612a98565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b37602483611f35565b9150612b4282612adb565b604082019050919050565b60006020820190508181036000830152612b6681612b2a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ba3602083611f35565b9150612bae82612b6d565b602082019050919050565b60006020820190508181036000830152612bd281612b96565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612c0f601983611f35565b9150612c1a82612bd9565b602082019050919050565b60006020820190508181036000830152612c3e81612c02565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000612ca1603283611f35565b9150612cac82612c45565b604082019050919050565b60006020820190508181036000830152612cd081612c94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000612d2d82612d06565b612d378185612d11565b9350612d47818560208601611f46565b612d5081611f79565b840191505092915050565b6000608082019050612d70600083018761207a565b612d7d602083018661207a565b612d8a6040830185612110565b8181036060830152612d9c8184612d22565b905095945050505050565b600081519050612db681611e9b565b92915050565b600060208284031215612dd257612dd1611e65565b5b6000612de084828501612da7565b9150509291505056fea2646970667358221220b45d17fb345108e1f5e95136d199cb2932d281c69cc816f10ee22fb0bb6f4a2a64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3C9 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x313 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x3CD29AC8 EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x25B JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1CB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x1EC7 JUMP JUMPDEST PUSH2 0x3E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x158 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x45F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x176 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x194 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A6 SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C4 SWAP2 SWAP1 PUSH2 0x20D0 JUMP JUMPDEST PUSH2 0x537 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x64E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E0 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x658 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x21A SWAP2 SWAP1 PUSH2 0x20D0 JUMP JUMPDEST PUSH2 0x6B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22C SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH2 0x871 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x254 SWAP2 SWAP1 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x883 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x275 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x270 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x282 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B2 SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x218D JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH2 0xA6C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FD PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x30A SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x31B PUSH2 0xAA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x328 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x34B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x346 SWAP2 SWAP1 PUSH2 0x21E6 JUMP JUMPDEST PUSH2 0xB3B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x367 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x362 SWAP2 SWAP1 PUSH2 0x235B JUMP JUMPDEST PUSH2 0xB51 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x383 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x37E SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0xBB3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3AE SWAP2 SWAP1 PUSH2 0x23DE JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3DE SWAP2 SWAP1 PUSH2 0x218D JUMP JUMPDEST PUSH2 0xCAF JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x780E9D6300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x458 JUMPI POP PUSH2 0x457 DUP3 PUSH2 0xD32 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x46E SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x49A SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4E7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4BC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4E7 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4CA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FC DUP3 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x542 DUP3 PUSH2 0x8FD JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x5B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A9 SWAP1 PUSH2 0x24F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5D1 PUSH2 0xE5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x600 JUMPI POP PUSH2 0x5FF DUP2 PUSH2 0x5FA PUSH2 0xE5F JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST JUMPDEST PUSH2 0x63F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x636 SWAP1 PUSH2 0x2582 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x649 DUP4 DUP4 PUSH2 0xE67 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x669 PUSH2 0x663 PUSH2 0xE5F JUMP JUMPDEST DUP3 PUSH2 0xF20 JUMP JUMPDEST PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69F SWAP1 PUSH2 0x2614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6B3 DUP4 DUP4 DUP4 PUSH2 0xFB5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C3 DUP4 PUSH2 0x9B5 JUMP JUMPDEST DUP3 LT PUSH2 0x704 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6FB SWAP1 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x817 JUMPI PUSH1 0x0 PUSH2 0x763 PUSH2 0x64E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x813 JUMPI PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7B7 DUP3 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x800 JUMPI PUSH1 0x1 DUP3 PUSH2 0x7DF SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP2 POP DUP5 PUSH1 0x1 DUP4 PUSH2 0x7EF SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SUB PUSH2 0x7FF JUMPI DUP1 SWAP4 POP POP POP POP PUSH2 0x86B JUMP JUMPDEST JUMPDEST DUP1 DUP1 PUSH2 0x80B SWAP1 PUSH2 0x277F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x76D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x879 PUSH2 0x121B JUMP JUMPDEST PUSH2 0x881 PUSH2 0x1299 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x89E DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xB51 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 LT PUSH2 0x8E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8E0 SWAP1 PUSH2 0x2839 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP3 PUSH2 0x8F6 SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 GT ISZERO PUSH2 0x919 JUMPI PUSH2 0x912 DUP3 PUSH2 0x138F JUMP JUMPDEST SWAP1 POP PUSH2 0x9B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9AB JUMPI PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA1C SWAP1 PUSH2 0x28CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA74 PUSH2 0x121B JUMP JUMPDEST PUSH2 0xA7E PUSH1 0x0 PUSH2 0x1440 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0xAB8 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xAE4 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB31 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB06 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB31 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB14 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xB4D PUSH2 0xB46 PUSH2 0xE5F JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1504 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB62 PUSH2 0xB5C PUSH2 0xE5F JUMP JUMPDEST DUP4 PUSH2 0xF20 JUMP JUMPDEST PUSH2 0xBA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB98 SWAP1 PUSH2 0x2614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBAD DUP5 DUP5 DUP5 DUP5 PUSH2 0x1670 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xBBE DUP3 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBC8 PUSH2 0x16CC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xBE8 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xC13 JUMP JUMPDEST DUP1 PUSH2 0xBF2 DUP5 PUSH2 0x175E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC03 SWAP3 SWAP2 SWAP1 PUSH2 0x2927 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xCB7 PUSH2 0x121B JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD26 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD1D SWAP1 PUSH2 0x29BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD2F DUP2 PUSH2 0x1440 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0xDFD JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0xE0D JUMPI POP PUSH2 0xE0C DUP3 PUSH2 0x182C JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE1D DUP2 PUSH2 0x1896 JUMP JUMPDEST PUSH2 0xE5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE53 SWAP1 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xEDA DUP4 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF2C DUP4 PUSH2 0x8FD JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xF6E JUMPI POP PUSH2 0xF6D DUP2 DUP6 PUSH2 0xC1B JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xFAC JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xF94 DUP5 PUSH2 0x4F1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFD5 DUP3 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x102B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1022 SWAP1 PUSH2 0x2ABB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x109A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1091 SWAP1 PUSH2 0x2B4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10A5 DUP4 DUP4 DUP4 PUSH2 0x18CC JUMP JUMPDEST PUSH2 0x10B0 PUSH1 0x0 DUP3 PUSH2 0xE67 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1100 SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1157 SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1216 DUP4 DUP4 DUP4 PUSH2 0x1924 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1223 PUSH2 0xE5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1241 PUSH2 0xA80 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x128E SWAP1 PUSH2 0x2BB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x4 PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH32 0xDEAA91B6123D068F5821D0FB0678463D1A8A6079FE8AF5DE3CE5E896DCF9133D PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0x1385 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1437 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x142E SWAP1 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1569 SWAP1 PUSH2 0x2C25 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1663 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x167B DUP5 DUP5 DUP5 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0x1687 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1929 JUMP JUMPDEST PUSH2 0x16C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16BD SWAP1 PUSH2 0x2CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xB DUP1 SLOAD PUSH2 0x16DB SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1707 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1754 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1729 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1754 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1737 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0x176D DUP5 PUSH2 0x1AAB JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x178C JUMPI PUSH2 0x178B PUSH2 0x2230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x17BE JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x1821 JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x1815 JUMPI PUSH2 0x1814 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x17CC JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 GT ISZERO PUSH2 0x18B2 JUMPI PUSH2 0x18AB DUP3 PUSH2 0x1BFE JUMP JUMPDEST SWAP1 POP PUSH2 0x18C7 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x18C4 JUMPI POP PUSH1 0xA SLOAD DUP3 GT ISZERO JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18D7 DUP4 DUP4 DUP4 PUSH2 0x1C6A JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x191F JUMPI PUSH2 0x1914 DUP4 DUP3 PUSH2 0x1C6F JUMP JUMPDEST PUSH2 0x191E DUP3 DUP3 PUSH2 0x1DDC JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x1A9E JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x196E PUSH2 0xE5F JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1990 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D5B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x19CC JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19C9 SWAP2 SWAP1 PUSH2 0x2DBC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1A4E JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x19FC 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 0x1A01 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x1A46 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A3D SWAP1 PUSH2 0x2CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x1AA3 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1B09 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x1AFF JUMPI PUSH2 0x1AFE PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1B46 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1B3C JUMPI PUSH2 0x1B3B PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1B75 JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1B6B JUMPI PUSH2 0x1B6A PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1B9E JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x1B94 JUMPI PUSH2 0x1B93 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x1BC3 JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x1BB9 JUMPI PUSH2 0x1BB8 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1BE6 JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x1BDC JUMPI PUSH2 0x1BDB PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x1BF5 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1C7C DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0x1C86 SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1D6B JUMPI PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x8 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x7 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DE7 DUP4 PUSH2 0x9B5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x7 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EA4 DUP2 PUSH2 0x1E6F JUMP JUMPDEST DUP2 EQ PUSH2 0x1EAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1EC1 DUP2 PUSH2 0x1E9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EDD JUMPI PUSH2 0x1EDC PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1EEB DUP5 DUP3 DUP6 ADD PUSH2 0x1EB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F09 DUP2 PUSH2 0x1EF4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1F24 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1F00 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F64 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1F49 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1F73 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F95 DUP3 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x1F9F DUP2 DUP6 PUSH2 0x1F35 JUMP JUMPDEST SWAP4 POP PUSH2 0x1FAF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST PUSH2 0x1FB8 DUP2 PUSH2 0x1F79 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FDD DUP2 DUP5 PUSH2 0x1F8A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1FF8 DUP2 PUSH2 0x1FE5 JUMP JUMPDEST DUP2 EQ PUSH2 0x2003 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2015 DUP2 PUSH2 0x1FEF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2031 JUMPI PUSH2 0x2030 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x203F DUP5 DUP3 DUP6 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2073 DUP3 PUSH2 0x2048 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2083 DUP2 PUSH2 0x2068 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x209E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x207A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x20AD DUP2 PUSH2 0x2068 JUMP JUMPDEST DUP2 EQ PUSH2 0x20B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x20CA DUP2 PUSH2 0x20A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20E7 JUMPI PUSH2 0x20E6 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20F5 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2106 DUP6 DUP3 DUP7 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2119 DUP2 PUSH2 0x1FE5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2134 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2110 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2153 JUMPI PUSH2 0x2152 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2161 DUP7 DUP3 DUP8 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2172 DUP7 DUP3 DUP8 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2183 DUP7 DUP3 DUP8 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21A3 JUMPI PUSH2 0x21A2 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x21B1 DUP5 DUP3 DUP6 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x21C3 DUP2 PUSH2 0x1EF4 JUMP JUMPDEST DUP2 EQ PUSH2 0x21CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x21E0 DUP2 PUSH2 0x21BA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21FD JUMPI PUSH2 0x21FC PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x220B DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x221C DUP6 DUP3 DUP7 ADD PUSH2 0x21D1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2268 DUP3 PUSH2 0x1F79 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2287 JUMPI PUSH2 0x2286 PUSH2 0x2230 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x229A PUSH2 0x1E5B JUMP JUMPDEST SWAP1 POP PUSH2 0x22A6 DUP3 DUP3 PUSH2 0x225F JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x22C6 JUMPI PUSH2 0x22C5 PUSH2 0x2230 JUMP JUMPDEST JUMPDEST PUSH2 0x22CF DUP3 PUSH2 0x1F79 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22FE PUSH2 0x22F9 DUP5 PUSH2 0x22AB JUMP JUMPDEST PUSH2 0x2290 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x231A JUMPI PUSH2 0x2319 PUSH2 0x222B JUMP JUMPDEST JUMPDEST PUSH2 0x2325 DUP5 DUP3 DUP6 PUSH2 0x22DC JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2342 JUMPI PUSH2 0x2341 PUSH2 0x2226 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2352 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x22EB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2375 JUMPI PUSH2 0x2374 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2383 DUP8 DUP3 DUP9 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x2394 DUP8 DUP3 DUP9 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x23A5 DUP8 DUP3 DUP9 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x23C6 JUMPI PUSH2 0x23C5 PUSH2 0x1E6A JUMP JUMPDEST JUMPDEST PUSH2 0x23D2 DUP8 DUP3 DUP9 ADD PUSH2 0x232D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23F5 JUMPI PUSH2 0x23F4 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2403 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2414 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2465 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2478 JUMPI PUSH2 0x2477 PUSH2 0x241E JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24DA PUSH1 0x21 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x24E5 DUP3 PUSH2 0x247E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2509 DUP2 PUSH2 0x24CD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x256C PUSH1 0x3E DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2577 DUP3 PUSH2 0x2510 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x259B DUP2 PUSH2 0x255F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25FE PUSH1 0x2E DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2609 DUP3 PUSH2 0x25A2 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x262D DUP2 PUSH2 0x25F1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x455243373231456E756D657261626C653A206F776E657220696E646578206F75 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74206F6620626F756E6473000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2690 PUSH1 0x2B DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x269B DUP3 PUSH2 0x2634 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x26BF DUP2 PUSH2 0x2683 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2700 DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH2 0x270B DUP4 PUSH2 0x1FE5 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x2740 JUMPI PUSH2 0x273F PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2756 DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH2 0x2761 DUP4 PUSH2 0x1FE5 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x2774 JUMPI PUSH2 0x2773 PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x278A DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x27BC JUMPI PUSH2 0x27BB PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x455243373231456E756D657261626C653A20676C6F62616C20696E646578206F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7574206F6620626F756E64730000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2823 PUSH1 0x2C DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x282E DUP3 PUSH2 0x27C7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2852 DUP2 PUSH2 0x2816 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B5 PUSH1 0x29 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x28C0 DUP3 PUSH2 0x2859 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x28E4 DUP2 PUSH2 0x28A8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2901 DUP3 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x290B DUP2 DUP6 PUSH2 0x28EB JUMP JUMPDEST SWAP4 POP PUSH2 0x291B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2933 DUP3 DUP6 PUSH2 0x28F6 JUMP JUMPDEST SWAP2 POP PUSH2 0x293F DUP3 DUP5 PUSH2 0x28F6 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29A7 PUSH1 0x26 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x29B2 DUP3 PUSH2 0x294B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x29D6 DUP2 PUSH2 0x299A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A13 PUSH1 0x18 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A1E DUP3 PUSH2 0x29DD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2A42 DUP2 PUSH2 0x2A06 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA5 PUSH1 0x25 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2AB0 DUP3 PUSH2 0x2A49 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2AD4 DUP2 PUSH2 0x2A98 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B37 PUSH1 0x24 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B42 DUP3 PUSH2 0x2ADB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2B66 DUP2 PUSH2 0x2B2A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BA3 PUSH1 0x20 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BAE DUP3 PUSH2 0x2B6D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2BD2 DUP2 PUSH2 0x2B96 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C0F PUSH1 0x19 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2C1A DUP3 PUSH2 0x2BD9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2C3E DUP2 PUSH2 0x2C02 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CA1 PUSH1 0x32 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2CAC DUP3 PUSH2 0x2C45 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2CD0 DUP2 PUSH2 0x2C94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D2D DUP3 PUSH2 0x2D06 JUMP JUMPDEST PUSH2 0x2D37 DUP2 DUP6 PUSH2 0x2D11 JUMP JUMPDEST SWAP4 POP PUSH2 0x2D47 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST PUSH2 0x2D50 DUP2 PUSH2 0x1F79 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2D70 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x207A JUMP JUMPDEST PUSH2 0x2D7D PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x207A JUMP JUMPDEST PUSH2 0x2D8A PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2110 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x2D9C DUP2 DUP5 PUSH2 0x2D22 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2DB6 DUP2 PUSH2 0x1E9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DD2 JUMPI PUSH2 0x2DD1 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DE0 DUP5 DUP3 DUP6 ADD PUSH2 0x2DA7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0x5D OR 0xFB CALLVALUE MLOAD ADDMOD 0xE1 CREATE2 0xE9 MLOAD CALLDATASIZE 0xD1 SWAP10 0xCB 0x29 ORIGIN 0xD2 DUP2 0xC6 SWAP13 0xC8 AND CALL 0xE 0xE2 0x2F 0xB0 0xBB PUSH16 0x4A2A64736F6C634300080D0033000000 ","sourceMap":"998:1396:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:216:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3317:98:13;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4775:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4314:400;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2648:147:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5452:327:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2009:574:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2223:59:12;;;:::i;:::-;;5845:179:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2861:265:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3231:674;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:204:13;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1824:101:0;;;:::i;:::-;;1201:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3479:102:13;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5009:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6090:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3647:276;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2074:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1680:216:14;1782:4;1816:35;1801:50;;;:11;:50;;;;:90;;;;1855:36;1879:11;1855:23;:36::i;:::-;1801:90;1794:97;;1680:216;;;:::o;3317:98:13:-;3371:13;3403:5;3396:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3317:98;:::o;4775:167::-;4851:7;4870:23;4885:7;4870:14;:23::i;:::-;4911:15;:24;4927:7;4911:24;;;;;;;;;;;;;;;;;;;;;4904:31;;4775:167;;;:::o;4314:400::-;4394:13;4410:16;4418:7;4410;:16::i;:::-;4394:32;;4450:5;4444:11;;:2;:11;;;4436:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4541:5;4525:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;4550:37;4567:5;4574:12;:10;:12::i;:::-;4550:16;:37::i;:::-;4525:62;4504:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;4686:21;4695:2;4699:7;4686:8;:21::i;:::-;4384:330;4314:400;;:::o;2648:147:14:-;2709:7;2780:10;;2773:17;;2648:147;:::o;5452:327:13:-;5641:41;5660:12;:10;:12::i;:::-;5674:7;5641:18;:41::i;:::-;5633:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;5744:28;5754:4;5760:2;5764:7;5744:9;:28::i;:::-;5452:327;;;:::o;2009:574:14:-;2106:7;2137:23;2154:5;2137:16;:23::i;:::-;2129:5;:31;2121:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;2235:16;;;;;;;;;;;2218:34;;:5;:34;;;2214:326;;2262:14;2279:13;:11;:13::i;:::-;2262:30;;2300:15;2332:9;2344:1;2332:13;;2327:207;2351:6;2347:1;:10;2327:207;;;2400:16;;;;;;;;;;;2378:39;;:10;2386:1;2378:7;:10::i;:::-;:39;;;2374:152;;2442:1;2431:12;;;;;:::i;:::-;;;2474:5;2469:1;2459:7;:11;;;;:::i;:::-;:20;2455:61;;2502:1;2495:8;;;;;;;2455:61;2374:152;2359:3;;;;;:::i;:::-;;;;2327:207;;;;2254:286;;2214:326;2552:12;:19;2565:5;2552:19;;;;;;;;;;;;;;;:26;2572:5;2552:26;;;;;;;;;;;;2545:33;;2009:574;;;;;:::o;2223:59:12:-;1094:13:0;:11;:13::i;:::-;2267:10:12::1;:8;:10::i;:::-;2223:59::o:0;5845:179:13:-;5978:39;5995:4;6001:2;6005:7;5978:39;;;;;;;;;;;;:16;:39::i;:::-;5845:179;;;:::o;2861:265:14:-;2936:7;2967:10;;2959:5;:18;2951:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;3120:1;3112:5;:9;;;;:::i;:::-;3105:16;;2861:265;;;:::o;3231:674::-;3320:7;3426:10;;3416:7;:20;3412:70;;;3453:22;3467:7;3453:13;:22::i;:::-;3446:29;;;;3412:70;3777:14;3794:7;:16;3802:7;3794:16;;;;;;;;;;;;;;;;;;;;;3777:33;;3838:1;3820:20;;:6;:20;;;3816:66;;3859:16;;;;;;;;;;;3850:25;;3816:66;3894:6;3887:13;;;3231:674;;;;:::o;2776:204:13:-;2848:7;2892:1;2875:19;;:5;:19;;;2867:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2957:9;:16;2967:5;2957:16;;;;;;;;;;;;;;;;2950:23;;2776:204;;;:::o;1824:101:0:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1201:85::-;1247:7;1273:6;;;;;;;;;;;1266:13;;1201:85;:::o;3479:102:13:-;3535:13;3567:7;3560:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3479:102;:::o;5009:153::-;5103:52;5122:12;:10;:12::i;:::-;5136:8;5146;5103:18;:52::i;:::-;5009:153;;:::o;6090:315::-;6258:41;6277:12;:10;:12::i;:::-;6291:7;6258:18;:41::i;:::-;6250:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;6360:38;6374:4;6380:2;6384:7;6393:4;6360:13;:38::i;:::-;6090:315;;;;:::o;3647:276::-;3720:13;3745:23;3760:7;3745:14;:23::i;:::-;3779:21;3803:10;:8;:10::i;:::-;3779:34;;3854:1;3836:7;3830:21;:25;:86;;;;;;;;;;;;;;;;;3882:7;3891:18;:7;:16;:18::i;:::-;3865:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3830:86;3823:93;;;3647:276;;;:::o;5228:162::-;5325:4;5348:18;:25;5367:5;5348:25;;;;;;;;;;;;;;;:35;5374:8;5348:35;;;;;;;;;;;;;;;;;;;;;;;;;5341:42;;5228:162;;;;:::o;2074:198:0:-;1094:13;:11;:13::i;:::-;2182:1:::1;2162:22;;:8;:22;;::::0;2154:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;2417:300:13:-;2519:4;2569:25;2554:40;;;:11;:40;;;;:104;;;;2625:33;2610:48;;;:11;:48;;;;2554:104;:156;;;;2674:36;2698:11;2674:23;:36::i;:::-;2554:156;2535:175;;2417:300;;;:::o;12550:133::-;12631:16;12639:7;12631;:16::i;:::-;12623:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12550:133;:::o;640:96:6:-;693:7;719:10;712:17;;640:96;:::o;11859:164:13:-;11960:2;11933:15;:24;11949:7;11933:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12008:7;12004:2;11977:39;;11986:16;11994:7;11986;:16::i;:::-;11977:39;;;;;;;;;;;;11859:164;;:::o;8157:254::-;8250:4;8266:13;8282:16;8290:7;8282;:16::i;:::-;8266:32;;8327:5;8316:16;;:7;:16;;;:52;;;;8336:32;8353:5;8360:7;8336:16;:32::i;:::-;8316:52;:87;;;;8396:7;8372:31;;:20;8384:7;8372:11;:20::i;:::-;:31;;;8316:87;8308:96;;;8157:254;;;;:::o;11149:598::-;11296:4;11276:24;;:16;11284:7;11276;:16::i;:::-;:24;;;11268:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11374:1;11360:16;;:2;:16;;;11352:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11428:39;11449:4;11455:2;11459:7;11428:20;:39::i;:::-;11529:29;11546:1;11550:7;11529:8;:29::i;:::-;11588:1;11569:9;:15;11579:4;11569:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;11616:1;11599:9;:13;11609:2;11599:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;11646:2;11627:7;:16;11635:7;11627:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11683:7;11679:2;11664:27;;11673:4;11664:27;;;;;;;;;;;;11702:38;11722:4;11728:2;11732:7;11702:19;:38::i;:::-;11149:598;;;:::o;1359:130:0:-;1433:12;:10;:12::i;:::-;1422:23;;:7;:5;:7::i;:::-;:23;;;1414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1359:130::o;1957:262:12:-;2085:10;;2055:9;:27;2065:16;;;;;;;;;;;2055:27;;;;;;;;;;;;;;;:40;;;;2197:16;;;;;;;;;;;2150:64;;2193:1;2150:64;;2170:1;2150:64;2173:10;;2150:64;;;;;;:::i;:::-;;;;;;;;1957:262::o;3037:218:13:-;3109:7;3128:13;3144:7;:16;3152:7;3144:16;;;;;;;;;;;;;;;;;;;;;3128:32;;3195:1;3178:19;;:5;:19;;;3170:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3243:5;3236:12;;;3037:218;;;:::o;2426:187:0:-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;12159:307:13:-;12309:8;12300:17;;:5;:17;;;12292:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12395:8;12357:18;:25;12376:5;12357:25;;;;;;;;;;;;;;;:35;12383:8;12357:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12440:8;12418:41;;12433:5;12418:41;;;12450:8;12418:41;;;;;;:::i;:::-;;;;;;;;12159:307;;;:::o;7266:305::-;7416:28;7426:4;7432:2;7436:7;7416:9;:28::i;:::-;7462:47;7485:4;7491:2;7495:7;7504:4;7462:22;:47::i;:::-;7454:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7266:305;;;;:::o;2286:106:12:-;2346:13;2374;2367:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2286:106;:::o;447:696:7:-;503:13;552:14;589:1;569:17;580:5;569:10;:17::i;:::-;:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;604:41;;659:11;785:6;781:2;777:15;769:6;765:28;758:35;;820:280;827:4;820:280;;;851:5;;;;;;;;990:8;985:2;978:5;974:14;969:30;964:3;956:44;1044:2;1035:11;;;;;;:::i;:::-;;;;;1077:1;1068:5;:10;820:280;1064:21;820:280;1120:6;1113:13;;;;;447:696;;;:::o;829:155:8:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;4014:373:14:-;4096:4;4199:10;;4189:7;:20;4185:70;;;4226:22;4240:7;4226:13;:22::i;:::-;4219:29;;;;4185:70;4355:1;4345:7;:11;:36;;;;;4371:10;;4360:7;:21;;4345:36;4337:45;;4014:373;;;;:::o;4461:303::-;4582:45;4609:4;4615:2;4619:7;4582:26;:45::i;:::-;4646:2;4638:10;;:4;:10;;;4634:126;;4658:47;4691:4;4697:7;4658:32;:47::i;:::-;4713:40;4741:2;4745:7;4713:27;:40::i;:::-;4634:126;4461:303;;;:::o;15119:121:13:-;;;;:::o;13235:834::-;13384:4;13421:1;13404:2;:14;;;:18;13400:663;;;13458:2;13442:36;;;13479:12;:10;:12::i;:::-;13493:4;13499:7;13508:4;13442:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13438:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13697:1;13680:6;:13;:18;13676:321;;13722:60;;;;;;;;;;:::i;:::-;;;;;;;;13676:321;13949:6;13943:13;13934:6;13930:2;13926:15;13919:38;13438:573;13573:41;;;13563:51;;;:6;:51;;;;13556:58;;;;;13400:663;14048:4;14041:11;;13235:834;;;;;;;:::o;10139:916:10:-;10192:7;10211:14;10228:1;10211:18;;10276:8;10267:5;:17;10263:103;;10313:8;10304:17;;;;;;:::i;:::-;;;;;10349:2;10339:12;;;;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;;;;:::i;:::-;;;;;10465:2;10455:12;;;;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;;;;:::i;:::-;;;;;10581:2;10571:12;;;;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;;;;:::i;:::-;;;;;10695:1;10685:11;;;;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;;;;:::i;:::-;;;;;10808:1;10798:11;;;;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;;;;:::i;:::-;;;;;10921:1;10911:11;;;;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;;;;10950:66;11042:6;11035:13;;;10139:916;;;:::o;7874:125:13:-;7939:4;7990:1;7962:30;;:7;:16;7970:7;7962:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7955:37;;7874:125;;;:::o;14625:122::-;;;;:::o;5134:910:14:-;5384:22;5434:1;5409:22;5426:4;5409:16;:22::i;:::-;:26;;;;:::i;:::-;5384:51;;5441:18;5462:17;:26;5480:7;5462:26;;;;;;;;;;;;5441:47;;5598:14;5584:10;:28;5580:301;;5622:19;5644:12;:18;5657:4;5644:18;;;;;;;;;;;;;;;:34;5663:14;5644:34;;;;;;;;;;;;5622:56;;5720:11;5687:12;:18;5700:4;5687:18;;;;;;;;;;;;;;;:30;5706:10;5687:30;;;;;;;;;;;:44;;;;5830:10;5797:17;:30;5815:11;5797:30;;;;;;;;;;;:43;;;;5614:267;5580:301;5966:17;:26;5984:7;5966:26;;;;;;;;;;;5959:33;;;6005:12;:18;6018:4;6005:18;;;;;;;;;;;;;;;:34;6024:14;6005:34;;;;;;;;;;;5998:41;;;5215:829;;5134:910;;:::o;4845:203::-;4925:14;4942:20;4959:2;4942:16;:20::i;:::-;4925:37;;4995:7;4968:12;:16;4981:2;4968:16;;;;;;;;;;;;;;;:24;4985:6;4968:24;;;;;;;;;;;:34;;;;5037:6;5008:17;:26;5026:7;5008:26;;;;;;;;;;;:35;;;;4919:129;4845:203;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:619::-;5367:6;5375;5383;5432:2;5420:9;5411:7;5407:23;5403:32;5400:119;;;5438:79;;:::i;:::-;5400:119;5558:1;5583:53;5628:7;5619:6;5608:9;5604:22;5583:53;:::i;:::-;5573:63;;5529:117;5685:2;5711:53;5756:7;5747:6;5736:9;5732:22;5711:53;:::i;:::-;5701:63;;5656:118;5813:2;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5784:118;5290:619;;;;;:::o;5915:329::-;5974:6;6023:2;6011:9;6002:7;5998:23;5994:32;5991:119;;;6029:79;;:::i;:::-;5991:119;6149:1;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6120:117;5915:329;;;;:::o;6250:116::-;6320:21;6335:5;6320:21;:::i;:::-;6313:5;6310:32;6300:60;;6356:1;6353;6346:12;6300:60;6250:116;:::o;6372:133::-;6415:5;6453:6;6440:20;6431:29;;6469:30;6493:5;6469:30;:::i;:::-;6372:133;;;;:::o;6511:468::-;6576:6;6584;6633:2;6621:9;6612:7;6608:23;6604:32;6601:119;;;6639:79;;:::i;:::-;6601:119;6759:1;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6730:117;6886:2;6912:50;6954:7;6945:6;6934:9;6930:22;6912:50;:::i;:::-;6902:60;;6857:115;6511:468;;;;;:::o;6985:117::-;7094:1;7091;7084:12;7108:117;7217:1;7214;7207:12;7231:180;7279:77;7276:1;7269:88;7376:4;7373:1;7366:15;7400:4;7397:1;7390:15;7417:281;7500:27;7522:4;7500:27;:::i;:::-;7492:6;7488:40;7630:6;7618:10;7615:22;7594:18;7582:10;7579:34;7576:62;7573:88;;;7641:18;;:::i;:::-;7573:88;7681:10;7677:2;7670:22;7460:238;7417:281;;:::o;7704:129::-;7738:6;7765:20;;:::i;:::-;7755:30;;7794:33;7822:4;7814:6;7794:33;:::i;:::-;7704:129;;;:::o;7839:307::-;7900:4;7990:18;7982:6;7979:30;7976:56;;;8012:18;;:::i;:::-;7976:56;8050:29;8072:6;8050:29;:::i;:::-;8042:37;;8134:4;8128;8124:15;8116:23;;7839:307;;;:::o;8152:154::-;8236:6;8231:3;8226;8213:30;8298:1;8289:6;8284:3;8280:16;8273:27;8152:154;;;:::o;8312:410::-;8389:5;8414:65;8430:48;8471:6;8430:48;:::i;:::-;8414:65;:::i;:::-;8405:74;;8502:6;8495:5;8488:21;8540:4;8533:5;8529:16;8578:3;8569:6;8564:3;8560:16;8557:25;8554:112;;;8585:79;;:::i;:::-;8554:112;8675:41;8709:6;8704:3;8699;8675:41;:::i;:::-;8395:327;8312:410;;;;;:::o;8741:338::-;8796:5;8845:3;8838:4;8830:6;8826:17;8822:27;8812:122;;8853:79;;:::i;:::-;8812:122;8970:6;8957:20;8995:78;9069:3;9061:6;9054:4;9046:6;9042:17;8995:78;:::i;:::-;8986:87;;8802:277;8741:338;;;;:::o;9085:943::-;9180:6;9188;9196;9204;9253:3;9241:9;9232:7;9228:23;9224:33;9221:120;;;9260:79;;:::i;:::-;9221:120;9380:1;9405:53;9450:7;9441:6;9430:9;9426:22;9405:53;:::i;:::-;9395:63;;9351:117;9507:2;9533:53;9578:7;9569:6;9558:9;9554:22;9533:53;:::i;:::-;9523:63;;9478:118;9635:2;9661:53;9706:7;9697:6;9686:9;9682:22;9661:53;:::i;:::-;9651:63;;9606:118;9791:2;9780:9;9776:18;9763:32;9822:18;9814:6;9811:30;9808:117;;;9844:79;;:::i;:::-;9808:117;9949:62;10003:7;9994:6;9983:9;9979:22;9949:62;:::i;:::-;9939:72;;9734:287;9085:943;;;;;;;:::o;10034:474::-;10102:6;10110;10159:2;10147:9;10138:7;10134:23;10130:32;10127:119;;;10165:79;;:::i;:::-;10127:119;10285:1;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;:::i;:::-;10300:63;;10256:117;10412:2;10438:53;10483:7;10474:6;10463:9;10459:22;10438:53;:::i;:::-;10428:63;;10383:118;10034:474;;;;;:::o;10514:180::-;10562:77;10559:1;10552:88;10659:4;10656:1;10649:15;10683:4;10680:1;10673:15;10700:320;10744:6;10781:1;10775:4;10771:12;10761:22;;10828:1;10822:4;10818:12;10849:18;10839:81;;10905:4;10897:6;10893:17;10883:27;;10839:81;10967:2;10959:6;10956:14;10936:18;10933:38;10930:84;;10986:18;;:::i;:::-;10930:84;10751:269;10700:320;;;:::o;11026:220::-;11166:34;11162:1;11154:6;11150:14;11143:58;11235:3;11230:2;11222:6;11218:15;11211:28;11026:220;:::o;11252:366::-;11394:3;11415:67;11479:2;11474:3;11415:67;:::i;:::-;11408:74;;11491:93;11580:3;11491:93;:::i;:::-;11609:2;11604:3;11600:12;11593:19;;11252:366;;;:::o;11624:419::-;11790:4;11828:2;11817:9;11813:18;11805:26;;11877:9;11871:4;11867:20;11863:1;11852:9;11848:17;11841:47;11905:131;12031:4;11905:131;:::i;:::-;11897:139;;11624:419;;;:::o;12049:249::-;12189:34;12185:1;12177:6;12173:14;12166:58;12258:32;12253:2;12245:6;12241:15;12234:57;12049:249;:::o;12304:366::-;12446:3;12467:67;12531:2;12526:3;12467:67;:::i;:::-;12460:74;;12543:93;12632:3;12543:93;:::i;:::-;12661:2;12656:3;12652:12;12645:19;;12304:366;;;:::o;12676:419::-;12842:4;12880:2;12869:9;12865:18;12857:26;;12929:9;12923:4;12919:20;12915:1;12904:9;12900:17;12893:47;12957:131;13083:4;12957:131;:::i;:::-;12949:139;;12676:419;;;:::o;13101:233::-;13241:34;13237:1;13229:6;13225:14;13218:58;13310:16;13305:2;13297:6;13293:15;13286:41;13101:233;:::o;13340:366::-;13482:3;13503:67;13567:2;13562:3;13503:67;:::i;:::-;13496:74;;13579:93;13668:3;13579:93;:::i;:::-;13697:2;13692:3;13688:12;13681:19;;13340:366;;;:::o;13712:419::-;13878:4;13916:2;13905:9;13901:18;13893:26;;13965:9;13959:4;13955:20;13951:1;13940:9;13936:17;13929:47;13993:131;14119:4;13993:131;:::i;:::-;13985:139;;13712:419;;;:::o;14137:230::-;14277:34;14273:1;14265:6;14261:14;14254:58;14346:13;14341:2;14333:6;14329:15;14322:38;14137:230;:::o;14373:366::-;14515:3;14536:67;14600:2;14595:3;14536:67;:::i;:::-;14529:74;;14612:93;14701:3;14612:93;:::i;:::-;14730:2;14725:3;14721:12;14714:19;;14373:366;;;:::o;14745:419::-;14911:4;14949:2;14938:9;14934:18;14926:26;;14998:9;14992:4;14988:20;14984:1;14973:9;14969:17;14962:47;15026:131;15152:4;15026:131;:::i;:::-;15018:139;;14745:419;;;:::o;15170:180::-;15218:77;15215:1;15208:88;15315:4;15312:1;15305:15;15339:4;15336:1;15329:15;15356:305;15396:3;15415:20;15433:1;15415:20;:::i;:::-;15410:25;;15449:20;15467:1;15449:20;:::i;:::-;15444:25;;15603:1;15535:66;15531:74;15528:1;15525:81;15522:107;;;15609:18;;:::i;:::-;15522:107;15653:1;15650;15646:9;15639:16;;15356:305;;;;:::o;15667:191::-;15707:4;15727:20;15745:1;15727:20;:::i;:::-;15722:25;;15761:20;15779:1;15761:20;:::i;:::-;15756:25;;15800:1;15797;15794:8;15791:34;;;15805:18;;:::i;:::-;15791:34;15850:1;15847;15843:9;15835:17;;15667:191;;;;:::o;15864:233::-;15903:3;15926:24;15944:5;15926:24;:::i;:::-;15917:33;;15972:66;15965:5;15962:77;15959:103;;16042:18;;:::i;:::-;15959:103;16089:1;16082:5;16078:13;16071:20;;15864:233;;;:::o;16103:231::-;16243:34;16239:1;16231:6;16227:14;16220:58;16312:14;16307:2;16299:6;16295:15;16288:39;16103:231;:::o;16340:366::-;16482:3;16503:67;16567:2;16562:3;16503:67;:::i;:::-;16496:74;;16579:93;16668:3;16579:93;:::i;:::-;16697:2;16692:3;16688:12;16681:19;;16340:366;;;:::o;16712:419::-;16878:4;16916:2;16905:9;16901:18;16893:26;;16965:9;16959:4;16955:20;16951:1;16940:9;16936:17;16929:47;16993:131;17119:4;16993:131;:::i;:::-;16985:139;;16712:419;;;:::o;17137:228::-;17277:34;17273:1;17265:6;17261:14;17254:58;17346:11;17341:2;17333:6;17329:15;17322:36;17137:228;:::o;17371:366::-;17513:3;17534:67;17598:2;17593:3;17534:67;:::i;:::-;17527:74;;17610:93;17699:3;17610:93;:::i;:::-;17728:2;17723:3;17719:12;17712:19;;17371:366;;;:::o;17743:419::-;17909:4;17947:2;17936:9;17932:18;17924:26;;17996:9;17990:4;17986:20;17982:1;17971:9;17967:17;17960:47;18024:131;18150:4;18024:131;:::i;:::-;18016:139;;17743:419;;;:::o;18168:148::-;18270:11;18307:3;18292:18;;18168:148;;;;:::o;18322:377::-;18428:3;18456:39;18489:5;18456:39;:::i;:::-;18511:89;18593:6;18588:3;18511:89;:::i;:::-;18504:96;;18609:52;18654:6;18649:3;18642:4;18635:5;18631:16;18609:52;:::i;:::-;18686:6;18681:3;18677:16;18670:23;;18432:267;18322:377;;;;:::o;18705:435::-;18885:3;18907:95;18998:3;18989:6;18907:95;:::i;:::-;18900:102;;19019:95;19110:3;19101:6;19019:95;:::i;:::-;19012:102;;19131:3;19124:10;;18705:435;;;;;:::o;19146:225::-;19286:34;19282:1;19274:6;19270:14;19263:58;19355:8;19350:2;19342:6;19338:15;19331:33;19146:225;:::o;19377:366::-;19519:3;19540:67;19604:2;19599:3;19540:67;:::i;:::-;19533:74;;19616:93;19705:3;19616:93;:::i;:::-;19734:2;19729:3;19725:12;19718:19;;19377:366;;;:::o;19749:419::-;19915:4;19953:2;19942:9;19938:18;19930:26;;20002:9;19996:4;19992:20;19988:1;19977:9;19973:17;19966:47;20030:131;20156:4;20030:131;:::i;:::-;20022:139;;19749:419;;;:::o;20174:174::-;20314:26;20310:1;20302:6;20298:14;20291:50;20174:174;:::o;20354:366::-;20496:3;20517:67;20581:2;20576:3;20517:67;:::i;:::-;20510:74;;20593:93;20682:3;20593:93;:::i;:::-;20711:2;20706:3;20702:12;20695:19;;20354:366;;;:::o;20726:419::-;20892:4;20930:2;20919:9;20915:18;20907:26;;20979:9;20973:4;20969:20;20965:1;20954:9;20950:17;20943:47;21007:131;21133:4;21007:131;:::i;:::-;20999:139;;20726:419;;;:::o;21151:224::-;21291:34;21287:1;21279:6;21275:14;21268:58;21360:7;21355:2;21347:6;21343:15;21336:32;21151:224;:::o;21381:366::-;21523:3;21544:67;21608:2;21603:3;21544:67;:::i;:::-;21537:74;;21620:93;21709:3;21620:93;:::i;:::-;21738:2;21733:3;21729:12;21722:19;;21381:366;;;:::o;21753:419::-;21919:4;21957:2;21946:9;21942:18;21934:26;;22006:9;22000:4;21996:20;21992:1;21981:9;21977:17;21970:47;22034:131;22160:4;22034:131;:::i;:::-;22026:139;;21753:419;;;:::o;22178:223::-;22318:34;22314:1;22306:6;22302:14;22295:58;22387:6;22382:2;22374:6;22370:15;22363:31;22178:223;:::o;22407:366::-;22549:3;22570:67;22634:2;22629:3;22570:67;:::i;:::-;22563:74;;22646:93;22735:3;22646:93;:::i;:::-;22764:2;22759:3;22755:12;22748:19;;22407:366;;;:::o;22779:419::-;22945:4;22983:2;22972:9;22968:18;22960:26;;23032:9;23026:4;23022:20;23018:1;23007:9;23003:17;22996:47;23060:131;23186:4;23060:131;:::i;:::-;23052:139;;22779:419;;;:::o;23204:182::-;23344:34;23340:1;23332:6;23328:14;23321:58;23204:182;:::o;23392:366::-;23534:3;23555:67;23619:2;23614:3;23555:67;:::i;:::-;23548:74;;23631:93;23720:3;23631:93;:::i;:::-;23749:2;23744:3;23740:12;23733:19;;23392:366;;;:::o;23764:419::-;23930:4;23968:2;23957:9;23953:18;23945:26;;24017:9;24011:4;24007:20;24003:1;23992:9;23988:17;23981:47;24045:131;24171:4;24045:131;:::i;:::-;24037:139;;23764:419;;;:::o;24189:175::-;24329:27;24325:1;24317:6;24313:14;24306:51;24189:175;:::o;24370:366::-;24512:3;24533:67;24597:2;24592:3;24533:67;:::i;:::-;24526:74;;24609:93;24698:3;24609:93;:::i;:::-;24727:2;24722:3;24718:12;24711:19;;24370:366;;;:::o;24742:419::-;24908:4;24946:2;24935:9;24931:18;24923:26;;24995:9;24989:4;24985:20;24981:1;24970:9;24966:17;24959:47;25023:131;25149:4;25023:131;:::i;:::-;25015:139;;24742:419;;;:::o;25167:237::-;25307:34;25303:1;25295:6;25291:14;25284:58;25376:20;25371:2;25363:6;25359:15;25352:45;25167:237;:::o;25410:366::-;25552:3;25573:67;25637:2;25632:3;25573:67;:::i;:::-;25566:74;;25649:93;25738:3;25649:93;:::i;:::-;25767:2;25762:3;25758:12;25751:19;;25410:366;;;:::o;25782:419::-;25948:4;25986:2;25975:9;25971:18;25963:26;;26035:9;26029:4;26025:20;26021:1;26010:9;26006:17;25999:47;26063:131;26189:4;26063:131;:::i;:::-;26055:139;;25782:419;;;:::o;26207:180::-;26255:77;26252:1;26245:88;26352:4;26349:1;26342:15;26376:4;26373:1;26366:15;26393:98;26444:6;26478:5;26472:12;26462:22;;26393:98;;;:::o;26497:168::-;26580:11;26614:6;26609:3;26602:19;26654:4;26649:3;26645:14;26630:29;;26497:168;;;;:::o;26671:360::-;26757:3;26785:38;26817:5;26785:38;:::i;:::-;26839:70;26902:6;26897:3;26839:70;:::i;:::-;26832:77;;26918:52;26963:6;26958:3;26951:4;26944:5;26940:16;26918:52;:::i;:::-;26995:29;27017:6;26995:29;:::i;:::-;26990:3;26986:39;26979:46;;26761:270;26671:360;;;;:::o;27037:640::-;27232:4;27270:3;27259:9;27255:19;27247:27;;27284:71;27352:1;27341:9;27337:17;27328:6;27284:71;:::i;:::-;27365:72;27433:2;27422:9;27418:18;27409:6;27365:72;:::i;:::-;27447;27515:2;27504:9;27500:18;27491:6;27447:72;:::i;:::-;27566:9;27560:4;27556:20;27551:2;27540:9;27536:18;27529:48;27594:76;27665:4;27656:6;27594:76;:::i;:::-;27586:84;;27037:640;;;;;;;:::o;27683:141::-;27739:5;27770:6;27764:13;27755:22;;27786:32;27812:5;27786:32;:::i;:::-;27683:141;;;;:::o;27830:349::-;27899:6;27948:2;27936:9;27927:7;27923:23;27919:32;27916:119;;;27954:79;;:::i;:::-;27916:119;28074:1;28099:63;28154:7;28145:6;28134:9;28130:22;28099:63;:::i;:::-;28089:73;;28045:127;27830:349;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"2361400","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2921","getApproved(uint256)":"7437","isApprovedForAll(address,address)":"infinite","name()":"infinite","owner()":"2611","ownerOf(uint256)":"7207","preMint()":"35512","renounceOwnership()":"30465","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"infinite","supportsInterface(bytes4)":"886","symbol()":"infinite","tokenByIndex(uint256)":"infinite","tokenOfOwnerByIndex(address,uint256)":"infinite","tokenURI(uint256)":"infinite","totalSupply()":"2549","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"30854"},"internal":{"_baseURI()":"infinite","_preMint()":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","preMint()":"3cd29ac8","renounceOwnership()":"715018a6","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"baseUri\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"uint256\",\"name\":\"fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"}],\"name\":\"ConsecutiveTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This implements a Pre-Mint version of {ERC721} that adds the ability to Pre-Mint all the token ids in the contract as assign an initial owner for each token id. On-chain state for Pre-Mint does not need to be initially stored if Max-Supply is known. Minting is a simple matter of assigning a balance to the pre-mint receiver, and modifying the \\\"read\\\" methods to account for the pre-mint receiver as owner. We use the Consecutive Transfer Method as defined in EIP-2309 to signal inital ownership. Almost everything else remains standard. We also default to the contract \\\"owner\\\" as the pre-mint receiver, but this can be changed.\",\"events\":{\"ConsecutiveTransfer(uint256,uint256,address,address)\":{\"details\":\"EIP-2309: https://eips.ethereum.org/EIPS/eip-2309\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection, as well as a `minter` and a `maxSupply` for pre-minting the collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"Override the ERC721 \\\"ownerOf\\\" function to account for the Pre-Mint Receiver.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}. note: Fix contributed by surfer77\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"_baseTokenURI\":{\"details\":\"ERC721 Base Token URI\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC721i.sol\":\"ERC721i\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Enumerable is IERC721 {\\n /**\\n * @dev Returns the total amount of tokens stored by the contract.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\\n * Use along with {totalSupply} to enumerate all tokens.\\n */\\n function tokenByIndex(uint256 index) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/ERC721i.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Written by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity 0.8.13;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"./lib/ERC721iEnumerable.sol\\\";\\n\\n/**\\n * @dev This implements a Pre-Mint version of {ERC721} that adds the ability to Pre-Mint\\n * all the token ids in the contract as assign an initial owner for each token id.\\n *\\n * On-chain state for Pre-Mint does not need to be initially stored if Max-Supply is known.\\n * Minting is a simple matter of assigning a balance to the pre-mint receiver,\\n * and modifying the \\\"read\\\" methods to account for the pre-mint receiver as owner.\\n * We use the Consecutive Transfer Method as defined in EIP-2309 to signal inital ownership.\\n * Almost everything else remains standard.\\n * We also default to the contract \\\"owner\\\" as the pre-mint receiver, but this can be changed.\\n */\\ncontract ERC721i is\\n Ownable,\\n ERC721iEnumerable\\n{\\n /// @dev EIP-2309: https://eips.ethereum.org/EIPS/eip-2309\\n event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed fromAddress, address indexed toAddress);\\n\\n /// @dev ERC721 Base Token URI\\n string internal _baseTokenURI;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection,\\n * as well as a `minter` and a `maxSupply` for pre-minting the collection.\\n */\\n constructor(\\n string memory name,\\n string memory symbol,\\n string memory baseUri,\\n address minter,\\n uint256 maxSupply\\n )\\n ERC721(name, symbol)\\n Ownable()\\n {\\n _baseTokenURI = baseUri;\\n // Set vars defined in ERC721iEnumerable.sol\\n _maxSupply = maxSupply;\\n _preMintReceiver = minter;\\n }\\n\\n /**\\n * @dev Pre-mint the max-supply of token IDs to the minter account.\\n * Token IDs are in base-1 sequential order.\\n */\\n function _preMint() internal {\\n // Update balance for initial owner, defined in ERC721.sol\\n _balances[_preMintReceiver] = _maxSupply;\\n\\n // Emit the Consecutive Transfer Event\\n emit ConsecutiveTransfer(1, _maxSupply, address(0), _preMintReceiver);\\n }\\n\\n function preMint() external onlyOwner {\\n _preMint();\\n }\\n\\n function _baseURI() internal view virtual override returns (string memory) {\\n return _baseTokenURI;\\n }\\n}\\n\",\"keccak256\":\"0x545e7ae720fe4c8fde6b728370341991406ccbfb2de2373aa3886cadbc1d6c35\",\"license\":\"MIT\"},\"contracts/lib/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n *\\n * NOTE:\\n * The only changes made here are:\\n * - change scope of \\\"_owners\\\" from private to internal\\n * - change scope of \\\"_balances\\\" from private to internal\\n * - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\"\\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) internal _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) internal _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _owners[tokenId];\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _owners[tokenId] != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId);\\n\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n // Clear approvals\\n _approve(address(0), tokenId);\\n\\n _balances[owner] -= 1;\\n // Prevent re-assigning the token back to the Pre-Mint Receiver\\n _owners[tokenId] = _NULL_ADDRESS;\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.code.length > 0) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n * transferred to `to`.\\n * - When `from` is zero, `tokenId` will be minted for `to`.\\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x726960336df673d5fd509dde21ba3bed24645291d201f74762b945fe4d5aa016\",\"license\":\"MIT\"},\"contracts/lib/ERC721iEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modified from: OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\\\";\\n\\n/**\\n * @dev This implements an optional extension of {ERC721} defined in the EIP that adds\\n * enumerability of all the token ids in the contract as well as all token ids owned by each\\n * account.\\n *\\n * @dev This implementation also includes support for pre-minting a max-supply of tokens up-front.\\n *\\n * Note on pre-mint:\\n * Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs.\\n * For this reason, the \\\"allTokens\\\" state vars are unneccesary and have been removed.\\n * Also defines 2 light-weight state vars: \\\"_preMintReceiver\\\" & \\\"_maxSupply\\\"\\n * Overrides \\\"ownerOf\\\" & \\\"_exists\\\"\\n */\\nabstract contract ERC721iEnumerable is ERC721, IERC721Enumerable {\\n // Mapping from owner to list of owned token IDs\\n mapping(address => mapping(uint256 => uint256)) private _ownedTokens;\\n\\n // Mapping from token ID to index of the owner tokens list\\n mapping(uint256 => uint256) private _ownedTokensIndex;\\n\\n // Tracking for the Pre-Mint Receiver\\n address internal _preMintReceiver;\\n\\n // Max-Supply for Pre-Mint\\n uint256 internal _maxSupply;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n *\\n * Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\\n * note: Fix contributed by surfer77\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\\n require(index < ERC721.balanceOf(owner), \\\"ERC721Enumerable: owner index out of bounds\\\");\\n if (owner == address(_preMintReceiver)) {\\n uint256 supply = totalSupply();\\n uint256 matched = 0;\\n for (uint256 i = 1; i < supply; i++) {\\n if (ownerOf(i) == address(_preMintReceiver)) {\\n matched += 1;\\n if (matched - 1 == index) {\\n return i;\\n }\\n }\\n }\\n }\\n return _ownedTokens[owner][index];\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n // The Total Supply is simply the Max Supply\\n return _maxSupply;\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-tokenByIndex}.\\n */\\n function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\\n require(index < _maxSupply, \\\"ERC721Enumerable: global index out of bounds\\\");\\n // Array index is 0-based, whereas Token ID is 1-based (sequential).\\n return index + 1;\\n }\\n\\n /**\\n * @dev Override the ERC721 \\\"ownerOf\\\" function to account for the Pre-Mint Receiver.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override(IERC721, ERC721) returns (address) {\\n // Anything beyond the Pre-Minted supply will use the standard \\\"ownerOf\\\"\\n if (tokenId > _maxSupply) {\\n return super.ownerOf(tokenId);\\n }\\n\\n // Since we have Pre-Minted the Max-Supply to the \\\"Pre-Mint Receiver\\\" account, we know:\\n // - if the \\\"_owners\\\" mapping has not been assigned, then the owner is the Pre-Mint Receiver.\\n // - after the NFT is transferred, the \\\"_owners\\\" mapping will be updated with the new owner.\\n address owner_ = _owners[tokenId];\\n if (owner_ == address(0)) {\\n owner_ = _preMintReceiver;\\n }\\n return owner_;\\n }\\n\\n /**\\n * @dev Override the ERC721 \\\"_exists\\\" function to account for the Pre-Minted Max-Supply.\\n */\\n function _exists(uint256 tokenId) internal view virtual override(ERC721) returns (bool) {\\n // Anything beyond the Pre-Minted supply will use the standard \\\"_exists\\\"\\n if (tokenId > _maxSupply) {\\n return super._exists(tokenId);\\n }\\n\\n // We know the Max-Supply has been Pre-Minted with Sequential Token IDs\\n return (tokenId > 0 && tokenId <= _maxSupply);\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_beforeTokenTransfer}.\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual override {\\n super._beforeTokenTransfer(from, to, tokenId);\\n\\n if (from != to) {\\n _removeTokenFromOwnerEnumeration(from, tokenId);\\n _addTokenToOwnerEnumeration(to, tokenId);\\n }\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_addTokenToOwnerEnumeration}.\\n */\\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\\n uint256 length = ERC721.balanceOf(to);\\n _ownedTokens[to][length] = tokenId;\\n _ownedTokensIndex[tokenId] = length;\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_removeTokenFromOwnerEnumeration}.\\n */\\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\\n // then delete the last slot (swap and pop).\\n\\n uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;\\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\\n\\n // When the token to delete is the last token, the swap operation is unnecessary\\n if (tokenIndex != lastTokenIndex) {\\n uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\\n\\n _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\\n }\\n\\n // This also deletes the contents at the last position of the array\\n delete _ownedTokensIndex[tokenId];\\n delete _ownedTokens[from][lastTokenIndex];\\n }\\n}\\n\",\"keccak256\":\"0x99b0f077ef320163c0100348d120946ea6fefa3d3f0148a8880e01d4a1924752\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7,"contract":"contracts/ERC721i.sol:ERC721i","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":2017,"contract":"contracts/ERC721i.sol:ERC721i","label":"_name","offset":0,"slot":"1","type":"t_string_storage"},{"astId":2019,"contract":"contracts/ERC721i.sol:ERC721i","label":"_symbol","offset":0,"slot":"2","type":"t_string_storage"},{"astId":2023,"contract":"contracts/ERC721i.sol:ERC721i","label":"_owners","offset":0,"slot":"3","type":"t_mapping(t_uint256,t_address)"},{"astId":2027,"contract":"contracts/ERC721i.sol:ERC721i","label":"_balances","offset":0,"slot":"4","type":"t_mapping(t_address,t_uint256)"},{"astId":2031,"contract":"contracts/ERC721i.sol:ERC721i","label":"_tokenApprovals","offset":0,"slot":"5","type":"t_mapping(t_uint256,t_address)"},{"astId":2037,"contract":"contracts/ERC721i.sol:ERC721i","label":"_operatorApprovals","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":2871,"contract":"contracts/ERC721i.sol:ERC721i","label":"_ownedTokens","offset":0,"slot":"7","type":"t_mapping(t_address,t_mapping(t_uint256,t_uint256))"},{"astId":2875,"contract":"contracts/ERC721i.sol:ERC721i","label":"_ownedTokensIndex","offset":0,"slot":"8","type":"t_mapping(t_uint256,t_uint256)"},{"astId":2877,"contract":"contracts/ERC721i.sol:ERC721i","label":"_preMintReceiver","offset":0,"slot":"9","type":"t_address"},{"astId":2879,"contract":"contracts/ERC721i.sol:ERC721i","label":"_maxSupply","offset":0,"slot":"10","type":"t_uint256"},{"astId":1915,"contract":"contracts/ERC721i.sol:ERC721i","label":"_baseTokenURI","offset":0,"slot":"11","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_mapping(t_uint256,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => uint256))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}. NOTE: The only changes made here are: - change scope of \"_owners\" from private to internal - change scope of \"_balances\" from private to internal - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\" - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2054":{"entryPoint":null,"id":2054,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr_fromMemory":{"entryPoint":576,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_string_memory_ptr_fromMemory":{"entryPoint":651,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":702,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_memory":{"entryPoint":437,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":289,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":468,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":522,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":882,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":383,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x22":{"entryPoint":835,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":336,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":309,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":314,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":304,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":299,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":319,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4093:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"423:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"440:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"443:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"433:6:15"},"nodeType":"YulFunctionCall","src":"433:12:15"},"nodeType":"YulExpressionStatement","src":"433:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"334:117:15"},{"body":{"nodeType":"YulBlock","src":"546:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:15"},"nodeType":"YulFunctionCall","src":"556:12:15"},"nodeType":"YulExpressionStatement","src":"556:12:15"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"457:117:15"},{"body":{"nodeType":"YulBlock","src":"628:54:15","statements":[{"nodeType":"YulAssignment","src":"638:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"656:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"663:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"652:3:15"},"nodeType":"YulFunctionCall","src":"652:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"668:3:15"},"nodeType":"YulFunctionCall","src":"668:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"648:3:15"},"nodeType":"YulFunctionCall","src":"648:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"638:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"611:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"621:6:15","type":""}],"src":"580:102:15"},{"body":{"nodeType":"YulBlock","src":"716:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"733:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"736:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"726:6:15"},"nodeType":"YulFunctionCall","src":"726:88:15"},"nodeType":"YulExpressionStatement","src":"726:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"830:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"833:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"823:6:15"},"nodeType":"YulFunctionCall","src":"823:15:15"},"nodeType":"YulExpressionStatement","src":"823:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"854:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"857:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"847:6:15"},"nodeType":"YulFunctionCall","src":"847:15:15"},"nodeType":"YulExpressionStatement","src":"847:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"688:180:15"},{"body":{"nodeType":"YulBlock","src":"917:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"927:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"949:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"979:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"957:21:15"},"nodeType":"YulFunctionCall","src":"957:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"945:3:15"},"nodeType":"YulFunctionCall","src":"945:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"931:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"1096:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1098:16:15"},"nodeType":"YulFunctionCall","src":"1098:18:15"},"nodeType":"YulExpressionStatement","src":"1098:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1039:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"1051:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1036:2:15"},"nodeType":"YulFunctionCall","src":"1036:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1075:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1087:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:15"},"nodeType":"YulFunctionCall","src":"1072:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1033:2:15"},"nodeType":"YulFunctionCall","src":"1033:62:15"},"nodeType":"YulIf","src":"1030:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1134:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1138:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1127:6:15"},"nodeType":"YulFunctionCall","src":"1127:22:15"},"nodeType":"YulExpressionStatement","src":"1127:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"903:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"911:4:15","type":""}],"src":"874:281:15"},{"body":{"nodeType":"YulBlock","src":"1202:88:15","statements":[{"nodeType":"YulAssignment","src":"1212:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1222:18:15"},"nodeType":"YulFunctionCall","src":"1222:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1212:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1271:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"1279:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1251:19:15"},"nodeType":"YulFunctionCall","src":"1251:33:15"},"nodeType":"YulExpressionStatement","src":"1251:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1186:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1195:6:15","type":""}],"src":"1161:129:15"},{"body":{"nodeType":"YulBlock","src":"1363:241:15","statements":[{"body":{"nodeType":"YulBlock","src":"1468:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1470:16:15"},"nodeType":"YulFunctionCall","src":"1470:18:15"},"nodeType":"YulExpressionStatement","src":"1470:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1440:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"1448:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1437:2:15"},"nodeType":"YulFunctionCall","src":"1437:30:15"},"nodeType":"YulIf","src":"1434:56:15"},{"nodeType":"YulAssignment","src":"1500:37:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1530:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1508:21:15"},"nodeType":"YulFunctionCall","src":"1508:29:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1500:4:15"}]},{"nodeType":"YulAssignment","src":"1574:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1586:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"1592:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1582:3:15"},"nodeType":"YulFunctionCall","src":"1582:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1574:4:15"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1347:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1358:4:15","type":""}],"src":"1296:308:15"},{"body":{"nodeType":"YulBlock","src":"1659:258:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1669:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"1678:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1673:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"1738:63:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1763:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"1768:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1759:3:15"},"nodeType":"YulFunctionCall","src":"1759:11:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1782:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"1787:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1778:3:15"},"nodeType":"YulFunctionCall","src":"1778:11:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1772:5:15"},"nodeType":"YulFunctionCall","src":"1772:18:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:15"},"nodeType":"YulFunctionCall","src":"1752:39:15"},"nodeType":"YulExpressionStatement","src":"1752:39:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1699:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"1702:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1696:2:15"},"nodeType":"YulFunctionCall","src":"1696:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1710:19:15","statements":[{"nodeType":"YulAssignment","src":"1712:15:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1721:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"1724:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1717:3:15"},"nodeType":"YulFunctionCall","src":"1717:10:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1712:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"1692:3:15","statements":[]},"src":"1688:113:15"},{"body":{"nodeType":"YulBlock","src":"1835:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1885:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1881:3:15"},"nodeType":"YulFunctionCall","src":"1881:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"1899:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1874:6:15"},"nodeType":"YulFunctionCall","src":"1874:27:15"},"nodeType":"YulExpressionStatement","src":"1874:27:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1816:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"1819:6:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1813:2:15"},"nodeType":"YulFunctionCall","src":"1813:13:15"},"nodeType":"YulIf","src":"1810:101:15"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1641:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1646:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1651:6:15","type":""}],"src":"1610:307:15"},{"body":{"nodeType":"YulBlock","src":"2018:326:15","statements":[{"nodeType":"YulAssignment","src":"2028:75:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2095:6:15"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2053:41:15"},"nodeType":"YulFunctionCall","src":"2053:49:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2037:15:15"},"nodeType":"YulFunctionCall","src":"2037:66:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2028:5:15"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2119:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"2126:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2112:6:15"},"nodeType":"YulFunctionCall","src":"2112:21:15"},"nodeType":"YulExpressionStatement","src":"2112:21:15"},{"nodeType":"YulVariableDeclaration","src":"2142:27:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2157:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2164:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2153:3:15"},"nodeType":"YulFunctionCall","src":"2153:16:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2146:3:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"2207:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"2209:77:15"},"nodeType":"YulFunctionCall","src":"2209:79:15"},"nodeType":"YulExpressionStatement","src":"2209:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2188:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"2193:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:15"},"nodeType":"YulFunctionCall","src":"2184:16:15"},{"name":"end","nodeType":"YulIdentifier","src":"2202:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2181:2:15"},"nodeType":"YulFunctionCall","src":"2181:25:15"},"nodeType":"YulIf","src":"2178:112:15"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2321:3:15"},{"name":"dst","nodeType":"YulIdentifier","src":"2326:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"2331:6:15"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2299:21:15"},"nodeType":"YulFunctionCall","src":"2299:39:15"},"nodeType":"YulExpressionStatement","src":"2299:39:15"}]},"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1991:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1996:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"2004:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2012:5:15","type":""}],"src":"1923:421:15"},{"body":{"nodeType":"YulBlock","src":"2437:282:15","statements":[{"body":{"nodeType":"YulBlock","src":"2486:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"2488:77:15"},"nodeType":"YulFunctionCall","src":"2488:79:15"},"nodeType":"YulExpressionStatement","src":"2488:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2465:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"2473:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2461:3:15"},"nodeType":"YulFunctionCall","src":"2461:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"2480:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2457:3:15"},"nodeType":"YulFunctionCall","src":"2457:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2450:6:15"},"nodeType":"YulFunctionCall","src":"2450:35:15"},"nodeType":"YulIf","src":"2447:122:15"},{"nodeType":"YulVariableDeclaration","src":"2578:27:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2598:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2592:5:15"},"nodeType":"YulFunctionCall","src":"2592:13:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2582:6:15","type":""}]},{"nodeType":"YulAssignment","src":"2614:99:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2686:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"2694:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2682:3:15"},"nodeType":"YulFunctionCall","src":"2682:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"2701:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"2709:3:15"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"2623:58:15"},"nodeType":"YulFunctionCall","src":"2623:90:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2614:5:15"}]}]},"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2415:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"2423:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2431:5:15","type":""}],"src":"2364:355:15"},{"body":{"nodeType":"YulBlock","src":"2839:739:15","statements":[{"body":{"nodeType":"YulBlock","src":"2885:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2887:77:15"},"nodeType":"YulFunctionCall","src":"2887:79:15"},"nodeType":"YulExpressionStatement","src":"2887:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2860:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"2869:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2856:3:15"},"nodeType":"YulFunctionCall","src":"2856:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"2881:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2852:3:15"},"nodeType":"YulFunctionCall","src":"2852:32:15"},"nodeType":"YulIf","src":"2849:119:15"},{"nodeType":"YulBlock","src":"2978:291:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2993:38:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3017:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"3028:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3013:3:15"},"nodeType":"YulFunctionCall","src":"3013:17:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3007:5:15"},"nodeType":"YulFunctionCall","src":"3007:24:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2997:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3078:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3080:77:15"},"nodeType":"YulFunctionCall","src":"3080:79:15"},"nodeType":"YulExpressionStatement","src":"3080:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3050:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3058:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3047:2:15"},"nodeType":"YulFunctionCall","src":"3047:30:15"},"nodeType":"YulIf","src":"3044:117:15"},{"nodeType":"YulAssignment","src":"3175:84:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3231:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"3242:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3227:3:15"},"nodeType":"YulFunctionCall","src":"3227:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3251:7:15"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3185:41:15"},"nodeType":"YulFunctionCall","src":"3185:74:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3175:6:15"}]}]},{"nodeType":"YulBlock","src":"3279:292:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3294:39:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3318:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"3329:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3314:3:15"},"nodeType":"YulFunctionCall","src":"3314:18:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3308:5:15"},"nodeType":"YulFunctionCall","src":"3308:25:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3298:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3380:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3382:77:15"},"nodeType":"YulFunctionCall","src":"3382:79:15"},"nodeType":"YulExpressionStatement","src":"3382:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3352:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3360:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3349:2:15"},"nodeType":"YulFunctionCall","src":"3349:30:15"},"nodeType":"YulIf","src":"3346:117:15"},{"nodeType":"YulAssignment","src":"3477:84:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3533:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"3544:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3529:3:15"},"nodeType":"YulFunctionCall","src":"3529:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3553:7:15"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3487:41:15"},"nodeType":"YulFunctionCall","src":"3487:74:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3477:6:15"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2801:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2812:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2824:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2832:6:15","type":""}],"src":"2725:853:15"},{"body":{"nodeType":"YulBlock","src":"3612:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3629:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3632:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:15"},"nodeType":"YulFunctionCall","src":"3622:88:15"},"nodeType":"YulExpressionStatement","src":"3622:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3726:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3729:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3719:6:15"},"nodeType":"YulFunctionCall","src":"3719:15:15"},"nodeType":"YulExpressionStatement","src":"3719:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3750:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3753:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3743:6:15"},"nodeType":"YulFunctionCall","src":"3743:15:15"},"nodeType":"YulExpressionStatement","src":"3743:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"3584:180:15"},{"body":{"nodeType":"YulBlock","src":"3821:269:15","statements":[{"nodeType":"YulAssignment","src":"3831:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3845:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"3851:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3841:3:15"},"nodeType":"YulFunctionCall","src":"3841:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3831:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"3862:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3892:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"3898:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3888:3:15"},"nodeType":"YulFunctionCall","src":"3888:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"3866:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"3939:51:15","statements":[{"nodeType":"YulAssignment","src":"3953:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3967:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"3975:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3963:3:15"},"nodeType":"YulFunctionCall","src":"3963:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3953:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3919:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3912:6:15"},"nodeType":"YulFunctionCall","src":"3912:26:15"},"nodeType":"YulIf","src":"3909:81:15"},{"body":{"nodeType":"YulBlock","src":"4042:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"4056:16:15"},"nodeType":"YulFunctionCall","src":"4056:18:15"},"nodeType":"YulExpressionStatement","src":"4056:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4006:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4029:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"4037:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4026:2:15"},"nodeType":"YulFunctionCall","src":"4026:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4003:2:15"},"nodeType":"YulFunctionCall","src":"4003:38:15"},"nodeType":"YulIf","src":"4000:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"3805:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3814:6:15","type":""}],"src":"3770:320:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620024f5380380620024f58339818101604052810190620000379190620002be565b81600090805190602001906200004f92919062000071565b5080600190805190602001906200006892919062000071565b505050620003a7565b8280546200007f9062000372565b90600052602060002090601f016020900481019282620000a35760008555620000ef565b82601f10620000be57805160ff1916838001178555620000ef565b82800160010185558215620000ef579182015b82811115620000ee578251825591602001919060010190620000d1565b5b509050620000fe919062000102565b5090565b5b808211156200011d57600081600090555060010162000103565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200018a826200013f565b810181811067ffffffffffffffff82111715620001ac57620001ab62000150565b5b80604052505050565b6000620001c162000121565b9050620001cf82826200017f565b919050565b600067ffffffffffffffff821115620001f257620001f162000150565b5b620001fd826200013f565b9050602081019050919050565b60005b838110156200022a5780820151818401526020810190506200020d565b838111156200023a576000848401525b50505050565b6000620002576200025184620001d4565b620001b5565b9050828152602081018484840111156200027657620002756200013a565b5b620002838482856200020a565b509392505050565b600082601f830112620002a357620002a262000135565b5b8151620002b584826020860162000240565b91505092915050565b60008060408385031215620002d857620002d76200012b565b5b600083015167ffffffffffffffff811115620002f957620002f862000130565b5b62000307858286016200028b565b925050602083015167ffffffffffffffff8111156200032b576200032a62000130565b5b62000339858286016200028b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200038b57607f821691505b602082108103620003a157620003a062000343565b5b50919050565b61213e80620003b76000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e99190611450565b6102bc565b6040516100fb9190611498565b60405180910390f35b61010c61039e565b604051610119919061154c565b60405180910390f35b61013c600480360381019061013791906115a4565b610430565b6040516101499190611612565b60405180910390f35b61016c60048036038101906101679190611659565b610476565b005b61018860048036038101906101839190611699565b61058d565b005b6101a4600480360381019061019f9190611699565b6105ed565b005b6101c060048036038101906101bb91906115a4565b61060d565b6040516101cd9190611612565b60405180910390f35b6101f060048036038101906101eb91906116ec565b6106be565b6040516101fd9190611728565b60405180910390f35b61020e610775565b60405161021b919061154c565b60405180910390f35b61023e6004803603810190610239919061176f565b610807565b005b61025a600480360381019061025591906118e4565b61081d565b005b610276600480360381019061027191906115a4565b61087f565b604051610283919061154c565b60405180910390f35b6102a660048036038101906102a19190611967565b6108e7565b6040516102b39190611498565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061039757506103968261097b565b5b9050919050565b6060600080546103ad906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d9906119d6565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b826109e5565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104818261060d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e890611a79565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610510610a30565b73ffffffffffffffffffffffffffffffffffffffff16148061053f575061053e81610539610a30565b6108e7565b5b61057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057590611b0b565b60405180910390fd5b6105888383610a38565b505050565b61059e610598610a30565b82610af1565b6105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d490611b9d565b60405180910390fd5b6105e8838383610b86565b505050565b6106088383836040518060200160405280600081525061081d565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90611c09565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590611c9b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610784906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546107b0906119d6565b80156107fd5780601f106107d2576101008083540402835291602001916107fd565b820191906000526020600020905b8154815290600101906020018083116107e057829003601f168201915b5050505050905090565b610819610812610a30565b8383610dec565b5050565b61082e610828610a30565b83610af1565b61086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086490611b9d565b60405180910390fd5b61087984848484610f58565b50505050565b606061088a826109e5565b6000610894610fb4565b905060008151116108b457604051806020016040528060008152506108df565b806108be84610fcb565b6040516020016108cf929190611cf7565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6109ee81611099565b610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490611c09565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610aab8361060d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610afd8361060d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b3f5750610b3e81856108e7565b5b80610b7d57508373ffffffffffffffffffffffffffffffffffffffff16610b6584610430565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ba68261060d565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390611d8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290611e1f565b60405180910390fd5b610c76838383611105565b610c81600082610a38565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cd19190611e6e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d289190611ea2565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610de783838361110a565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190611f44565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f4b9190611498565b60405180910390a3505050565b610f63848484610b86565b610f6f8484848461110f565b610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590611fd6565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060006001610fda84611291565b01905060008167ffffffffffffffff811115610ff957610ff86117b9565b5b6040519080825280601f01601f19166020018201604052801561102b5781602001600182028036833780820191505090505b509050600082602001820190505b60011561108e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161108257611081611ff6565b5b04945060008503611039575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115611284578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611154610a30565b8786866040518563ffffffff1660e01b8152600401611176949392919061207a565b6020604051808303816000875af19250505080156111b257506040513d601f19601f820116820180604052508101906111af91906120db565b60015b611234573d80600081146111e2576040519150601f19603f3d011682016040523d82523d6000602084013e6111e7565b606091505b50600081510361122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390611fd6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611289565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106112ef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816112e5576112e4611ff6565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061132c576d04ee2d6d415b85acef8100000000838161132257611321611ff6565b5b0492506020810190505b662386f26fc10000831061135b57662386f26fc10000838161135157611350611ff6565b5b0492506010810190505b6305f5e1008310611384576305f5e100838161137a57611379611ff6565b5b0492506008810190505b61271083106113a957612710838161139f5761139e611ff6565b5b0492506004810190505b606483106113cc57606483816113c2576113c1611ff6565b5b0492506002810190505b600a83106113db576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61142d816113f8565b811461143857600080fd5b50565b60008135905061144a81611424565b92915050565b600060208284031215611466576114656113ee565b5b60006114748482850161143b565b91505092915050565b60008115159050919050565b6114928161147d565b82525050565b60006020820190506114ad6000830184611489565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114ed5780820151818401526020810190506114d2565b838111156114fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061151e826114b3565b61152881856114be565b93506115388185602086016114cf565b61154181611502565b840191505092915050565b600060208201905081810360008301526115668184611513565b905092915050565b6000819050919050565b6115818161156e565b811461158c57600080fd5b50565b60008135905061159e81611578565b92915050565b6000602082840312156115ba576115b96113ee565b5b60006115c88482850161158f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115fc826115d1565b9050919050565b61160c816115f1565b82525050565b60006020820190506116276000830184611603565b92915050565b611636816115f1565b811461164157600080fd5b50565b6000813590506116538161162d565b92915050565b600080604083850312156116705761166f6113ee565b5b600061167e85828601611644565b925050602061168f8582860161158f565b9150509250929050565b6000806000606084860312156116b2576116b16113ee565b5b60006116c086828701611644565b93505060206116d186828701611644565b92505060406116e28682870161158f565b9150509250925092565b600060208284031215611702576117016113ee565b5b600061171084828501611644565b91505092915050565b6117228161156e565b82525050565b600060208201905061173d6000830184611719565b92915050565b61174c8161147d565b811461175757600080fd5b50565b60008135905061176981611743565b92915050565b60008060408385031215611786576117856113ee565b5b600061179485828601611644565b92505060206117a58582860161175a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6117f182611502565b810181811067ffffffffffffffff821117156118105761180f6117b9565b5b80604052505050565b60006118236113e4565b905061182f82826117e8565b919050565b600067ffffffffffffffff82111561184f5761184e6117b9565b5b61185882611502565b9050602081019050919050565b82818337600083830152505050565b600061188761188284611834565b611819565b9050828152602081018484840111156118a3576118a26117b4565b5b6118ae848285611865565b509392505050565b600082601f8301126118cb576118ca6117af565b5b81356118db848260208601611874565b91505092915050565b600080600080608085870312156118fe576118fd6113ee565b5b600061190c87828801611644565b945050602061191d87828801611644565b935050604061192e8782880161158f565b925050606085013567ffffffffffffffff81111561194f5761194e6113f3565b5b61195b878288016118b6565b91505092959194509250565b6000806040838503121561197e5761197d6113ee565b5b600061198c85828601611644565b925050602061199d85828601611644565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ee57607f821691505b602082108103611a0157611a006119a7565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a636021836114be565b9150611a6e82611a07565b604082019050919050565b60006020820190508181036000830152611a9281611a56565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000611af5603e836114be565b9150611b0082611a99565b604082019050919050565b60006020820190508181036000830152611b2481611ae8565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000611b87602e836114be565b9150611b9282611b2b565b604082019050919050565b60006020820190508181036000830152611bb681611b7a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000611bf36018836114be565b9150611bfe82611bbd565b602082019050919050565b60006020820190508181036000830152611c2281611be6565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000611c856029836114be565b9150611c9082611c29565b604082019050919050565b60006020820190508181036000830152611cb481611c78565b9050919050565b600081905092915050565b6000611cd1826114b3565b611cdb8185611cbb565b9350611ceb8185602086016114cf565b80840191505092915050565b6000611d038285611cc6565b9150611d0f8284611cc6565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000611d776025836114be565b9150611d8282611d1b565b604082019050919050565b60006020820190508181036000830152611da681611d6a565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e096024836114be565b9150611e1482611dad565b604082019050919050565b60006020820190508181036000830152611e3881611dfc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e798261156e565b9150611e848361156e565b925082821015611e9757611e96611e3f565b5b828203905092915050565b6000611ead8261156e565b9150611eb88361156e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611eed57611eec611e3f565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000611f2e6019836114be565b9150611f3982611ef8565b602082019050919050565b60006020820190508181036000830152611f5d81611f21565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000611fc06032836114be565b9150611fcb82611f64565b604082019050919050565b60006020820190508181036000830152611fef81611fb3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061204c82612025565b6120568185612030565b93506120668185602086016114cf565b61206f81611502565b840191505092915050565b600060808201905061208f6000830187611603565b61209c6020830186611603565b6120a96040830185611719565b81810360608301526120bb8184612041565b905095945050505050565b6000815190506120d581611424565b92915050565b6000602082840312156120f1576120f06113ee565b5b60006120ff848285016120c6565b9150509291505056fea26469706673582212201befbb93823bb4d4f3dd3dd02315ac03aab291ca85b918aca37bea81708f233e64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x24F5 CODESIZE SUB DUP1 PUSH3 0x24F5 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x2BE JUMP JUMPDEST DUP2 PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x4F SWAP3 SWAP2 SWAP1 PUSH3 0x71 JUMP JUMPDEST POP DUP1 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x68 SWAP3 SWAP2 SWAP1 PUSH3 0x71 JUMP JUMPDEST POP POP POP PUSH3 0x3A7 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x7F SWAP1 PUSH3 0x372 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0xA3 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xEF JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xBE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xEF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xEF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xEE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xD1 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0xFE SWAP2 SWAP1 PUSH3 0x102 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x11D JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x103 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH3 0x18A DUP3 PUSH3 0x13F JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x1AC JUMPI PUSH3 0x1AB PUSH3 0x150 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C1 PUSH3 0x121 JUMP JUMPDEST SWAP1 POP PUSH3 0x1CF DUP3 DUP3 PUSH3 0x17F JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x1F2 JUMPI PUSH3 0x1F1 PUSH3 0x150 JUMP JUMPDEST JUMPDEST PUSH3 0x1FD DUP3 PUSH3 0x13F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x22A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x20D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x23A JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x257 PUSH3 0x251 DUP5 PUSH3 0x1D4 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x276 JUMPI PUSH3 0x275 PUSH3 0x13A JUMP JUMPDEST JUMPDEST PUSH3 0x283 DUP5 DUP3 DUP6 PUSH3 0x20A JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x2A3 JUMPI PUSH3 0x2A2 PUSH3 0x135 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0x2B5 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x240 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2D8 JUMPI PUSH3 0x2D7 PUSH3 0x12B JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x2F9 JUMPI PUSH3 0x2F8 PUSH3 0x130 JUMP JUMPDEST JUMPDEST PUSH3 0x307 DUP6 DUP3 DUP7 ADD PUSH3 0x28B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x32B JUMPI PUSH3 0x32A PUSH3 0x130 JUMP JUMPDEST JUMPDEST PUSH3 0x339 DUP6 DUP3 DUP7 ADD PUSH3 0x28B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x38B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x3A1 JUMPI PUSH3 0x3A0 PUSH3 0x343 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x213E DUP1 PUSH3 0x3B7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x28C JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x206 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x1450 JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x1659 JUMP JUMPDEST PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x188 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x183 SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x5ED JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BB SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CD SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FD SWAP2 SWAP1 PUSH2 0x1728 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x775 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21B SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x239 SWAP2 SWAP1 PUSH2 0x176F JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x255 SWAP2 SWAP1 PUSH2 0x18E4 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x276 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x271 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x1967 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x387 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x397 JUMPI POP PUSH2 0x396 DUP3 PUSH2 0x97B JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x3AD SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3D9 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x426 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3FB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x426 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x409 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43B DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x481 DUP3 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E8 SWAP1 PUSH2 0x1A79 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 PUSH2 0xA30 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x53F JUMPI POP PUSH2 0x53E DUP2 PUSH2 0x539 PUSH2 0xA30 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST PUSH2 0x57E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x575 SWAP1 PUSH2 0x1B0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x588 DUP4 DUP4 PUSH2 0xA38 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x59E PUSH2 0x598 PUSH2 0xA30 JUMP JUMPDEST DUP3 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x5DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D4 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E8 DUP4 DUP4 DUP4 PUSH2 0xB86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x608 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x81D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6AC SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x72E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x725 SWAP1 PUSH2 0x1C9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x784 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7B0 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7FD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x819 PUSH2 0x812 PUSH2 0xA30 JUMP JUMPDEST DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x82E PUSH2 0x828 PUSH2 0xA30 JUMP JUMPDEST DUP4 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x86D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x864 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x879 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF58 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x88A DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x894 PUSH2 0xFB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x8B4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x8DF JUMP JUMPDEST DUP1 PUSH2 0x8BE DUP5 PUSH2 0xFCB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8CF SWAP3 SWAP2 SWAP1 PUSH2 0x1CF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9EE DUP2 PUSH2 0x1099 JUMP JUMPDEST PUSH2 0xA2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA24 SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAAB DUP4 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAFD DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xB3F JUMPI POP PUSH2 0xB3E DUP2 DUP6 PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xB7D JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB65 DUP5 PUSH2 0x430 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBA6 DUP3 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBFC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF3 SWAP1 PUSH2 0x1D8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xC6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC62 SWAP1 PUSH2 0x1E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC76 DUP4 DUP4 DUP4 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0xC81 PUSH1 0x0 DUP3 PUSH2 0xA38 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xCD1 SWAP2 SWAP1 PUSH2 0x1E6E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD28 SWAP2 SWAP1 PUSH2 0x1EA2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xDE7 DUP4 DUP4 DUP4 PUSH2 0x110A JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE51 SWAP1 PUSH2 0x1F44 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0xF4B SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xF63 DUP5 DUP5 DUP5 PUSH2 0xB86 JUMP JUMPDEST PUSH2 0xF6F DUP5 DUP5 DUP5 DUP5 PUSH2 0x110F JUMP JUMPDEST PUSH2 0xFAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFA5 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0xFDA DUP5 PUSH2 0x1291 JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFF9 JUMPI PUSH2 0xFF8 PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x102B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x108E JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x1082 JUMPI PUSH2 0x1081 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x1039 JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x1284 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x1154 PUSH2 0xA30 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1176 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x207A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x11B2 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11AF SWAP2 SWAP1 PUSH2 0x20DB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1234 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11E2 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 0x11E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x122C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1223 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x1289 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x12EF JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x12E5 JUMPI PUSH2 0x12E4 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x132C JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1322 JUMPI PUSH2 0x1321 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x135B JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1351 JUMPI PUSH2 0x1350 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1384 JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x137A JUMPI PUSH2 0x1379 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x13A9 JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x139F JUMPI PUSH2 0x139E PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x13CC JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x13C2 JUMPI PUSH2 0x13C1 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x13DB JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x142D DUP2 PUSH2 0x13F8 JUMP JUMPDEST DUP2 EQ PUSH2 0x1438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x144A DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1466 JUMPI PUSH2 0x1465 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1474 DUP5 DUP3 DUP6 ADD PUSH2 0x143B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1492 DUP2 PUSH2 0x147D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x14AD PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1489 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14ED JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x14D2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14FC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x151E DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1528 DUP2 DUP6 PUSH2 0x14BE JUMP JUMPDEST SWAP4 POP PUSH2 0x1538 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x1541 DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1566 DUP2 DUP5 PUSH2 0x1513 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1581 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP2 EQ PUSH2 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x159E DUP2 PUSH2 0x1578 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15BA JUMPI PUSH2 0x15B9 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x15C8 DUP5 DUP3 DUP6 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FC DUP3 PUSH2 0x15D1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x160C DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1627 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1603 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1636 DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x1641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1653 DUP2 PUSH2 0x162D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1670 JUMPI PUSH2 0x166F PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x167E DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x168F DUP6 DUP3 DUP7 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x16B2 JUMPI PUSH2 0x16B1 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x16C0 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x16D1 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x16E2 DUP7 DUP3 DUP8 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1702 JUMPI PUSH2 0x1701 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1710 DUP5 DUP3 DUP6 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1722 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x173D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1719 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x174C DUP2 PUSH2 0x147D JUMP JUMPDEST DUP2 EQ PUSH2 0x1757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1769 DUP2 PUSH2 0x1743 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1786 JUMPI PUSH2 0x1785 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1794 DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x17A5 DUP6 DUP3 DUP7 ADD PUSH2 0x175A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x17F1 DUP3 PUSH2 0x1502 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1810 JUMPI PUSH2 0x180F PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1823 PUSH2 0x13E4 JUMP JUMPDEST SWAP1 POP PUSH2 0x182F DUP3 DUP3 PUSH2 0x17E8 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x184F JUMPI PUSH2 0x184E PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH2 0x1858 DUP3 PUSH2 0x1502 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1887 PUSH2 0x1882 DUP5 PUSH2 0x1834 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x18A3 JUMPI PUSH2 0x18A2 PUSH2 0x17B4 JUMP JUMPDEST JUMPDEST PUSH2 0x18AE DUP5 DUP3 DUP6 PUSH2 0x1865 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x18CB JUMPI PUSH2 0x18CA PUSH2 0x17AF JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x18DB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1874 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x18FE JUMPI PUSH2 0x18FD PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x190C DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x191D DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x192E DUP8 DUP3 DUP9 ADD PUSH2 0x158F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x194F JUMPI PUSH2 0x194E PUSH2 0x13F3 JUMP JUMPDEST JUMPDEST PUSH2 0x195B DUP8 DUP3 DUP9 ADD PUSH2 0x18B6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x197E JUMPI PUSH2 0x197D PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x198C DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x199D DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x19EE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1A01 JUMPI PUSH2 0x1A00 PUSH2 0x19A7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A63 PUSH1 0x21 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1A6E DUP3 PUSH2 0x1A07 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A92 DUP2 PUSH2 0x1A56 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AF5 PUSH1 0x3E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B00 DUP3 PUSH2 0x1A99 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B24 DUP2 PUSH2 0x1AE8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B87 PUSH1 0x2E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B92 DUP3 PUSH2 0x1B2B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BB6 DUP2 PUSH2 0x1B7A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF3 PUSH1 0x18 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1BFE DUP3 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C22 DUP2 PUSH2 0x1BE6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C85 PUSH1 0x29 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1C90 DUP3 PUSH2 0x1C29 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1CB4 DUP2 PUSH2 0x1C78 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CD1 DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1CDB DUP2 DUP6 PUSH2 0x1CBB JUMP JUMPDEST SWAP4 POP PUSH2 0x1CEB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D03 DUP3 DUP6 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D0F DUP3 DUP5 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D77 PUSH1 0x25 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1D82 DUP3 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1DA6 DUP2 PUSH2 0x1D6A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E09 PUSH1 0x24 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1E14 DUP3 PUSH2 0x1DAD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E38 DUP2 PUSH2 0x1DFC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E79 DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1E84 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x1E97 JUMPI PUSH2 0x1E96 PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EAD DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1EB8 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x1EED JUMPI PUSH2 0x1EEC PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F2E PUSH1 0x19 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1F39 DUP3 PUSH2 0x1EF8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F5D DUP2 PUSH2 0x1F21 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FC0 PUSH1 0x32 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1FCB DUP3 PUSH2 0x1F64 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FEF DUP2 PUSH2 0x1FB3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204C DUP3 PUSH2 0x2025 JUMP JUMPDEST PUSH2 0x2056 DUP2 DUP6 PUSH2 0x2030 JUMP JUMPDEST SWAP4 POP PUSH2 0x2066 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x206F DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x208F PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x20A9 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1719 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x20BB DUP2 DUP5 PUSH2 0x2041 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x20D5 DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20F1 JUMPI PUSH2 0x20F0 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20FF DUP5 DUP3 DUP6 ADD PUSH2 0x20C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xEF 0xBB SWAP4 DUP3 EXTCODESIZE 0xB4 0xD4 RETURN 0xDD RETURNDATASIZE 0xD0 0x23 ISZERO 0xAC SUB 0xAA 0xB2 SWAP2 0xCA DUP6 0xB9 XOR 0xAC LOG3 PUSH28 0xEA81708F233E64736F6C634300080D00330000000000000000000000 ","sourceMap":"1382:13860:13:-:0;;;2237:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2311:5;2303;:13;;;;;;;;;;;;:::i;:::-;;2336:7;2326;:17;;;;;;;;;;;;:::i;:::-;;2237:113;;1382:13860;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:853::-;2824:6;2832;2881:2;2869:9;2860:7;2856:23;2852:32;2849:119;;;2887:79;;:::i;:::-;2849:119;3028:1;3017:9;3013:17;3007:24;3058:18;3050:6;3047:30;3044:117;;;3080:79;;:::i;:::-;3044:117;3185:74;3251:7;3242:6;3231:9;3227:22;3185:74;:::i;:::-;3175:84;;2978:291;3329:2;3318:9;3314:18;3308:25;3360:18;3352:6;3349:30;3346:117;;;3382:79;;:::i;:::-;3346:117;3487:74;3553:7;3544:6;3533:9;3529:22;3487:74;:::i;:::-;3477:84;;3279:292;2725:853;;;;;:::o;3584:180::-;3632:77;3629:1;3622:88;3729:4;3726:1;3719:15;3753:4;3750:1;3743:15;3770:320;3814:6;3851:1;3845:4;3841:12;3831:22;;3898:1;3892:4;3888:12;3919:18;3909:81;;3975:4;3967:6;3963:17;3953:27;;3909:81;4037:2;4029:6;4026:14;4006:18;4003:38;4000:84;;4056:18;;:::i;:::-;4000:84;3821:269;3770:320;;;:::o;1382:13860:13:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_2855":{"entryPoint":4362,"id":2855,"parameterSlots":3,"returnSlots":0},"@_approve_2723":{"entryPoint":2616,"id":2723,"parameterSlots":2,"returnSlots":0},"@_baseURI_2205":{"entryPoint":4020,"id":2205,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_2844":{"entryPoint":4357,"id":2844,"parameterSlots":3,"returnSlots":0},"@_checkOnERC721Received_2833":{"entryPoint":4367,"id":2833,"parameterSlots":4,"returnSlots":1},"@_exists_2423":{"entryPoint":4249,"id":2423,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_2456":{"entryPoint":2801,"id":2456,"parameterSlots":2,"returnSlots":1},"@_msgSender_646":{"entryPoint":2608,"id":646,"parameterSlots":0,"returnSlots":1},"@_requireMinted_2769":{"entryPoint":2533,"id":2769,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_2405":{"entryPoint":3928,"id":2405,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_2755":{"entryPoint":3564,"id":2755,"parameterSlots":3,"returnSlots":0},"@_transfer_2700":{"entryPoint":2950,"id":2700,"parameterSlots":3,"returnSlots":0},"@approve_2247":{"entryPoint":1142,"id":2247,"parameterSlots":2,"returnSlots":0},"@balanceOf_2109":{"entryPoint":1726,"id":2109,"parameterSlots":1,"returnSlots":1},"@getApproved_2265":{"entryPoint":1072,"id":2265,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_2300":{"entryPoint":2279,"id":2300,"parameterSlots":2,"returnSlots":1},"@log10_1624":{"entryPoint":4753,"id":1624,"parameterSlots":1,"returnSlots":1},"@name_2147":{"entryPoint":926,"id":2147,"parameterSlots":0,"returnSlots":1},"@ownerOf_2137":{"entryPoint":1549,"id":2137,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_2346":{"entryPoint":1517,"id":2346,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_2376":{"entryPoint":2077,"id":2376,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_2282":{"entryPoint":2055,"id":2282,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2085":{"entryPoint":700,"id":2085,"parameterSlots":1,"returnSlots":1},"@supportsInterface_908":{"entryPoint":2427,"id":908,"parameterSlots":1,"returnSlots":1},"@symbol_2157":{"entryPoint":1909,"id":2157,"parameterSlots":0,"returnSlots":1},"@toString_715":{"entryPoint":4043,"id":715,"parameterSlots":1,"returnSlots":1},"@tokenURI_2196":{"entryPoint":2175,"id":2196,"parameterSlots":1,"returnSlots":1},"@transferFrom_2327":{"entryPoint":1421,"id":2327,"parameterSlots":3,"returnSlots":0},"abi_decode_available_length_t_bytes_memory_ptr":{"entryPoint":6260,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":5700,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":5978,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4":{"entryPoint":5179,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4_fromMemory":{"entryPoint":8390,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr":{"entryPoint":6326,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":5519,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":5868,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":6503,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":5785,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":6372,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":5999,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":5721,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":5200,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":8411,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":5540,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":5635,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":5257,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":8257,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":5395,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":7366,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack":{"entryPoint":8115,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack":{"entryPoint":7530,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack":{"entryPoint":7676,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack":{"entryPoint":7969,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack":{"entryPoint":7288,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack":{"entryPoint":6888,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack":{"entryPoint":7142,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack":{"entryPoint":6742,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack":{"entryPoint":7034,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":5913,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":7415,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":5650,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":8314,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":5272,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5452,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8150,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7565,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7711,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8004,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7323,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6923,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7177,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6777,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7069,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":5928,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":6169,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":5092,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":6196,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":8229,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":5299,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":8240,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":5310,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":7355,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":7842,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":7790,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":5617,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":5245,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":5112,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":5585,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":5486,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory":{"entryPoint":6245,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory":{"entryPoint":5327,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":6614,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":6120,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":7743,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":8182,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":6567,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":6073,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":6063,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":6068,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":5107,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":5102,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":5378,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e":{"entryPoint":8036,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48":{"entryPoint":7451,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4":{"entryPoint":7597,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05":{"entryPoint":7928,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159":{"entryPoint":7209,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304":{"entryPoint":6809,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f":{"entryPoint":7101,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942":{"entryPoint":6663,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b":{"entryPoint":6955,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":5677,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":5955,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes4":{"entryPoint":5156,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":5496,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:23863:15","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:15","statements":[{"nodeType":"YulAssignment","src":"57:19:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:15","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:15"},"nodeType":"YulFunctionCall","src":"67:9:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:15"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:15","type":""}],"src":"7:75:15"},{"body":{"nodeType":"YulBlock","src":"177:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:15"},"nodeType":"YulFunctionCall","src":"187:12:15"},"nodeType":"YulExpressionStatement","src":"187:12:15"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:15"},{"body":{"nodeType":"YulBlock","src":"300:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:15"},"nodeType":"YulFunctionCall","src":"310:12:15"},"nodeType":"YulExpressionStatement","src":"310:12:15"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:15"},{"body":{"nodeType":"YulBlock","src":"378:105:15","statements":[{"nodeType":"YulAssignment","src":"388:89:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"410:66:15","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"399:3:15"},"nodeType":"YulFunctionCall","src":"399:78:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"388:7:15"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"360:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"370:7:15","type":""}],"src":"334:149:15"},{"body":{"nodeType":"YulBlock","src":"531:78:15","statements":[{"body":{"nodeType":"YulBlock","src":"587:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"596:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"599:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"589:6:15"},"nodeType":"YulFunctionCall","src":"589:12:15"},"nodeType":"YulExpressionStatement","src":"589:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"554:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"578:5:15"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"561:16:15"},"nodeType":"YulFunctionCall","src":"561:23:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"551:2:15"},"nodeType":"YulFunctionCall","src":"551:34:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"544:6:15"},"nodeType":"YulFunctionCall","src":"544:42:15"},"nodeType":"YulIf","src":"541:62:15"}]},"name":"validator_revert_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"524:5:15","type":""}],"src":"489:120:15"},{"body":{"nodeType":"YulBlock","src":"666:86:15","statements":[{"nodeType":"YulAssignment","src":"676:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"698:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:15"},"nodeType":"YulFunctionCall","src":"685:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"676:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"740:5:15"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"714:25:15"},"nodeType":"YulFunctionCall","src":"714:32:15"},"nodeType":"YulExpressionStatement","src":"714:32:15"}]},"name":"abi_decode_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"644:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"652:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"660:5:15","type":""}],"src":"615:137:15"},{"body":{"nodeType":"YulBlock","src":"823:262:15","statements":[{"body":{"nodeType":"YulBlock","src":"869:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"871:77:15"},"nodeType":"YulFunctionCall","src":"871:79:15"},"nodeType":"YulExpressionStatement","src":"871:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"844:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"853:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"840:3:15"},"nodeType":"YulFunctionCall","src":"840:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"865:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"836:3:15"},"nodeType":"YulFunctionCall","src":"836:32:15"},"nodeType":"YulIf","src":"833:119:15"},{"nodeType":"YulBlock","src":"962:116:15","statements":[{"nodeType":"YulVariableDeclaration","src":"977:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"991:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"981:6:15","type":""}]},{"nodeType":"YulAssignment","src":"1006:62:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1040:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"1051:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1036:3:15"},"nodeType":"YulFunctionCall","src":"1036:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1060:7:15"}],"functionName":{"name":"abi_decode_t_bytes4","nodeType":"YulIdentifier","src":"1016:19:15"},"nodeType":"YulFunctionCall","src":"1016:52:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1006:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"793:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"804:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"816:6:15","type":""}],"src":"758:327:15"},{"body":{"nodeType":"YulBlock","src":"1133:48:15","statements":[{"nodeType":"YulAssignment","src":"1143:32:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1161:6:15"},"nodeType":"YulFunctionCall","src":"1161:13:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1154:6:15"},"nodeType":"YulFunctionCall","src":"1154:21:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1143:7:15"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1115:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1125:7:15","type":""}],"src":"1091:90:15"},{"body":{"nodeType":"YulBlock","src":"1246:50:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1283:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"1268:14:15"},"nodeType":"YulFunctionCall","src":"1268:21:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1256:6:15"},"nodeType":"YulFunctionCall","src":"1256:34:15"},"nodeType":"YulExpressionStatement","src":"1256:34:15"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1234:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1241:3:15","type":""}],"src":"1187:109:15"},{"body":{"nodeType":"YulBlock","src":"1394:118:15","statements":[{"nodeType":"YulAssignment","src":"1404:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:15"},"nodeType":"YulFunctionCall","src":"1412:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1404:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1478:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1491:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"1502:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1487:3:15"},"nodeType":"YulFunctionCall","src":"1487:17:15"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"1440:37:15"},"nodeType":"YulFunctionCall","src":"1440:65:15"},"nodeType":"YulExpressionStatement","src":"1440:65:15"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1366:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1378:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1389:4:15","type":""}],"src":"1302:210:15"},{"body":{"nodeType":"YulBlock","src":"1577:40:15","statements":[{"nodeType":"YulAssignment","src":"1588:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1604:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1598:5:15"},"nodeType":"YulFunctionCall","src":"1598:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1588:6:15"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1560:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1570:6:15","type":""}],"src":"1518:99:15"},{"body":{"nodeType":"YulBlock","src":"1719:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1736:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"1741:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1729:6:15"},"nodeType":"YulFunctionCall","src":"1729:19:15"},"nodeType":"YulExpressionStatement","src":"1729:19:15"},{"nodeType":"YulAssignment","src":"1757:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1776:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"1781:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1772:3:15"},"nodeType":"YulFunctionCall","src":"1772:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1757:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1691:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1696:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1707:11:15","type":""}],"src":"1623:169:15"},{"body":{"nodeType":"YulBlock","src":"1847:258:15","statements":[{"nodeType":"YulVariableDeclaration","src":"1857:10:15","value":{"kind":"number","nodeType":"YulLiteral","src":"1866:1:15","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1861:1:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"1926:63:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1951:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"1956:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1947:3:15"},"nodeType":"YulFunctionCall","src":"1947:11:15"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1970:3:15"},{"name":"i","nodeType":"YulIdentifier","src":"1975:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:15"},"nodeType":"YulFunctionCall","src":"1966:11:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1960:5:15"},"nodeType":"YulFunctionCall","src":"1960:18:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1940:6:15"},"nodeType":"YulFunctionCall","src":"1940:39:15"},"nodeType":"YulExpressionStatement","src":"1940:39:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1887:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1884:2:15"},"nodeType":"YulFunctionCall","src":"1884:13:15"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1898:19:15","statements":[{"nodeType":"YulAssignment","src":"1900:15:15","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1909:1:15"},{"kind":"number","nodeType":"YulLiteral","src":"1912:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1905:3:15"},"nodeType":"YulFunctionCall","src":"1905:10:15"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1900:1:15"}]}]},"pre":{"nodeType":"YulBlock","src":"1880:3:15","statements":[]},"src":"1876:113:15"},{"body":{"nodeType":"YulBlock","src":"2023:76:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2073:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"2078:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2069:3:15"},"nodeType":"YulFunctionCall","src":"2069:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"2087:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2062:6:15"},"nodeType":"YulFunctionCall","src":"2062:27:15"},"nodeType":"YulExpressionStatement","src":"2062:27:15"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2004:1:15"},{"name":"length","nodeType":"YulIdentifier","src":"2007:6:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2001:2:15"},"nodeType":"YulFunctionCall","src":"2001:13:15"},"nodeType":"YulIf","src":"1998:101:15"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1829:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1834:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"1839:6:15","type":""}],"src":"1798:307:15"},{"body":{"nodeType":"YulBlock","src":"2159:54:15","statements":[{"nodeType":"YulAssignment","src":"2169:38:15","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2187:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2194:2:15","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2183:3:15"},"nodeType":"YulFunctionCall","src":"2183:14:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2203:2:15","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2199:3:15"},"nodeType":"YulFunctionCall","src":"2199:7:15"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2179:3:15"},"nodeType":"YulFunctionCall","src":"2179:28:15"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2169:6:15"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2142:5:15","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"2152:6:15","type":""}],"src":"2111:102:15"},{"body":{"nodeType":"YulBlock","src":"2311:272:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2321:53:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2368:5:15"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2335:32:15"},"nodeType":"YulFunctionCall","src":"2335:39:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2325:6:15","type":""}]},{"nodeType":"YulAssignment","src":"2383:78:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2449:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"2454:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2390:58:15"},"nodeType":"YulFunctionCall","src":"2390:71:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2383:3:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2496:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"2503:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:15"},"nodeType":"YulFunctionCall","src":"2492:16:15"},{"name":"pos","nodeType":"YulIdentifier","src":"2510:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"2515:6:15"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2470:21:15"},"nodeType":"YulFunctionCall","src":"2470:52:15"},"nodeType":"YulExpressionStatement","src":"2470:52:15"},{"nodeType":"YulAssignment","src":"2531:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2542:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2569:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2547:21:15"},"nodeType":"YulFunctionCall","src":"2547:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2538:3:15"},"nodeType":"YulFunctionCall","src":"2538:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2531:3:15"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2292:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2299:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2307:3:15","type":""}],"src":"2219:364:15"},{"body":{"nodeType":"YulBlock","src":"2707:195:15","statements":[{"nodeType":"YulAssignment","src":"2717:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2729:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"2740:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2725:3:15"},"nodeType":"YulFunctionCall","src":"2725:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2717:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2764:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"2775:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2760:3:15"},"nodeType":"YulFunctionCall","src":"2760:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2783:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"2789:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2779:3:15"},"nodeType":"YulFunctionCall","src":"2779:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2753:6:15"},"nodeType":"YulFunctionCall","src":"2753:47:15"},"nodeType":"YulExpressionStatement","src":"2753:47:15"},{"nodeType":"YulAssignment","src":"2809:86:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2881:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"2890:4:15"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2817:63:15"},"nodeType":"YulFunctionCall","src":"2817:78:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2809:4:15"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2679:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2691:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2702:4:15","type":""}],"src":"2589:313:15"},{"body":{"nodeType":"YulBlock","src":"2953:32:15","statements":[{"nodeType":"YulAssignment","src":"2963:16:15","value":{"name":"value","nodeType":"YulIdentifier","src":"2974:5:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2963:7:15"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2935:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2945:7:15","type":""}],"src":"2908:77:15"},{"body":{"nodeType":"YulBlock","src":"3034:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"3091:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3100:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3103:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3093:6:15"},"nodeType":"YulFunctionCall","src":"3093:12:15"},"nodeType":"YulExpressionStatement","src":"3093:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3057:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3082:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3064:17:15"},"nodeType":"YulFunctionCall","src":"3064:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3054:2:15"},"nodeType":"YulFunctionCall","src":"3054:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3047:6:15"},"nodeType":"YulFunctionCall","src":"3047:43:15"},"nodeType":"YulIf","src":"3044:63:15"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3027:5:15","type":""}],"src":"2991:122:15"},{"body":{"nodeType":"YulBlock","src":"3171:87:15","statements":[{"nodeType":"YulAssignment","src":"3181:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3203:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3190:12:15"},"nodeType":"YulFunctionCall","src":"3190:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3181:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3246:5:15"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"3219:26:15"},"nodeType":"YulFunctionCall","src":"3219:33:15"},"nodeType":"YulExpressionStatement","src":"3219:33:15"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3149:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"3157:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3165:5:15","type":""}],"src":"3119:139:15"},{"body":{"nodeType":"YulBlock","src":"3330:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"3376:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3378:77:15"},"nodeType":"YulFunctionCall","src":"3378:79:15"},"nodeType":"YulExpressionStatement","src":"3378:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3351:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"3360:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3347:3:15"},"nodeType":"YulFunctionCall","src":"3347:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"3372:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3343:3:15"},"nodeType":"YulFunctionCall","src":"3343:32:15"},"nodeType":"YulIf","src":"3340:119:15"},{"nodeType":"YulBlock","src":"3469:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3484:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"3498:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3488:6:15","type":""}]},{"nodeType":"YulAssignment","src":"3513:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"3559:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3544:3:15"},"nodeType":"YulFunctionCall","src":"3544:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3568:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3523:20:15"},"nodeType":"YulFunctionCall","src":"3523:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3513:6:15"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3300:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3311:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3323:6:15","type":""}],"src":"3264:329:15"},{"body":{"nodeType":"YulBlock","src":"3644:81:15","statements":[{"nodeType":"YulAssignment","src":"3654:65:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3669:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"3676:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3665:3:15"},"nodeType":"YulFunctionCall","src":"3665:54:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3654:7:15"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3626:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3636:7:15","type":""}],"src":"3599:126:15"},{"body":{"nodeType":"YulBlock","src":"3776:51:15","statements":[{"nodeType":"YulAssignment","src":"3786:35:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3815:5:15"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"3797:17:15"},"nodeType":"YulFunctionCall","src":"3797:24:15"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3786:7:15"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3758:5:15","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3768:7:15","type":""}],"src":"3731:96:15"},{"body":{"nodeType":"YulBlock","src":"3898:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3915:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3938:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"3920:17:15"},"nodeType":"YulFunctionCall","src":"3920:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3908:6:15"},"nodeType":"YulFunctionCall","src":"3908:37:15"},"nodeType":"YulExpressionStatement","src":"3908:37:15"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3886:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3893:3:15","type":""}],"src":"3833:118:15"},{"body":{"nodeType":"YulBlock","src":"4055:124:15","statements":[{"nodeType":"YulAssignment","src":"4065:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4077:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4088:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4073:3:15"},"nodeType":"YulFunctionCall","src":"4073:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4065:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4145:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4158:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"4169:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4154:3:15"},"nodeType":"YulFunctionCall","src":"4154:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"4101:43:15"},"nodeType":"YulFunctionCall","src":"4101:71:15"},"nodeType":"YulExpressionStatement","src":"4101:71:15"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4027:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4039:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4050:4:15","type":""}],"src":"3957:222:15"},{"body":{"nodeType":"YulBlock","src":"4228:79:15","statements":[{"body":{"nodeType":"YulBlock","src":"4285:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4294:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4297:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4287:6:15"},"nodeType":"YulFunctionCall","src":"4287:12:15"},"nodeType":"YulExpressionStatement","src":"4287:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4251:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4276:5:15"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"4258:17:15"},"nodeType":"YulFunctionCall","src":"4258:24:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4248:2:15"},"nodeType":"YulFunctionCall","src":"4248:35:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4241:6:15"},"nodeType":"YulFunctionCall","src":"4241:43:15"},"nodeType":"YulIf","src":"4238:63:15"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4221:5:15","type":""}],"src":"4185:122:15"},{"body":{"nodeType":"YulBlock","src":"4365:87:15","statements":[{"nodeType":"YulAssignment","src":"4375:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4397:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4384:12:15"},"nodeType":"YulFunctionCall","src":"4384:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4375:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4440:5:15"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4413:26:15"},"nodeType":"YulFunctionCall","src":"4413:33:15"},"nodeType":"YulExpressionStatement","src":"4413:33:15"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4343:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"4351:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4359:5:15","type":""}],"src":"4313:139:15"},{"body":{"nodeType":"YulBlock","src":"4541:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"4587:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4589:77:15"},"nodeType":"YulFunctionCall","src":"4589:79:15"},"nodeType":"YulExpressionStatement","src":"4589:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4562:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4558:3:15"},"nodeType":"YulFunctionCall","src":"4558:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"4583:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4554:3:15"},"nodeType":"YulFunctionCall","src":"4554:32:15"},"nodeType":"YulIf","src":"4551:119:15"},{"nodeType":"YulBlock","src":"4680:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4695:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"4709:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4699:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4724:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4759:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4770:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4755:3:15"},"nodeType":"YulFunctionCall","src":"4755:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4779:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4734:20:15"},"nodeType":"YulFunctionCall","src":"4734:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4724:6:15"}]}]},{"nodeType":"YulBlock","src":"4807:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"4822:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"4836:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4826:6:15","type":""}]},{"nodeType":"YulAssignment","src":"4852:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"4898:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4883:3:15"},"nodeType":"YulFunctionCall","src":"4883:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4907:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4862:20:15"},"nodeType":"YulFunctionCall","src":"4862:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4852:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4503:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4514:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4526:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4534:6:15","type":""}],"src":"4458:474:15"},{"body":{"nodeType":"YulBlock","src":"5038:519:15","statements":[{"body":{"nodeType":"YulBlock","src":"5084:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5086:77:15"},"nodeType":"YulFunctionCall","src":"5086:79:15"},"nodeType":"YulExpressionStatement","src":"5086:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5059:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"5068:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5055:3:15"},"nodeType":"YulFunctionCall","src":"5055:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"5080:2:15","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5051:3:15"},"nodeType":"YulFunctionCall","src":"5051:32:15"},"nodeType":"YulIf","src":"5048:119:15"},{"nodeType":"YulBlock","src":"5177:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5192:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5206:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5196:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5221:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5256:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5267:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5252:3:15"},"nodeType":"YulFunctionCall","src":"5252:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5276:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5231:20:15"},"nodeType":"YulFunctionCall","src":"5231:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5221:6:15"}]}]},{"nodeType":"YulBlock","src":"5304:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5319:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5333:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5323:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5349:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5384:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5395:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5380:3:15"},"nodeType":"YulFunctionCall","src":"5380:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5404:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5359:20:15"},"nodeType":"YulFunctionCall","src":"5359:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5349:6:15"}]}]},{"nodeType":"YulBlock","src":"5432:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5447:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5461:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5451:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5477:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5512:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5523:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5508:3:15"},"nodeType":"YulFunctionCall","src":"5508:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5532:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5487:20:15"},"nodeType":"YulFunctionCall","src":"5487:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5477:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4992:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5003:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5015:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5023:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5031:6:15","type":""}],"src":"4938:619:15"},{"body":{"nodeType":"YulBlock","src":"5629:263:15","statements":[{"body":{"nodeType":"YulBlock","src":"5675:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5677:77:15"},"nodeType":"YulFunctionCall","src":"5677:79:15"},"nodeType":"YulExpressionStatement","src":"5677:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5650:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"5659:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5646:3:15"},"nodeType":"YulFunctionCall","src":"5646:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"5671:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5642:3:15"},"nodeType":"YulFunctionCall","src":"5642:32:15"},"nodeType":"YulIf","src":"5639:119:15"},{"nodeType":"YulBlock","src":"5768:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"5783:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"5797:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5787:6:15","type":""}]},{"nodeType":"YulAssignment","src":"5812:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5847:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"5858:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5843:3:15"},"nodeType":"YulFunctionCall","src":"5843:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5867:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5822:20:15"},"nodeType":"YulFunctionCall","src":"5822:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5812:6:15"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5599:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5610:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5622:6:15","type":""}],"src":"5563:329:15"},{"body":{"nodeType":"YulBlock","src":"5963:53:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5980:3:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6003:5:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5985:17:15"},"nodeType":"YulFunctionCall","src":"5985:24:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5973:6:15"},"nodeType":"YulFunctionCall","src":"5973:37:15"},"nodeType":"YulExpressionStatement","src":"5973:37:15"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5951:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5958:3:15","type":""}],"src":"5898:118:15"},{"body":{"nodeType":"YulBlock","src":"6120:124:15","statements":[{"nodeType":"YulAssignment","src":"6130:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6142:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"6153:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6138:3:15"},"nodeType":"YulFunctionCall","src":"6138:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6130:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6210:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6223:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"6234:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6219:3:15"},"nodeType":"YulFunctionCall","src":"6219:17:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6166:43:15"},"nodeType":"YulFunctionCall","src":"6166:71:15"},"nodeType":"YulExpressionStatement","src":"6166:71:15"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6092:9:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6104:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6115:4:15","type":""}],"src":"6022:222:15"},{"body":{"nodeType":"YulBlock","src":"6290:76:15","statements":[{"body":{"nodeType":"YulBlock","src":"6344:16:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6353:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6356:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6346:6:15"},"nodeType":"YulFunctionCall","src":"6346:12:15"},"nodeType":"YulExpressionStatement","src":"6346:12:15"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6313:5:15"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6335:5:15"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6320:14:15"},"nodeType":"YulFunctionCall","src":"6320:21:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6310:2:15"},"nodeType":"YulFunctionCall","src":"6310:32:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6303:6:15"},"nodeType":"YulFunctionCall","src":"6303:40:15"},"nodeType":"YulIf","src":"6300:60:15"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6283:5:15","type":""}],"src":"6250:116:15"},{"body":{"nodeType":"YulBlock","src":"6421:84:15","statements":[{"nodeType":"YulAssignment","src":"6431:29:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6453:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6440:12:15"},"nodeType":"YulFunctionCall","src":"6440:20:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6431:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6493:5:15"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6469:23:15"},"nodeType":"YulFunctionCall","src":"6469:30:15"},"nodeType":"YulExpressionStatement","src":"6469:30:15"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6399:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"6407:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6415:5:15","type":""}],"src":"6372:133:15"},{"body":{"nodeType":"YulBlock","src":"6591:388:15","statements":[{"body":{"nodeType":"YulBlock","src":"6637:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6639:77:15"},"nodeType":"YulFunctionCall","src":"6639:79:15"},"nodeType":"YulExpressionStatement","src":"6639:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6612:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"6621:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6608:3:15"},"nodeType":"YulFunctionCall","src":"6608:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"6633:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6604:3:15"},"nodeType":"YulFunctionCall","src":"6604:32:15"},"nodeType":"YulIf","src":"6601:119:15"},{"nodeType":"YulBlock","src":"6730:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6745:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6759:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6749:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6774:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6809:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6820:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6805:3:15"},"nodeType":"YulFunctionCall","src":"6805:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6829:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6784:20:15"},"nodeType":"YulFunctionCall","src":"6784:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6774:6:15"}]}]},{"nodeType":"YulBlock","src":"6857:115:15","statements":[{"nodeType":"YulVariableDeclaration","src":"6872:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"6886:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6876:6:15","type":""}]},{"nodeType":"YulAssignment","src":"6902:60:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6934:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"6945:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6930:3:15"},"nodeType":"YulFunctionCall","src":"6930:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6954:7:15"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"6912:17:15"},"nodeType":"YulFunctionCall","src":"6912:50:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6902:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6553:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6564:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6576:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6584:6:15","type":""}],"src":"6511:468:15"},{"body":{"nodeType":"YulBlock","src":"7074:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7091:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7094:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7084:6:15"},"nodeType":"YulFunctionCall","src":"7084:12:15"},"nodeType":"YulExpressionStatement","src":"7084:12:15"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"6985:117:15"},{"body":{"nodeType":"YulBlock","src":"7197:28:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7214:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7217:1:15","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7207:6:15"},"nodeType":"YulFunctionCall","src":"7207:12:15"},"nodeType":"YulExpressionStatement","src":"7207:12:15"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"7108:117:15"},{"body":{"nodeType":"YulBlock","src":"7259:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7276:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7279:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7269:6:15"},"nodeType":"YulFunctionCall","src":"7269:88:15"},"nodeType":"YulExpressionStatement","src":"7269:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7373:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7376:4:15","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7366:6:15"},"nodeType":"YulFunctionCall","src":"7366:15:15"},"nodeType":"YulExpressionStatement","src":"7366:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7397:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7400:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7390:6:15"},"nodeType":"YulFunctionCall","src":"7390:15:15"},"nodeType":"YulExpressionStatement","src":"7390:15:15"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7231:180:15"},{"body":{"nodeType":"YulBlock","src":"7460:238:15","statements":[{"nodeType":"YulVariableDeclaration","src":"7470:58:15","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7492:6:15"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7522:4:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7500:21:15"},"nodeType":"YulFunctionCall","src":"7500:27:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7488:3:15"},"nodeType":"YulFunctionCall","src":"7488:40:15"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7474:10:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"7639:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7641:16:15"},"nodeType":"YulFunctionCall","src":"7641:18:15"},"nodeType":"YulExpressionStatement","src":"7641:18:15"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7582:10:15"},{"kind":"number","nodeType":"YulLiteral","src":"7594:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7579:2:15"},"nodeType":"YulFunctionCall","src":"7579:34:15"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7618:10:15"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7630:6:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7615:2:15"},"nodeType":"YulFunctionCall","src":"7615:22:15"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7576:2:15"},"nodeType":"YulFunctionCall","src":"7576:62:15"},"nodeType":"YulIf","src":"7573:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7677:2:15","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7681:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7670:6:15"},"nodeType":"YulFunctionCall","src":"7670:22:15"},"nodeType":"YulExpressionStatement","src":"7670:22:15"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7446:6:15","type":""},{"name":"size","nodeType":"YulTypedName","src":"7454:4:15","type":""}],"src":"7417:281:15"},{"body":{"nodeType":"YulBlock","src":"7745:88:15","statements":[{"nodeType":"YulAssignment","src":"7755:30:15","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7765:18:15"},"nodeType":"YulFunctionCall","src":"7765:20:15"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7755:6:15"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7814:6:15"},{"name":"size","nodeType":"YulIdentifier","src":"7822:4:15"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7794:19:15"},"nodeType":"YulFunctionCall","src":"7794:33:15"},"nodeType":"YulExpressionStatement","src":"7794:33:15"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7729:4:15","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7738:6:15","type":""}],"src":"7704:129:15"},{"body":{"nodeType":"YulBlock","src":"7905:241:15","statements":[{"body":{"nodeType":"YulBlock","src":"8010:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"8012:16:15"},"nodeType":"YulFunctionCall","src":"8012:18:15"},"nodeType":"YulExpressionStatement","src":"8012:18:15"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7982:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"7990:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7979:2:15"},"nodeType":"YulFunctionCall","src":"7979:30:15"},"nodeType":"YulIf","src":"7976:56:15"},{"nodeType":"YulAssignment","src":"8042:37:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8072:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8050:21:15"},"nodeType":"YulFunctionCall","src":"8050:29:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8042:4:15"}]},{"nodeType":"YulAssignment","src":"8116:23:15","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"8128:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"8134:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8124:3:15"},"nodeType":"YulFunctionCall","src":"8124:15:15"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8116:4:15"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7889:6:15","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7900:4:15","type":""}],"src":"7839:307:15"},{"body":{"nodeType":"YulBlock","src":"8203:103:15","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8226:3:15"},{"name":"src","nodeType":"YulIdentifier","src":"8231:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"8236:6:15"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8213:12:15"},"nodeType":"YulFunctionCall","src":"8213:30:15"},"nodeType":"YulExpressionStatement","src":"8213:30:15"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8284:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"8289:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8280:3:15"},"nodeType":"YulFunctionCall","src":"8280:16:15"},{"kind":"number","nodeType":"YulLiteral","src":"8298:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8273:6:15"},"nodeType":"YulFunctionCall","src":"8273:27:15"},"nodeType":"YulExpressionStatement","src":"8273:27:15"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8185:3:15","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8190:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"8195:6:15","type":""}],"src":"8152:154:15"},{"body":{"nodeType":"YulBlock","src":"8395:327:15","statements":[{"nodeType":"YulAssignment","src":"8405:74:15","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8471:6:15"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8430:40:15"},"nodeType":"YulFunctionCall","src":"8430:48:15"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8414:15:15"},"nodeType":"YulFunctionCall","src":"8414:65:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8405:5:15"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8495:5:15"},{"name":"length","nodeType":"YulIdentifier","src":"8502:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8488:6:15"},"nodeType":"YulFunctionCall","src":"8488:21:15"},"nodeType":"YulExpressionStatement","src":"8488:21:15"},{"nodeType":"YulVariableDeclaration","src":"8518:27:15","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8533:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"8540:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8529:3:15"},"nodeType":"YulFunctionCall","src":"8529:16:15"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8522:3:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"8583:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"8585:77:15"},"nodeType":"YulFunctionCall","src":"8585:79:15"},"nodeType":"YulExpressionStatement","src":"8585:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8564:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"8569:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8560:3:15"},"nodeType":"YulFunctionCall","src":"8560:16:15"},{"name":"end","nodeType":"YulIdentifier","src":"8578:3:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8557:2:15"},"nodeType":"YulFunctionCall","src":"8557:25:15"},"nodeType":"YulIf","src":"8554:112:15"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8699:3:15"},{"name":"dst","nodeType":"YulIdentifier","src":"8704:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"8709:6:15"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"8675:23:15"},"nodeType":"YulFunctionCall","src":"8675:41:15"},"nodeType":"YulExpressionStatement","src":"8675:41:15"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8368:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"8373:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"8381:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8389:5:15","type":""}],"src":"8312:410:15"},{"body":{"nodeType":"YulBlock","src":"8802:277:15","statements":[{"body":{"nodeType":"YulBlock","src":"8851:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"8853:77:15"},"nodeType":"YulFunctionCall","src":"8853:79:15"},"nodeType":"YulExpressionStatement","src":"8853:79:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8830:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"8838:4:15","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8826:3:15"},"nodeType":"YulFunctionCall","src":"8826:17:15"},{"name":"end","nodeType":"YulIdentifier","src":"8845:3:15"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8822:3:15"},"nodeType":"YulFunctionCall","src":"8822:27:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8815:6:15"},"nodeType":"YulFunctionCall","src":"8815:35:15"},"nodeType":"YulIf","src":"8812:122:15"},{"nodeType":"YulVariableDeclaration","src":"8943:34:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8970:6:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8957:12:15"},"nodeType":"YulFunctionCall","src":"8957:20:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8947:6:15","type":""}]},{"nodeType":"YulAssignment","src":"8986:87:15","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9046:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9054:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9042:3:15"},"nodeType":"YulFunctionCall","src":"9042:17:15"},{"name":"length","nodeType":"YulIdentifier","src":"9061:6:15"},{"name":"end","nodeType":"YulIdentifier","src":"9069:3:15"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8995:46:15"},"nodeType":"YulFunctionCall","src":"8995:78:15"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8986:5:15"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8780:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"8788:3:15","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8796:5:15","type":""}],"src":"8741:338:15"},{"body":{"nodeType":"YulBlock","src":"9211:817:15","statements":[{"body":{"nodeType":"YulBlock","src":"9258:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9260:77:15"},"nodeType":"YulFunctionCall","src":"9260:79:15"},"nodeType":"YulExpressionStatement","src":"9260:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9232:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"9241:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9228:3:15"},"nodeType":"YulFunctionCall","src":"9228:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"9253:3:15","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9224:3:15"},"nodeType":"YulFunctionCall","src":"9224:33:15"},"nodeType":"YulIf","src":"9221:120:15"},{"nodeType":"YulBlock","src":"9351:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9366:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9380:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9370:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9395:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9430:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9441:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9426:3:15"},"nodeType":"YulFunctionCall","src":"9426:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9450:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9405:20:15"},"nodeType":"YulFunctionCall","src":"9405:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9395:6:15"}]}]},{"nodeType":"YulBlock","src":"9478:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9493:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9507:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9497:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9523:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9558:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9569:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9554:3:15"},"nodeType":"YulFunctionCall","src":"9554:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9578:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9533:20:15"},"nodeType":"YulFunctionCall","src":"9533:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9523:6:15"}]}]},{"nodeType":"YulBlock","src":"9606:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9621:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"9635:2:15","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9625:6:15","type":""}]},{"nodeType":"YulAssignment","src":"9651:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9686:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9697:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9682:3:15"},"nodeType":"YulFunctionCall","src":"9682:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9706:7:15"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"9661:20:15"},"nodeType":"YulFunctionCall","src":"9661:53:15"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9651:6:15"}]}]},{"nodeType":"YulBlock","src":"9734:287:15","statements":[{"nodeType":"YulVariableDeclaration","src":"9749:46:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9780:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"9791:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9776:3:15"},"nodeType":"YulFunctionCall","src":"9776:18:15"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9763:12:15"},"nodeType":"YulFunctionCall","src":"9763:32:15"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9753:6:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"9842:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9844:77:15"},"nodeType":"YulFunctionCall","src":"9844:79:15"},"nodeType":"YulExpressionStatement","src":"9844:79:15"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9814:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"9822:18:15","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9811:2:15"},"nodeType":"YulFunctionCall","src":"9811:30:15"},"nodeType":"YulIf","src":"9808:117:15"},{"nodeType":"YulAssignment","src":"9939:72:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9983:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"9994:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:15"},"nodeType":"YulFunctionCall","src":"9979:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10003:7:15"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"9949:29:15"},"nodeType":"YulFunctionCall","src":"9949:62:15"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9939:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9157:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9168:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9180:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9188:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9196:6:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9204:6:15","type":""}],"src":"9085:943:15"},{"body":{"nodeType":"YulBlock","src":"10117:391:15","statements":[{"body":{"nodeType":"YulBlock","src":"10163:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10165:77:15"},"nodeType":"YulFunctionCall","src":"10165:79:15"},"nodeType":"YulExpressionStatement","src":"10165:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10138:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"10147:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10134:3:15"},"nodeType":"YulFunctionCall","src":"10134:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"10159:2:15","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10130:3:15"},"nodeType":"YulFunctionCall","src":"10130:32:15"},"nodeType":"YulIf","src":"10127:119:15"},{"nodeType":"YulBlock","src":"10256:117:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10271:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10285:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10275:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10300:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10335:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10346:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10331:3:15"},"nodeType":"YulFunctionCall","src":"10331:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10355:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10310:20:15"},"nodeType":"YulFunctionCall","src":"10310:53:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10300:6:15"}]}]},{"nodeType":"YulBlock","src":"10383:118:15","statements":[{"nodeType":"YulVariableDeclaration","src":"10398:16:15","value":{"kind":"number","nodeType":"YulLiteral","src":"10412:2:15","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10402:6:15","type":""}]},{"nodeType":"YulAssignment","src":"10428:63:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10463:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"10474:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10459:3:15"},"nodeType":"YulFunctionCall","src":"10459:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10483:7:15"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10438:20:15"},"nodeType":"YulFunctionCall","src":"10438:53:15"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10428:6:15"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10079:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10090:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10102:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10110:6:15","type":""}],"src":"10034:474:15"},{"body":{"nodeType":"YulBlock","src":"10542:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10559:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10562:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10552:6:15"},"nodeType":"YulFunctionCall","src":"10552:88:15"},"nodeType":"YulExpressionStatement","src":"10552:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10656:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10659:4:15","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10649:6:15"},"nodeType":"YulFunctionCall","src":"10649:15:15"},"nodeType":"YulExpressionStatement","src":"10649:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10680:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10683:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10673:6:15"},"nodeType":"YulFunctionCall","src":"10673:15:15"},"nodeType":"YulExpressionStatement","src":"10673:15:15"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"10514:180:15"},{"body":{"nodeType":"YulBlock","src":"10751:269:15","statements":[{"nodeType":"YulAssignment","src":"10761:22:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10775:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"10781:1:15","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10771:3:15"},"nodeType":"YulFunctionCall","src":"10771:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10761:6:15"}]},{"nodeType":"YulVariableDeclaration","src":"10792:38:15","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10822:4:15"},{"kind":"number","nodeType":"YulLiteral","src":"10828:1:15","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10818:3:15"},"nodeType":"YulFunctionCall","src":"10818:12:15"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"10796:18:15","type":""}]},{"body":{"nodeType":"YulBlock","src":"10869:51:15","statements":[{"nodeType":"YulAssignment","src":"10883:27:15","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10897:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"10905:4:15","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10893:3:15"},"nodeType":"YulFunctionCall","src":"10893:17:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10883:6:15"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10849:18:15"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10842:6:15"},"nodeType":"YulFunctionCall","src":"10842:26:15"},"nodeType":"YulIf","src":"10839:81:15"},{"body":{"nodeType":"YulBlock","src":"10972:42:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"10986:16:15"},"nodeType":"YulFunctionCall","src":"10986:18:15"},"nodeType":"YulExpressionStatement","src":"10986:18:15"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10936:18:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10959:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"10967:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10956:2:15"},"nodeType":"YulFunctionCall","src":"10956:14:15"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10933:2:15"},"nodeType":"YulFunctionCall","src":"10933:38:15"},"nodeType":"YulIf","src":"10930:84:15"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"10735:4:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"10744:6:15","type":""}],"src":"10700:320:15"},{"body":{"nodeType":"YulBlock","src":"11132:114:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11154:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"11162:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11150:3:15"},"nodeType":"YulFunctionCall","src":"11150:14:15"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"11166:34:15","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11143:6:15"},"nodeType":"YulFunctionCall","src":"11143:58:15"},"nodeType":"YulExpressionStatement","src":"11143:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11222:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"11230:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11218:3:15"},"nodeType":"YulFunctionCall","src":"11218:15:15"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"11235:3:15","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11211:6:15"},"nodeType":"YulFunctionCall","src":"11211:28:15"},"nodeType":"YulExpressionStatement","src":"11211:28:15"}]},"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11124:6:15","type":""}],"src":"11026:220:15"},{"body":{"nodeType":"YulBlock","src":"11398:220:15","statements":[{"nodeType":"YulAssignment","src":"11408:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11474:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"11479:2:15","type":"","value":"33"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11415:58:15"},"nodeType":"YulFunctionCall","src":"11415:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11408:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11580:3:15"}],"functionName":{"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulIdentifier","src":"11491:88:15"},"nodeType":"YulFunctionCall","src":"11491:93:15"},"nodeType":"YulExpressionStatement","src":"11491:93:15"},{"nodeType":"YulAssignment","src":"11593:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11604:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"11609:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11600:3:15"},"nodeType":"YulFunctionCall","src":"11600:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11593:3:15"}]}]},"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11386:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11394:3:15","type":""}],"src":"11252:366:15"},{"body":{"nodeType":"YulBlock","src":"11795:248:15","statements":[{"nodeType":"YulAssignment","src":"11805:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11817:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11828:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11813:3:15"},"nodeType":"YulFunctionCall","src":"11813:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11805:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11852:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"11863:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11848:3:15"},"nodeType":"YulFunctionCall","src":"11848:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11871:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"11877:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11867:3:15"},"nodeType":"YulFunctionCall","src":"11867:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11841:6:15"},"nodeType":"YulFunctionCall","src":"11841:47:15"},"nodeType":"YulExpressionStatement","src":"11841:47:15"},{"nodeType":"YulAssignment","src":"11897:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12031:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11905:124:15"},"nodeType":"YulFunctionCall","src":"11905:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11897:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11775:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11790:4:15","type":""}],"src":"11624:419:15"},{"body":{"nodeType":"YulBlock","src":"12155:143:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12177:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12185:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12173:3:15"},"nodeType":"YulFunctionCall","src":"12173:14:15"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"12189:34:15","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12166:6:15"},"nodeType":"YulFunctionCall","src":"12166:58:15"},"nodeType":"YulExpressionStatement","src":"12166:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12245:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"12253:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12241:3:15"},"nodeType":"YulFunctionCall","src":"12241:15:15"},{"hexValue":"6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"12258:32:15","type":"","value":"ken owner nor approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12234:6:15"},"nodeType":"YulFunctionCall","src":"12234:57:15"},"nodeType":"YulExpressionStatement","src":"12234:57:15"}]},"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12147:6:15","type":""}],"src":"12049:249:15"},{"body":{"nodeType":"YulBlock","src":"12450:220:15","statements":[{"nodeType":"YulAssignment","src":"12460:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12526:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"12531:2:15","type":"","value":"62"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12467:58:15"},"nodeType":"YulFunctionCall","src":"12467:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12460:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12632:3:15"}],"functionName":{"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulIdentifier","src":"12543:88:15"},"nodeType":"YulFunctionCall","src":"12543:93:15"},"nodeType":"YulExpressionStatement","src":"12543:93:15"},{"nodeType":"YulAssignment","src":"12645:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12656:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"12661:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12652:3:15"},"nodeType":"YulFunctionCall","src":"12652:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12645:3:15"}]}]},"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12438:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12446:3:15","type":""}],"src":"12304:366:15"},{"body":{"nodeType":"YulBlock","src":"12847:248:15","statements":[{"nodeType":"YulAssignment","src":"12857:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12869:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"12880:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12865:3:15"},"nodeType":"YulFunctionCall","src":"12865:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12857:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12904:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"12915:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12900:3:15"},"nodeType":"YulFunctionCall","src":"12900:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12923:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"12929:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12919:3:15"},"nodeType":"YulFunctionCall","src":"12919:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12893:6:15"},"nodeType":"YulFunctionCall","src":"12893:47:15"},"nodeType":"YulExpressionStatement","src":"12893:47:15"},{"nodeType":"YulAssignment","src":"12949:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13083:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12957:124:15"},"nodeType":"YulFunctionCall","src":"12957:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12949:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12827:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12842:4:15","type":""}],"src":"12676:419:15"},{"body":{"nodeType":"YulBlock","src":"13207:127:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13229:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"13237:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13225:3:15"},"nodeType":"YulFunctionCall","src":"13225:14:15"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"13241:34:15","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13218:6:15"},"nodeType":"YulFunctionCall","src":"13218:58:15"},"nodeType":"YulExpressionStatement","src":"13218:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13297:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"13305:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13293:3:15"},"nodeType":"YulFunctionCall","src":"13293:15:15"},{"hexValue":"72206e6f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"13310:16:15","type":"","value":"r nor approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13286:6:15"},"nodeType":"YulFunctionCall","src":"13286:41:15"},"nodeType":"YulExpressionStatement","src":"13286:41:15"}]},"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"13199:6:15","type":""}],"src":"13101:233:15"},{"body":{"nodeType":"YulBlock","src":"13486:220:15","statements":[{"nodeType":"YulAssignment","src":"13496:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13562:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"13567:2:15","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13503:58:15"},"nodeType":"YulFunctionCall","src":"13503:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13496:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13668:3:15"}],"functionName":{"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulIdentifier","src":"13579:88:15"},"nodeType":"YulFunctionCall","src":"13579:93:15"},"nodeType":"YulExpressionStatement","src":"13579:93:15"},{"nodeType":"YulAssignment","src":"13681:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13692:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"13697:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13688:3:15"},"nodeType":"YulFunctionCall","src":"13688:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13681:3:15"}]}]},"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13474:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13482:3:15","type":""}],"src":"13340:366:15"},{"body":{"nodeType":"YulBlock","src":"13883:248:15","statements":[{"nodeType":"YulAssignment","src":"13893:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13905:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"13916:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13901:3:15"},"nodeType":"YulFunctionCall","src":"13901:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13893:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13940:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"13951:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13936:3:15"},"nodeType":"YulFunctionCall","src":"13936:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13959:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"13965:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13955:3:15"},"nodeType":"YulFunctionCall","src":"13955:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13929:6:15"},"nodeType":"YulFunctionCall","src":"13929:47:15"},"nodeType":"YulExpressionStatement","src":"13929:47:15"},{"nodeType":"YulAssignment","src":"13985:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14119:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13993:124:15"},"nodeType":"YulFunctionCall","src":"13993:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13985:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13863:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13878:4:15","type":""}],"src":"13712:419:15"},{"body":{"nodeType":"YulBlock","src":"14243:68:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14265:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"14273:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14261:3:15"},"nodeType":"YulFunctionCall","src":"14261:14:15"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"14277:26:15","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14254:6:15"},"nodeType":"YulFunctionCall","src":"14254:50:15"},"nodeType":"YulExpressionStatement","src":"14254:50:15"}]},"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14235:6:15","type":""}],"src":"14137:174:15"},{"body":{"nodeType":"YulBlock","src":"14463:220:15","statements":[{"nodeType":"YulAssignment","src":"14473:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14539:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14544:2:15","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14480:58:15"},"nodeType":"YulFunctionCall","src":"14480:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14473:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14645:3:15"}],"functionName":{"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulIdentifier","src":"14556:88:15"},"nodeType":"YulFunctionCall","src":"14556:93:15"},"nodeType":"YulExpressionStatement","src":"14556:93:15"},{"nodeType":"YulAssignment","src":"14658:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14669:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"14674:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14665:3:15"},"nodeType":"YulFunctionCall","src":"14665:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14658:3:15"}]}]},"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14451:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14459:3:15","type":""}],"src":"14317:366:15"},{"body":{"nodeType":"YulBlock","src":"14860:248:15","statements":[{"nodeType":"YulAssignment","src":"14870:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14882:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"14893:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14878:3:15"},"nodeType":"YulFunctionCall","src":"14878:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14870:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14917:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"14928:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14913:3:15"},"nodeType":"YulFunctionCall","src":"14913:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14936:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"14942:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14932:3:15"},"nodeType":"YulFunctionCall","src":"14932:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14906:6:15"},"nodeType":"YulFunctionCall","src":"14906:47:15"},"nodeType":"YulExpressionStatement","src":"14906:47:15"},{"nodeType":"YulAssignment","src":"14962:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15096:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14970:124:15"},"nodeType":"YulFunctionCall","src":"14970:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14962:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14840:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14855:4:15","type":""}],"src":"14689:419:15"},{"body":{"nodeType":"YulBlock","src":"15220:122:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15242:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15250:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15238:3:15"},"nodeType":"YulFunctionCall","src":"15238:14:15"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"15254:34:15","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15231:6:15"},"nodeType":"YulFunctionCall","src":"15231:58:15"},"nodeType":"YulExpressionStatement","src":"15231:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15310:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"15318:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15306:3:15"},"nodeType":"YulFunctionCall","src":"15306:15:15"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"15323:11:15","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15299:6:15"},"nodeType":"YulFunctionCall","src":"15299:36:15"},"nodeType":"YulExpressionStatement","src":"15299:36:15"}]},"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"15212:6:15","type":""}],"src":"15114:228:15"},{"body":{"nodeType":"YulBlock","src":"15494:220:15","statements":[{"nodeType":"YulAssignment","src":"15504:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15570:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"15575:2:15","type":"","value":"41"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15511:58:15"},"nodeType":"YulFunctionCall","src":"15511:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15504:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15676:3:15"}],"functionName":{"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulIdentifier","src":"15587:88:15"},"nodeType":"YulFunctionCall","src":"15587:93:15"},"nodeType":"YulExpressionStatement","src":"15587:93:15"},{"nodeType":"YulAssignment","src":"15689:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15700:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"15705:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15696:3:15"},"nodeType":"YulFunctionCall","src":"15696:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15689:3:15"}]}]},"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15482:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15490:3:15","type":""}],"src":"15348:366:15"},{"body":{"nodeType":"YulBlock","src":"15891:248:15","statements":[{"nodeType":"YulAssignment","src":"15901:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15913:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"15924:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15909:3:15"},"nodeType":"YulFunctionCall","src":"15909:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15901:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15948:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"15959:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15944:3:15"},"nodeType":"YulFunctionCall","src":"15944:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15967:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"15973:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15963:3:15"},"nodeType":"YulFunctionCall","src":"15963:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15937:6:15"},"nodeType":"YulFunctionCall","src":"15937:47:15"},"nodeType":"YulExpressionStatement","src":"15937:47:15"},{"nodeType":"YulAssignment","src":"15993:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16127:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16001:124:15"},"nodeType":"YulFunctionCall","src":"16001:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15993:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15871:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15886:4:15","type":""}],"src":"15720:419:15"},{"body":{"nodeType":"YulBlock","src":"16259:34:15","statements":[{"nodeType":"YulAssignment","src":"16269:18:15","value":{"name":"pos","nodeType":"YulIdentifier","src":"16284:3:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16269:11:15"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16231:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"16236:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16247:11:15","type":""}],"src":"16145:148:15"},{"body":{"nodeType":"YulBlock","src":"16409:267:15","statements":[{"nodeType":"YulVariableDeclaration","src":"16419:53:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16466:5:15"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"16433:32:15"},"nodeType":"YulFunctionCall","src":"16433:39:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16423:6:15","type":""}]},{"nodeType":"YulAssignment","src":"16481:96:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16565:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16570:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16488:76:15"},"nodeType":"YulFunctionCall","src":"16488:89:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16481:3:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16612:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"16619:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16608:3:15"},"nodeType":"YulFunctionCall","src":"16608:16:15"},{"name":"pos","nodeType":"YulIdentifier","src":"16626:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16631:6:15"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"16586:21:15"},"nodeType":"YulFunctionCall","src":"16586:52:15"},"nodeType":"YulExpressionStatement","src":"16586:52:15"},{"nodeType":"YulAssignment","src":"16647:23:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16658:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"16663:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16654:3:15"},"nodeType":"YulFunctionCall","src":"16654:16:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16647:3:15"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16390:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16397:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16405:3:15","type":""}],"src":"16299:377:15"},{"body":{"nodeType":"YulBlock","src":"16866:251:15","statements":[{"nodeType":"YulAssignment","src":"16877:102:15","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16966:6:15"},{"name":"pos","nodeType":"YulIdentifier","src":"16975:3:15"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16884:81:15"},"nodeType":"YulFunctionCall","src":"16884:95:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16877:3:15"}]},{"nodeType":"YulAssignment","src":"16989:102:15","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"17078:6:15"},{"name":"pos","nodeType":"YulIdentifier","src":"17087:3:15"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16996:81:15"},"nodeType":"YulFunctionCall","src":"16996:95:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16989:3:15"}]},{"nodeType":"YulAssignment","src":"17101:10:15","value":{"name":"pos","nodeType":"YulIdentifier","src":"17108:3:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17101:3:15"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16837:3:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16843:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16851:6:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16862:3:15","type":""}],"src":"16682:435:15"},{"body":{"nodeType":"YulBlock","src":"17229:118:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17251:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"17259:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17247:3:15"},"nodeType":"YulFunctionCall","src":"17247:14:15"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"17263:34:15","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17240:6:15"},"nodeType":"YulFunctionCall","src":"17240:58:15"},"nodeType":"YulExpressionStatement","src":"17240:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17319:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"17327:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17315:3:15"},"nodeType":"YulFunctionCall","src":"17315:15:15"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"17332:7:15","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17308:6:15"},"nodeType":"YulFunctionCall","src":"17308:32:15"},"nodeType":"YulExpressionStatement","src":"17308:32:15"}]},"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17221:6:15","type":""}],"src":"17123:224:15"},{"body":{"nodeType":"YulBlock","src":"17499:220:15","statements":[{"nodeType":"YulAssignment","src":"17509:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17575:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"17580:2:15","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17516:58:15"},"nodeType":"YulFunctionCall","src":"17516:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17509:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17681:3:15"}],"functionName":{"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulIdentifier","src":"17592:88:15"},"nodeType":"YulFunctionCall","src":"17592:93:15"},"nodeType":"YulExpressionStatement","src":"17592:93:15"},{"nodeType":"YulAssignment","src":"17694:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17705:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"17710:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17701:3:15"},"nodeType":"YulFunctionCall","src":"17701:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17694:3:15"}]}]},"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17487:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17495:3:15","type":""}],"src":"17353:366:15"},{"body":{"nodeType":"YulBlock","src":"17896:248:15","statements":[{"nodeType":"YulAssignment","src":"17906:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17918:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17929:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17914:3:15"},"nodeType":"YulFunctionCall","src":"17914:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17906:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17953:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"17964:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17949:3:15"},"nodeType":"YulFunctionCall","src":"17949:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17972:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"17978:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17968:3:15"},"nodeType":"YulFunctionCall","src":"17968:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17942:6:15"},"nodeType":"YulFunctionCall","src":"17942:47:15"},"nodeType":"YulExpressionStatement","src":"17942:47:15"},{"nodeType":"YulAssignment","src":"17998:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18132:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18006:124:15"},"nodeType":"YulFunctionCall","src":"18006:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17998:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17876:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17891:4:15","type":""}],"src":"17725:419:15"},{"body":{"nodeType":"YulBlock","src":"18256:117:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18278:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"18286:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18274:3:15"},"nodeType":"YulFunctionCall","src":"18274:14:15"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"18290:34:15","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18267:6:15"},"nodeType":"YulFunctionCall","src":"18267:58:15"},"nodeType":"YulExpressionStatement","src":"18267:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18346:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"18354:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18342:3:15"},"nodeType":"YulFunctionCall","src":"18342:15:15"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"18359:6:15","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18335:6:15"},"nodeType":"YulFunctionCall","src":"18335:31:15"},"nodeType":"YulExpressionStatement","src":"18335:31:15"}]},"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18248:6:15","type":""}],"src":"18150:223:15"},{"body":{"nodeType":"YulBlock","src":"18525:220:15","statements":[{"nodeType":"YulAssignment","src":"18535:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18601:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18606:2:15","type":"","value":"36"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18542:58:15"},"nodeType":"YulFunctionCall","src":"18542:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18535:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18707:3:15"}],"functionName":{"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulIdentifier","src":"18618:88:15"},"nodeType":"YulFunctionCall","src":"18618:93:15"},"nodeType":"YulExpressionStatement","src":"18618:93:15"},{"nodeType":"YulAssignment","src":"18720:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18731:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"18736:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18727:3:15"},"nodeType":"YulFunctionCall","src":"18727:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18720:3:15"}]}]},"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18513:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18521:3:15","type":""}],"src":"18379:366:15"},{"body":{"nodeType":"YulBlock","src":"18922:248:15","statements":[{"nodeType":"YulAssignment","src":"18932:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18944:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"18955:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18940:3:15"},"nodeType":"YulFunctionCall","src":"18940:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18932:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18979:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"18990:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18975:3:15"},"nodeType":"YulFunctionCall","src":"18975:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18998:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"19004:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18994:3:15"},"nodeType":"YulFunctionCall","src":"18994:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18968:6:15"},"nodeType":"YulFunctionCall","src":"18968:47:15"},"nodeType":"YulExpressionStatement","src":"18968:47:15"},{"nodeType":"YulAssignment","src":"19024:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19158:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19032:124:15"},"nodeType":"YulFunctionCall","src":"19032:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19024:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18902:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18917:4:15","type":""}],"src":"18751:419:15"},{"body":{"nodeType":"YulBlock","src":"19204:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19221:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19224:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19214:6:15"},"nodeType":"YulFunctionCall","src":"19214:88:15"},"nodeType":"YulExpressionStatement","src":"19214:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19318:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"19321:4:15","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19311:6:15"},"nodeType":"YulFunctionCall","src":"19311:15:15"},"nodeType":"YulExpressionStatement","src":"19311:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19342:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19345:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19335:6:15"},"nodeType":"YulFunctionCall","src":"19335:15:15"},"nodeType":"YulExpressionStatement","src":"19335:15:15"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"19176:180:15"},{"body":{"nodeType":"YulBlock","src":"19407:146:15","statements":[{"nodeType":"YulAssignment","src":"19417:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19440:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19422:17:15"},"nodeType":"YulFunctionCall","src":"19422:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19417:1:15"}]},{"nodeType":"YulAssignment","src":"19451:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19474:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19456:17:15"},"nodeType":"YulFunctionCall","src":"19456:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19451:1:15"}]},{"body":{"nodeType":"YulBlock","src":"19498:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19500:16:15"},"nodeType":"YulFunctionCall","src":"19500:18:15"},"nodeType":"YulExpressionStatement","src":"19500:18:15"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19492:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"19495:1:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"19489:2:15"},"nodeType":"YulFunctionCall","src":"19489:8:15"},"nodeType":"YulIf","src":"19486:34:15"},{"nodeType":"YulAssignment","src":"19530:17:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19542:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"19545:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19538:3:15"},"nodeType":"YulFunctionCall","src":"19538:9:15"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"19530:4:15"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19393:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"19396:1:15","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"19402:4:15","type":""}],"src":"19362:191:15"},{"body":{"nodeType":"YulBlock","src":"19603:261:15","statements":[{"nodeType":"YulAssignment","src":"19613:25:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19636:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19618:17:15"},"nodeType":"YulFunctionCall","src":"19618:20:15"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19613:1:15"}]},{"nodeType":"YulAssignment","src":"19647:25:15","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19670:1:15"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19652:17:15"},"nodeType":"YulFunctionCall","src":"19652:20:15"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19647:1:15"}]},{"body":{"nodeType":"YulBlock","src":"19810:22:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19812:16:15"},"nodeType":"YulFunctionCall","src":"19812:18:15"},"nodeType":"YulExpressionStatement","src":"19812:18:15"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19731:1:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19738:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"19806:1:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19734:3:15"},"nodeType":"YulFunctionCall","src":"19734:74:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"19728:2:15"},"nodeType":"YulFunctionCall","src":"19728:81:15"},"nodeType":"YulIf","src":"19725:107:15"},{"nodeType":"YulAssignment","src":"19842:16:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19853:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"19856:1:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19849:3:15"},"nodeType":"YulFunctionCall","src":"19849:9:15"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"19842:3:15"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19590:1:15","type":""},{"name":"y","nodeType":"YulTypedName","src":"19593:1:15","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"19599:3:15","type":""}],"src":"19559:305:15"},{"body":{"nodeType":"YulBlock","src":"19976:69:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19998:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"20006:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19994:3:15"},"nodeType":"YulFunctionCall","src":"19994:14:15"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"20010:27:15","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19987:6:15"},"nodeType":"YulFunctionCall","src":"19987:51:15"},"nodeType":"YulExpressionStatement","src":"19987:51:15"}]},"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19968:6:15","type":""}],"src":"19870:175:15"},{"body":{"nodeType":"YulBlock","src":"20197:220:15","statements":[{"nodeType":"YulAssignment","src":"20207:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20273:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"20278:2:15","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20214:58:15"},"nodeType":"YulFunctionCall","src":"20214:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"20207:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20379:3:15"}],"functionName":{"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulIdentifier","src":"20290:88:15"},"nodeType":"YulFunctionCall","src":"20290:93:15"},"nodeType":"YulExpressionStatement","src":"20290:93:15"},{"nodeType":"YulAssignment","src":"20392:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20403:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"20408:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20399:3:15"},"nodeType":"YulFunctionCall","src":"20399:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"20392:3:15"}]}]},"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"20185:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"20193:3:15","type":""}],"src":"20051:366:15"},{"body":{"nodeType":"YulBlock","src":"20594:248:15","statements":[{"nodeType":"YulAssignment","src":"20604:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20616:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20627:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20612:3:15"},"nodeType":"YulFunctionCall","src":"20612:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20604:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20651:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"20662:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20647:3:15"},"nodeType":"YulFunctionCall","src":"20647:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20670:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"20676:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20666:3:15"},"nodeType":"YulFunctionCall","src":"20666:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20640:6:15"},"nodeType":"YulFunctionCall","src":"20640:47:15"},"nodeType":"YulExpressionStatement","src":"20640:47:15"},{"nodeType":"YulAssignment","src":"20696:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20830:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20704:124:15"},"nodeType":"YulFunctionCall","src":"20704:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20696:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20574:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20589:4:15","type":""}],"src":"20423:419:15"},{"body":{"nodeType":"YulBlock","src":"20954:131:15","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20976:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"20984:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20972:3:15"},"nodeType":"YulFunctionCall","src":"20972:14:15"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"20988:34:15","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20965:6:15"},"nodeType":"YulFunctionCall","src":"20965:58:15"},"nodeType":"YulExpressionStatement","src":"20965:58:15"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21044:6:15"},{"kind":"number","nodeType":"YulLiteral","src":"21052:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21040:3:15"},"nodeType":"YulFunctionCall","src":"21040:15:15"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"21057:20:15","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21033:6:15"},"nodeType":"YulFunctionCall","src":"21033:45:15"},"nodeType":"YulExpressionStatement","src":"21033:45:15"}]},"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"20946:6:15","type":""}],"src":"20848:237:15"},{"body":{"nodeType":"YulBlock","src":"21237:220:15","statements":[{"nodeType":"YulAssignment","src":"21247:74:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21313:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21318:2:15","type":"","value":"50"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21254:58:15"},"nodeType":"YulFunctionCall","src":"21254:67:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"21247:3:15"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21419:3:15"}],"functionName":{"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulIdentifier","src":"21330:88:15"},"nodeType":"YulFunctionCall","src":"21330:93:15"},"nodeType":"YulExpressionStatement","src":"21330:93:15"},{"nodeType":"YulAssignment","src":"21432:19:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21443:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"21448:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21439:3:15"},"nodeType":"YulFunctionCall","src":"21439:12:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21432:3:15"}]}]},"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21225:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21233:3:15","type":""}],"src":"21091:366:15"},{"body":{"nodeType":"YulBlock","src":"21634:248:15","statements":[{"nodeType":"YulAssignment","src":"21644:26:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21656:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21667:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21652:3:15"},"nodeType":"YulFunctionCall","src":"21652:18:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21644:4:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21691:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"21702:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21687:3:15"},"nodeType":"YulFunctionCall","src":"21687:17:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21710:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"21716:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21706:3:15"},"nodeType":"YulFunctionCall","src":"21706:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21680:6:15"},"nodeType":"YulFunctionCall","src":"21680:47:15"},"nodeType":"YulExpressionStatement","src":"21680:47:15"},{"nodeType":"YulAssignment","src":"21736:139:15","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21870:4:15"}],"functionName":{"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21744:124:15"},"nodeType":"YulFunctionCall","src":"21744:131:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21736:4:15"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21614:9:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21629:4:15","type":""}],"src":"21463:419:15"},{"body":{"nodeType":"YulBlock","src":"21916:152:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21933:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"21936:77:15","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21926:6:15"},"nodeType":"YulFunctionCall","src":"21926:88:15"},"nodeType":"YulExpressionStatement","src":"21926:88:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22030:1:15","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"22033:4:15","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22023:6:15"},"nodeType":"YulFunctionCall","src":"22023:15:15"},"nodeType":"YulExpressionStatement","src":"22023:15:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22054:1:15","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22057:4:15","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"22047:6:15"},"nodeType":"YulFunctionCall","src":"22047:15:15"},"nodeType":"YulExpressionStatement","src":"22047:15:15"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"21888:180:15"},{"body":{"nodeType":"YulBlock","src":"22132:40:15","statements":[{"nodeType":"YulAssignment","src":"22143:22:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22159:5:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22153:5:15"},"nodeType":"YulFunctionCall","src":"22153:12:15"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"22143:6:15"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22115:5:15","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"22125:6:15","type":""}],"src":"22074:98:15"},{"body":{"nodeType":"YulBlock","src":"22273:73:15","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22290:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"22295:6:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22283:6:15"},"nodeType":"YulFunctionCall","src":"22283:19:15"},"nodeType":"YulExpressionStatement","src":"22283:19:15"},{"nodeType":"YulAssignment","src":"22311:29:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22330:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"22335:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22326:3:15"},"nodeType":"YulFunctionCall","src":"22326:14:15"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"22311:11:15"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"22245:3:15","type":""},{"name":"length","nodeType":"YulTypedName","src":"22250:6:15","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"22261:11:15","type":""}],"src":"22178:168:15"},{"body":{"nodeType":"YulBlock","src":"22442:270:15","statements":[{"nodeType":"YulVariableDeclaration","src":"22452:52:15","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22498:5:15"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"22466:31:15"},"nodeType":"YulFunctionCall","src":"22466:38:15"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"22456:6:15","type":""}]},{"nodeType":"YulAssignment","src":"22513:77:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22578:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"22583:6:15"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22520:57:15"},"nodeType":"YulFunctionCall","src":"22520:70:15"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"22513:3:15"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22625:5:15"},{"kind":"number","nodeType":"YulLiteral","src":"22632:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22621:3:15"},"nodeType":"YulFunctionCall","src":"22621:16:15"},{"name":"pos","nodeType":"YulIdentifier","src":"22639:3:15"},{"name":"length","nodeType":"YulIdentifier","src":"22644:6:15"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"22599:21:15"},"nodeType":"YulFunctionCall","src":"22599:52:15"},"nodeType":"YulExpressionStatement","src":"22599:52:15"},{"nodeType":"YulAssignment","src":"22660:46:15","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22671:3:15"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"22698:6:15"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"22676:21:15"},"nodeType":"YulFunctionCall","src":"22676:29:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22667:3:15"},"nodeType":"YulFunctionCall","src":"22667:39:15"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"22660:3:15"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22423:5:15","type":""},{"name":"pos","nodeType":"YulTypedName","src":"22430:3:15","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"22438:3:15","type":""}],"src":"22352:360:15"},{"body":{"nodeType":"YulBlock","src":"22918:440:15","statements":[{"nodeType":"YulAssignment","src":"22928:27:15","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22940:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"22951:3:15","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22936:3:15"},"nodeType":"YulFunctionCall","src":"22936:19:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22928:4:15"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"23009:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23022:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23033:1:15","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23018:3:15"},"nodeType":"YulFunctionCall","src":"23018:17:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22965:43:15"},"nodeType":"YulFunctionCall","src":"22965:71:15"},"nodeType":"YulExpressionStatement","src":"22965:71:15"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"23090:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23103:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23114:2:15","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23099:3:15"},"nodeType":"YulFunctionCall","src":"23099:18:15"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"23046:43:15"},"nodeType":"YulFunctionCall","src":"23046:72:15"},"nodeType":"YulExpressionStatement","src":"23046:72:15"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"23172:6:15"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23185:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23196:2:15","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23181:3:15"},"nodeType":"YulFunctionCall","src":"23181:18:15"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"23128:43:15"},"nodeType":"YulFunctionCall","src":"23128:72:15"},"nodeType":"YulExpressionStatement","src":"23128:72:15"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23221:9:15"},{"kind":"number","nodeType":"YulLiteral","src":"23232:2:15","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23217:3:15"},"nodeType":"YulFunctionCall","src":"23217:18:15"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23241:4:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"23247:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23237:3:15"},"nodeType":"YulFunctionCall","src":"23237:20:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23210:6:15"},"nodeType":"YulFunctionCall","src":"23210:48:15"},"nodeType":"YulExpressionStatement","src":"23210:48:15"},{"nodeType":"YulAssignment","src":"23267:84:15","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"23337:6:15"},{"name":"tail","nodeType":"YulIdentifier","src":"23346:4:15"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23275:61:15"},"nodeType":"YulFunctionCall","src":"23275:76:15"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23267:4:15"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22866:9:15","type":""},{"name":"value3","nodeType":"YulTypedName","src":"22878:6:15","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22886:6:15","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22894:6:15","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22902:6:15","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22913:4:15","type":""}],"src":"22718:640:15"},{"body":{"nodeType":"YulBlock","src":"23426:79:15","statements":[{"nodeType":"YulAssignment","src":"23436:22:15","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23451:6:15"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"23445:5:15"},"nodeType":"YulFunctionCall","src":"23445:13:15"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"23436:5:15"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23493:5:15"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"23467:25:15"},"nodeType":"YulFunctionCall","src":"23467:32:15"},"nodeType":"YulExpressionStatement","src":"23467:32:15"}]},"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"23404:6:15","type":""},{"name":"end","nodeType":"YulTypedName","src":"23412:3:15","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"23420:5:15","type":""}],"src":"23364:141:15"},{"body":{"nodeType":"YulBlock","src":"23587:273:15","statements":[{"body":{"nodeType":"YulBlock","src":"23633:83:15","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"23635:77:15"},"nodeType":"YulFunctionCall","src":"23635:79:15"},"nodeType":"YulExpressionStatement","src":"23635:79:15"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"23608:7:15"},{"name":"headStart","nodeType":"YulIdentifier","src":"23617:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23604:3:15"},"nodeType":"YulFunctionCall","src":"23604:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"23629:2:15","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"23600:3:15"},"nodeType":"YulFunctionCall","src":"23600:32:15"},"nodeType":"YulIf","src":"23597:119:15"},{"nodeType":"YulBlock","src":"23726:127:15","statements":[{"nodeType":"YulVariableDeclaration","src":"23741:15:15","value":{"kind":"number","nodeType":"YulLiteral","src":"23755:1:15","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"23745:6:15","type":""}]},{"nodeType":"YulAssignment","src":"23770:73:15","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23815:9:15"},{"name":"offset","nodeType":"YulIdentifier","src":"23826:6:15"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23811:3:15"},"nodeType":"YulFunctionCall","src":"23811:22:15"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"23835:7:15"}],"functionName":{"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulIdentifier","src":"23780:30:15"},"nodeType":"YulFunctionCall","src":"23780:63:15"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"23770:6:15"}]}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23557:9:15","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"23568:7:15","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"23580:6:15","type":""}],"src":"23511:349:15"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approval to current owne\")\n\n mstore(add(memPtr, 32), \"r\")\n\n }\n\n function abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve caller is not to\")\n\n mstore(add(memPtr, 32), \"ken owner nor approved for all\")\n\n }\n\n function abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 62)\n store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: caller is not token owne\")\n\n mstore(add(memPtr, 32), \"r nor approved\")\n\n }\n\n function abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: invalid token ID\")\n\n }\n\n function abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: address zero is not a va\")\n\n mstore(add(memPtr, 32), \"lid owner\")\n\n }\n\n function abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer from incorrect \")\n\n mstore(add(memPtr, 32), \"owner\")\n\n }\n\n function abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve to caller\")\n\n }\n\n function abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to non ERC721Re\")\n\n mstore(add(memPtr, 32), \"ceiver implementer\")\n\n }\n\n function abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 50)\n store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_decode_t_bytes4_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":15,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e99190611450565b6102bc565b6040516100fb9190611498565b60405180910390f35b61010c61039e565b604051610119919061154c565b60405180910390f35b61013c600480360381019061013791906115a4565b610430565b6040516101499190611612565b60405180910390f35b61016c60048036038101906101679190611659565b610476565b005b61018860048036038101906101839190611699565b61058d565b005b6101a4600480360381019061019f9190611699565b6105ed565b005b6101c060048036038101906101bb91906115a4565b61060d565b6040516101cd9190611612565b60405180910390f35b6101f060048036038101906101eb91906116ec565b6106be565b6040516101fd9190611728565b60405180910390f35b61020e610775565b60405161021b919061154c565b60405180910390f35b61023e6004803603810190610239919061176f565b610807565b005b61025a600480360381019061025591906118e4565b61081d565b005b610276600480360381019061027191906115a4565b61087f565b604051610283919061154c565b60405180910390f35b6102a660048036038101906102a19190611967565b6108e7565b6040516102b39190611498565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061039757506103968261097b565b5b9050919050565b6060600080546103ad906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d9906119d6565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b826109e5565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104818261060d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e890611a79565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610510610a30565b73ffffffffffffffffffffffffffffffffffffffff16148061053f575061053e81610539610a30565b6108e7565b5b61057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057590611b0b565b60405180910390fd5b6105888383610a38565b505050565b61059e610598610a30565b82610af1565b6105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d490611b9d565b60405180910390fd5b6105e8838383610b86565b505050565b6106088383836040518060200160405280600081525061081d565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90611c09565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590611c9b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610784906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546107b0906119d6565b80156107fd5780601f106107d2576101008083540402835291602001916107fd565b820191906000526020600020905b8154815290600101906020018083116107e057829003601f168201915b5050505050905090565b610819610812610a30565b8383610dec565b5050565b61082e610828610a30565b83610af1565b61086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086490611b9d565b60405180910390fd5b61087984848484610f58565b50505050565b606061088a826109e5565b6000610894610fb4565b905060008151116108b457604051806020016040528060008152506108df565b806108be84610fcb565b6040516020016108cf929190611cf7565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6109ee81611099565b610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490611c09565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610aab8361060d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610afd8361060d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b3f5750610b3e81856108e7565b5b80610b7d57508373ffffffffffffffffffffffffffffffffffffffff16610b6584610430565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ba68261060d565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390611d8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290611e1f565b60405180910390fd5b610c76838383611105565b610c81600082610a38565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cd19190611e6e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d289190611ea2565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610de783838361110a565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190611f44565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f4b9190611498565b60405180910390a3505050565b610f63848484610b86565b610f6f8484848461110f565b610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590611fd6565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060006001610fda84611291565b01905060008167ffffffffffffffff811115610ff957610ff86117b9565b5b6040519080825280601f01601f19166020018201604052801561102b5781602001600182028036833780820191505090505b509050600082602001820190505b60011561108e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161108257611081611ff6565b5b04945060008503611039575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115611284578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611154610a30565b8786866040518563ffffffff1660e01b8152600401611176949392919061207a565b6020604051808303816000875af19250505080156111b257506040513d601f19601f820116820180604052508101906111af91906120db565b60015b611234573d80600081146111e2576040519150601f19603f3d011682016040523d82523d6000602084013e6111e7565b606091505b50600081510361122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390611fd6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611289565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106112ef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816112e5576112e4611ff6565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061132c576d04ee2d6d415b85acef8100000000838161132257611321611ff6565b5b0492506020810190505b662386f26fc10000831061135b57662386f26fc10000838161135157611350611ff6565b5b0492506010810190505b6305f5e1008310611384576305f5e100838161137a57611379611ff6565b5b0492506008810190505b61271083106113a957612710838161139f5761139e611ff6565b5b0492506004810190505b606483106113cc57606483816113c2576113c1611ff6565b5b0492506002810190505b600a83106113db576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61142d816113f8565b811461143857600080fd5b50565b60008135905061144a81611424565b92915050565b600060208284031215611466576114656113ee565b5b60006114748482850161143b565b91505092915050565b60008115159050919050565b6114928161147d565b82525050565b60006020820190506114ad6000830184611489565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114ed5780820151818401526020810190506114d2565b838111156114fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061151e826114b3565b61152881856114be565b93506115388185602086016114cf565b61154181611502565b840191505092915050565b600060208201905081810360008301526115668184611513565b905092915050565b6000819050919050565b6115818161156e565b811461158c57600080fd5b50565b60008135905061159e81611578565b92915050565b6000602082840312156115ba576115b96113ee565b5b60006115c88482850161158f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115fc826115d1565b9050919050565b61160c816115f1565b82525050565b60006020820190506116276000830184611603565b92915050565b611636816115f1565b811461164157600080fd5b50565b6000813590506116538161162d565b92915050565b600080604083850312156116705761166f6113ee565b5b600061167e85828601611644565b925050602061168f8582860161158f565b9150509250929050565b6000806000606084860312156116b2576116b16113ee565b5b60006116c086828701611644565b93505060206116d186828701611644565b92505060406116e28682870161158f565b9150509250925092565b600060208284031215611702576117016113ee565b5b600061171084828501611644565b91505092915050565b6117228161156e565b82525050565b600060208201905061173d6000830184611719565b92915050565b61174c8161147d565b811461175757600080fd5b50565b60008135905061176981611743565b92915050565b60008060408385031215611786576117856113ee565b5b600061179485828601611644565b92505060206117a58582860161175a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6117f182611502565b810181811067ffffffffffffffff821117156118105761180f6117b9565b5b80604052505050565b60006118236113e4565b905061182f82826117e8565b919050565b600067ffffffffffffffff82111561184f5761184e6117b9565b5b61185882611502565b9050602081019050919050565b82818337600083830152505050565b600061188761188284611834565b611819565b9050828152602081018484840111156118a3576118a26117b4565b5b6118ae848285611865565b509392505050565b600082601f8301126118cb576118ca6117af565b5b81356118db848260208601611874565b91505092915050565b600080600080608085870312156118fe576118fd6113ee565b5b600061190c87828801611644565b945050602061191d87828801611644565b935050604061192e8782880161158f565b925050606085013567ffffffffffffffff81111561194f5761194e6113f3565b5b61195b878288016118b6565b91505092959194509250565b6000806040838503121561197e5761197d6113ee565b5b600061198c85828601611644565b925050602061199d85828601611644565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ee57607f821691505b602082108103611a0157611a006119a7565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a636021836114be565b9150611a6e82611a07565b604082019050919050565b60006020820190508181036000830152611a9281611a56565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000611af5603e836114be565b9150611b0082611a99565b604082019050919050565b60006020820190508181036000830152611b2481611ae8565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000611b87602e836114be565b9150611b9282611b2b565b604082019050919050565b60006020820190508181036000830152611bb681611b7a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000611bf36018836114be565b9150611bfe82611bbd565b602082019050919050565b60006020820190508181036000830152611c2281611be6565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000611c856029836114be565b9150611c9082611c29565b604082019050919050565b60006020820190508181036000830152611cb481611c78565b9050919050565b600081905092915050565b6000611cd1826114b3565b611cdb8185611cbb565b9350611ceb8185602086016114cf565b80840191505092915050565b6000611d038285611cc6565b9150611d0f8284611cc6565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000611d776025836114be565b9150611d8282611d1b565b604082019050919050565b60006020820190508181036000830152611da681611d6a565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e096024836114be565b9150611e1482611dad565b604082019050919050565b60006020820190508181036000830152611e3881611dfc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e798261156e565b9150611e848361156e565b925082821015611e9757611e96611e3f565b5b828203905092915050565b6000611ead8261156e565b9150611eb88361156e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611eed57611eec611e3f565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000611f2e6019836114be565b9150611f3982611ef8565b602082019050919050565b60006020820190508181036000830152611f5d81611f21565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000611fc06032836114be565b9150611fcb82611f64565b604082019050919050565b60006020820190508181036000830152611fef81611fb3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061204c82612025565b6120568185612030565b93506120668185602086016114cf565b61206f81611502565b840191505092915050565b600060808201905061208f6000830187611603565b61209c6020830186611603565b6120a96040830185611719565b81810360608301526120bb8184612041565b905095945050505050565b6000815190506120d581611424565b92915050565b6000602082840312156120f1576120f06113ee565b5b60006120ff848285016120c6565b9150509291505056fea26469706673582212201befbb93823bb4d4f3dd3dd02315ac03aab291ca85b918aca37bea81708f233e64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x28C JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x206 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x1450 JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x1659 JUMP JUMPDEST PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x188 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x183 SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x5ED JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BB SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CD SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FD SWAP2 SWAP1 PUSH2 0x1728 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x775 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21B SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x239 SWAP2 SWAP1 PUSH2 0x176F JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x255 SWAP2 SWAP1 PUSH2 0x18E4 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x276 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x271 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x1967 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x387 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x397 JUMPI POP PUSH2 0x396 DUP3 PUSH2 0x97B JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x3AD SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3D9 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x426 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3FB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x426 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x409 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43B DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x481 DUP3 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E8 SWAP1 PUSH2 0x1A79 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 PUSH2 0xA30 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x53F JUMPI POP PUSH2 0x53E DUP2 PUSH2 0x539 PUSH2 0xA30 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST PUSH2 0x57E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x575 SWAP1 PUSH2 0x1B0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x588 DUP4 DUP4 PUSH2 0xA38 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x59E PUSH2 0x598 PUSH2 0xA30 JUMP JUMPDEST DUP3 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x5DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D4 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E8 DUP4 DUP4 DUP4 PUSH2 0xB86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x608 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x81D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6AC SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x72E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x725 SWAP1 PUSH2 0x1C9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x784 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7B0 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7FD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x819 PUSH2 0x812 PUSH2 0xA30 JUMP JUMPDEST DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x82E PUSH2 0x828 PUSH2 0xA30 JUMP JUMPDEST DUP4 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x86D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x864 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x879 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF58 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x88A DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x894 PUSH2 0xFB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x8B4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x8DF JUMP JUMPDEST DUP1 PUSH2 0x8BE DUP5 PUSH2 0xFCB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8CF SWAP3 SWAP2 SWAP1 PUSH2 0x1CF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9EE DUP2 PUSH2 0x1099 JUMP JUMPDEST PUSH2 0xA2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA24 SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAAB DUP4 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAFD DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xB3F JUMPI POP PUSH2 0xB3E DUP2 DUP6 PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xB7D JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB65 DUP5 PUSH2 0x430 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBA6 DUP3 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBFC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF3 SWAP1 PUSH2 0x1D8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xC6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC62 SWAP1 PUSH2 0x1E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC76 DUP4 DUP4 DUP4 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0xC81 PUSH1 0x0 DUP3 PUSH2 0xA38 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xCD1 SWAP2 SWAP1 PUSH2 0x1E6E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD28 SWAP2 SWAP1 PUSH2 0x1EA2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xDE7 DUP4 DUP4 DUP4 PUSH2 0x110A JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE51 SWAP1 PUSH2 0x1F44 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0xF4B SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xF63 DUP5 DUP5 DUP5 PUSH2 0xB86 JUMP JUMPDEST PUSH2 0xF6F DUP5 DUP5 DUP5 DUP5 PUSH2 0x110F JUMP JUMPDEST PUSH2 0xFAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFA5 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0xFDA DUP5 PUSH2 0x1291 JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFF9 JUMPI PUSH2 0xFF8 PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x102B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x108E JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x1082 JUMPI PUSH2 0x1081 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x1039 JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x1284 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x1154 PUSH2 0xA30 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1176 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x207A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x11B2 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11AF SWAP2 SWAP1 PUSH2 0x20DB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1234 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11E2 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 0x11E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x122C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1223 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x1289 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x12EF JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x12E5 JUMPI PUSH2 0x12E4 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x132C JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1322 JUMPI PUSH2 0x1321 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x135B JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1351 JUMPI PUSH2 0x1350 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1384 JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x137A JUMPI PUSH2 0x1379 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x13A9 JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x139F JUMPI PUSH2 0x139E PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x13CC JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x13C2 JUMPI PUSH2 0x13C1 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x13DB JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x142D DUP2 PUSH2 0x13F8 JUMP JUMPDEST DUP2 EQ PUSH2 0x1438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x144A DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1466 JUMPI PUSH2 0x1465 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1474 DUP5 DUP3 DUP6 ADD PUSH2 0x143B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1492 DUP2 PUSH2 0x147D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x14AD PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1489 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14ED JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x14D2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14FC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x151E DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1528 DUP2 DUP6 PUSH2 0x14BE JUMP JUMPDEST SWAP4 POP PUSH2 0x1538 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x1541 DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1566 DUP2 DUP5 PUSH2 0x1513 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1581 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP2 EQ PUSH2 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x159E DUP2 PUSH2 0x1578 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15BA JUMPI PUSH2 0x15B9 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x15C8 DUP5 DUP3 DUP6 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FC DUP3 PUSH2 0x15D1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x160C DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1627 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1603 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1636 DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x1641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1653 DUP2 PUSH2 0x162D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1670 JUMPI PUSH2 0x166F PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x167E DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x168F DUP6 DUP3 DUP7 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x16B2 JUMPI PUSH2 0x16B1 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x16C0 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x16D1 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x16E2 DUP7 DUP3 DUP8 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1702 JUMPI PUSH2 0x1701 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1710 DUP5 DUP3 DUP6 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1722 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x173D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1719 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x174C DUP2 PUSH2 0x147D JUMP JUMPDEST DUP2 EQ PUSH2 0x1757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1769 DUP2 PUSH2 0x1743 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1786 JUMPI PUSH2 0x1785 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1794 DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x17A5 DUP6 DUP3 DUP7 ADD PUSH2 0x175A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x17F1 DUP3 PUSH2 0x1502 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1810 JUMPI PUSH2 0x180F PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1823 PUSH2 0x13E4 JUMP JUMPDEST SWAP1 POP PUSH2 0x182F DUP3 DUP3 PUSH2 0x17E8 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x184F JUMPI PUSH2 0x184E PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH2 0x1858 DUP3 PUSH2 0x1502 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1887 PUSH2 0x1882 DUP5 PUSH2 0x1834 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x18A3 JUMPI PUSH2 0x18A2 PUSH2 0x17B4 JUMP JUMPDEST JUMPDEST PUSH2 0x18AE DUP5 DUP3 DUP6 PUSH2 0x1865 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x18CB JUMPI PUSH2 0x18CA PUSH2 0x17AF JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x18DB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1874 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x18FE JUMPI PUSH2 0x18FD PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x190C DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x191D DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x192E DUP8 DUP3 DUP9 ADD PUSH2 0x158F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x194F JUMPI PUSH2 0x194E PUSH2 0x13F3 JUMP JUMPDEST JUMPDEST PUSH2 0x195B DUP8 DUP3 DUP9 ADD PUSH2 0x18B6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x197E JUMPI PUSH2 0x197D PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x198C DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x199D DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x19EE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1A01 JUMPI PUSH2 0x1A00 PUSH2 0x19A7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A63 PUSH1 0x21 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1A6E DUP3 PUSH2 0x1A07 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A92 DUP2 PUSH2 0x1A56 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AF5 PUSH1 0x3E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B00 DUP3 PUSH2 0x1A99 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B24 DUP2 PUSH2 0x1AE8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B87 PUSH1 0x2E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B92 DUP3 PUSH2 0x1B2B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BB6 DUP2 PUSH2 0x1B7A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF3 PUSH1 0x18 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1BFE DUP3 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C22 DUP2 PUSH2 0x1BE6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C85 PUSH1 0x29 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1C90 DUP3 PUSH2 0x1C29 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1CB4 DUP2 PUSH2 0x1C78 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CD1 DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1CDB DUP2 DUP6 PUSH2 0x1CBB JUMP JUMPDEST SWAP4 POP PUSH2 0x1CEB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D03 DUP3 DUP6 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D0F DUP3 DUP5 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D77 PUSH1 0x25 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1D82 DUP3 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1DA6 DUP2 PUSH2 0x1D6A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E09 PUSH1 0x24 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1E14 DUP3 PUSH2 0x1DAD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E38 DUP2 PUSH2 0x1DFC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E79 DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1E84 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x1E97 JUMPI PUSH2 0x1E96 PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EAD DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1EB8 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x1EED JUMPI PUSH2 0x1EEC PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F2E PUSH1 0x19 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1F39 DUP3 PUSH2 0x1EF8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F5D DUP2 PUSH2 0x1F21 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FC0 PUSH1 0x32 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1FCB DUP3 PUSH2 0x1F64 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FEF DUP2 PUSH2 0x1FB3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204C DUP3 PUSH2 0x2025 JUMP JUMPDEST PUSH2 0x2056 DUP2 DUP6 PUSH2 0x2030 JUMP JUMPDEST SWAP4 POP PUSH2 0x2066 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x206F DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x208F PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x20A9 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1719 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x20BB DUP2 DUP5 PUSH2 0x2041 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x20D5 DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20F1 JUMPI PUSH2 0x20F0 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20FF DUP5 DUP3 DUP6 ADD PUSH2 0x20C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xEF 0xBB SWAP4 DUP3 EXTCODESIZE 0xB4 0xD4 RETURN 0xDD RETURNDATASIZE 0xD0 0x23 ISZERO 0xAC SUB 0xAA 0xB2 SWAP2 0xCA DUP6 0xB9 XOR 0xAC LOG3 PUSH28 0xEA81708F233E64736F6C634300080D00330000000000000000000000 ","sourceMap":"1382:13860:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:300;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3317:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4775:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4314:400;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5452:327;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5845:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3037:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3479:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5009:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6090:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3647:276;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2417:300;2519:4;2569:25;2554:40;;;:11;:40;;;;:104;;;;2625:33;2610:48;;;:11;:48;;;;2554:104;:156;;;;2674:36;2698:11;2674:23;:36::i;:::-;2554:156;2535:175;;2417:300;;;:::o;3317:98::-;3371:13;3403:5;3396:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3317:98;:::o;4775:167::-;4851:7;4870:23;4885:7;4870:14;:23::i;:::-;4911:15;:24;4927:7;4911:24;;;;;;;;;;;;;;;;;;;;;4904:31;;4775:167;;;:::o;4314:400::-;4394:13;4410:16;4418:7;4410;:16::i;:::-;4394:32;;4450:5;4444:11;;:2;:11;;;4436:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4541:5;4525:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;4550:37;4567:5;4574:12;:10;:12::i;:::-;4550:16;:37::i;:::-;4525:62;4504:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;4686:21;4695:2;4699:7;4686:8;:21::i;:::-;4384:330;4314:400;;:::o;5452:327::-;5641:41;5660:12;:10;:12::i;:::-;5674:7;5641:18;:41::i;:::-;5633:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;5744:28;5754:4;5760:2;5764:7;5744:9;:28::i;:::-;5452:327;;;:::o;5845:179::-;5978:39;5995:4;6001:2;6005:7;5978:39;;;;;;;;;;;;:16;:39::i;:::-;5845:179;;;:::o;3037:218::-;3109:7;3128:13;3144:7;:16;3152:7;3144:16;;;;;;;;;;;;;;;;;;;;;3128:32;;3195:1;3178:19;;:5;:19;;;3170:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3243:5;3236:12;;;3037:218;;;:::o;2776:204::-;2848:7;2892:1;2875:19;;:5;:19;;;2867:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2957:9;:16;2967:5;2957:16;;;;;;;;;;;;;;;;2950:23;;2776:204;;;:::o;3479:102::-;3535:13;3567:7;3560:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3479:102;:::o;5009:153::-;5103:52;5122:12;:10;:12::i;:::-;5136:8;5146;5103:18;:52::i;:::-;5009:153;;:::o;6090:315::-;6258:41;6277:12;:10;:12::i;:::-;6291:7;6258:18;:41::i;:::-;6250:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;6360:38;6374:4;6380:2;6384:7;6393:4;6360:13;:38::i;:::-;6090:315;;;;:::o;3647:276::-;3720:13;3745:23;3760:7;3745:14;:23::i;:::-;3779:21;3803:10;:8;:10::i;:::-;3779:34;;3854:1;3836:7;3830:21;:25;:86;;;;;;;;;;;;;;;;;3882:7;3891:18;:7;:16;:18::i;:::-;3865:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3830:86;3823:93;;;3647:276;;;:::o;5228:162::-;5325:4;5348:18;:25;5367:5;5348:25;;;;;;;;;;;;;;;:35;5374:8;5348:35;;;;;;;;;;;;;;;;;;;;;;;;;5341:42;;5228:162;;;;:::o;829:155:8:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;12550:133:13:-;12631:16;12639:7;12631;:16::i;:::-;12623:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12550:133;:::o;640:96:6:-;693:7;719:10;712:17;;640:96;:::o;11859:164:13:-;11960:2;11933:15;:24;11949:7;11933:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12008:7;12004:2;11977:39;;11986:16;11994:7;11986;:16::i;:::-;11977:39;;;;;;;;;;;;11859:164;;:::o;8157:254::-;8250:4;8266:13;8282:16;8290:7;8282;:16::i;:::-;8266:32;;8327:5;8316:16;;:7;:16;;;:52;;;;8336:32;8353:5;8360:7;8336:16;:32::i;:::-;8316:52;:87;;;;8396:7;8372:31;;:20;8384:7;8372:11;:20::i;:::-;:31;;;8316:87;8308:96;;;8157:254;;;;:::o;11149:598::-;11296:4;11276:24;;:16;11284:7;11276;:16::i;:::-;:24;;;11268:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11374:1;11360:16;;:2;:16;;;11352:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11428:39;11449:4;11455:2;11459:7;11428:20;:39::i;:::-;11529:29;11546:1;11550:7;11529:8;:29::i;:::-;11588:1;11569:9;:15;11579:4;11569:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;11616:1;11599:9;:13;11609:2;11599:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;11646:2;11627:7;:16;11635:7;11627:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11683:7;11679:2;11664:27;;11673:4;11664:27;;;;;;;;;;;;11702:38;11722:4;11728:2;11732:7;11702:19;:38::i;:::-;11149:598;;;:::o;12159:307::-;12309:8;12300:17;;:5;:17;;;12292:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12395:8;12357:18;:25;12376:5;12357:25;;;;;;;;;;;;;;;:35;12383:8;12357:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12440:8;12418:41;;12433:5;12418:41;;;12450:8;12418:41;;;;;;:::i;:::-;;;;;;;;12159:307;;;:::o;7266:305::-;7416:28;7426:4;7432:2;7436:7;7416:9;:28::i;:::-;7462:47;7485:4;7491:2;7495:7;7504:4;7462:22;:47::i;:::-;7454:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7266:305;;;;:::o;4165:92::-;4216:13;4241:9;;;;;;;;;;;;;;4165:92;:::o;447:696:7:-;503:13;552:14;589:1;569:17;580:5;569:10;:17::i;:::-;:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;604:41;;659:11;785:6;781:2;777:15;769:6;765:28;758:35;;820:280;827:4;820:280;;;851:5;;;;;;;;990:8;985:2;978:5;974:14;969:30;964:3;956:44;1044:2;1035:11;;;;;;:::i;:::-;;;;;1077:1;1068:5;:10;820:280;1064:21;820:280;1120:6;1113:13;;;;;447:696;;;:::o;7874:125:13:-;7939:4;7990:1;7962:30;;:7;:16;7970:7;7962:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7955:37;;7874:125;;;:::o;14625:122::-;;;;:::o;15119:121::-;;;;:::o;13235:834::-;13384:4;13421:1;13404:2;:14;;;:18;13400:663;;;13458:2;13442:36;;;13479:12;:10;:12::i;:::-;13493:4;13499:7;13508:4;13442:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13438:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13697:1;13680:6;:13;:18;13676:321;;13722:60;;;;;;;;;;:::i;:::-;;;;;;;;13676:321;13949:6;13943:13;13934:6;13930:2;13926:15;13919:38;13438:573;13573:41;;;13563:51;;;:6;:51;;;;13556:58;;;;;13400:663;14048:4;14041:11;;13235:834;;;;;;;:::o;10139:916:10:-;10192:7;10211:14;10228:1;10211:18;;10276:8;10267:5;:17;10263:103;;10313:8;10304:17;;;;;;:::i;:::-;;;;;10349:2;10339:12;;;;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;;;;:::i;:::-;;;;;10465:2;10455:12;;;;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;;;;:::i;:::-;;;;;10581:2;10571:12;;;;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;;;;:::i;:::-;;;;;10695:1;10685:11;;;;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;;;;:::i;:::-;;;;;10808:1;10798:11;;;;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;;;;:::i;:::-;;;;;10921:1;10911:11;;;;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;;;;10950:66;11042:6;11035:13;;;10139:916;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:619::-;5015:6;5023;5031;5080:2;5068:9;5059:7;5055:23;5051:32;5048:119;;;5086:79;;:::i;:::-;5048:119;5206:1;5231:53;5276:7;5267:6;5256:9;5252:22;5231:53;:::i;:::-;5221:63;;5177:117;5333:2;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5304:118;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;4938:619;;;;;:::o;5563:329::-;5622:6;5671:2;5659:9;5650:7;5646:23;5642:32;5639:119;;;5677:79;;:::i;:::-;5639:119;5797:1;5822:53;5867:7;5858:6;5847:9;5843:22;5822:53;:::i;:::-;5812:63;;5768:117;5563:329;;;;:::o;5898:118::-;5985:24;6003:5;5985:24;:::i;:::-;5980:3;5973:37;5898:118;;:::o;6022:222::-;6115:4;6153:2;6142:9;6138:18;6130:26;;6166:71;6234:1;6223:9;6219:17;6210:6;6166:71;:::i;:::-;6022:222;;;;:::o;6250:116::-;6320:21;6335:5;6320:21;:::i;:::-;6313:5;6310:32;6300:60;;6356:1;6353;6346:12;6300:60;6250:116;:::o;6372:133::-;6415:5;6453:6;6440:20;6431:29;;6469:30;6493:5;6469:30;:::i;:::-;6372:133;;;;:::o;6511:468::-;6576:6;6584;6633:2;6621:9;6612:7;6608:23;6604:32;6601:119;;;6639:79;;:::i;:::-;6601:119;6759:1;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6730:117;6886:2;6912:50;6954:7;6945:6;6934:9;6930:22;6912:50;:::i;:::-;6902:60;;6857:115;6511:468;;;;;:::o;6985:117::-;7094:1;7091;7084:12;7108:117;7217:1;7214;7207:12;7231:180;7279:77;7276:1;7269:88;7376:4;7373:1;7366:15;7400:4;7397:1;7390:15;7417:281;7500:27;7522:4;7500:27;:::i;:::-;7492:6;7488:40;7630:6;7618:10;7615:22;7594:18;7582:10;7579:34;7576:62;7573:88;;;7641:18;;:::i;:::-;7573:88;7681:10;7677:2;7670:22;7460:238;7417:281;;:::o;7704:129::-;7738:6;7765:20;;:::i;:::-;7755:30;;7794:33;7822:4;7814:6;7794:33;:::i;:::-;7704:129;;;:::o;7839:307::-;7900:4;7990:18;7982:6;7979:30;7976:56;;;8012:18;;:::i;:::-;7976:56;8050:29;8072:6;8050:29;:::i;:::-;8042:37;;8134:4;8128;8124:15;8116:23;;7839:307;;;:::o;8152:154::-;8236:6;8231:3;8226;8213:30;8298:1;8289:6;8284:3;8280:16;8273:27;8152:154;;;:::o;8312:410::-;8389:5;8414:65;8430:48;8471:6;8430:48;:::i;:::-;8414:65;:::i;:::-;8405:74;;8502:6;8495:5;8488:21;8540:4;8533:5;8529:16;8578:3;8569:6;8564:3;8560:16;8557:25;8554:112;;;8585:79;;:::i;:::-;8554:112;8675:41;8709:6;8704:3;8699;8675:41;:::i;:::-;8395:327;8312:410;;;;;:::o;8741:338::-;8796:5;8845:3;8838:4;8830:6;8826:17;8822:27;8812:122;;8853:79;;:::i;:::-;8812:122;8970:6;8957:20;8995:78;9069:3;9061:6;9054:4;9046:6;9042:17;8995:78;:::i;:::-;8986:87;;8802:277;8741:338;;;;:::o;9085:943::-;9180:6;9188;9196;9204;9253:3;9241:9;9232:7;9228:23;9224:33;9221:120;;;9260:79;;:::i;:::-;9221:120;9380:1;9405:53;9450:7;9441:6;9430:9;9426:22;9405:53;:::i;:::-;9395:63;;9351:117;9507:2;9533:53;9578:7;9569:6;9558:9;9554:22;9533:53;:::i;:::-;9523:63;;9478:118;9635:2;9661:53;9706:7;9697:6;9686:9;9682:22;9661:53;:::i;:::-;9651:63;;9606:118;9791:2;9780:9;9776:18;9763:32;9822:18;9814:6;9811:30;9808:117;;;9844:79;;:::i;:::-;9808:117;9949:62;10003:7;9994:6;9983:9;9979:22;9949:62;:::i;:::-;9939:72;;9734:287;9085:943;;;;;;;:::o;10034:474::-;10102:6;10110;10159:2;10147:9;10138:7;10134:23;10130:32;10127:119;;;10165:79;;:::i;:::-;10127:119;10285:1;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;:::i;:::-;10300:63;;10256:117;10412:2;10438:53;10483:7;10474:6;10463:9;10459:22;10438:53;:::i;:::-;10428:63;;10383:118;10034:474;;;;;:::o;10514:180::-;10562:77;10559:1;10552:88;10659:4;10656:1;10649:15;10683:4;10680:1;10673:15;10700:320;10744:6;10781:1;10775:4;10771:12;10761:22;;10828:1;10822:4;10818:12;10849:18;10839:81;;10905:4;10897:6;10893:17;10883:27;;10839:81;10967:2;10959:6;10956:14;10936:18;10933:38;10930:84;;10986:18;;:::i;:::-;10930:84;10751:269;10700:320;;;:::o;11026:220::-;11166:34;11162:1;11154:6;11150:14;11143:58;11235:3;11230:2;11222:6;11218:15;11211:28;11026:220;:::o;11252:366::-;11394:3;11415:67;11479:2;11474:3;11415:67;:::i;:::-;11408:74;;11491:93;11580:3;11491:93;:::i;:::-;11609:2;11604:3;11600:12;11593:19;;11252:366;;;:::o;11624:419::-;11790:4;11828:2;11817:9;11813:18;11805:26;;11877:9;11871:4;11867:20;11863:1;11852:9;11848:17;11841:47;11905:131;12031:4;11905:131;:::i;:::-;11897:139;;11624:419;;;:::o;12049:249::-;12189:34;12185:1;12177:6;12173:14;12166:58;12258:32;12253:2;12245:6;12241:15;12234:57;12049:249;:::o;12304:366::-;12446:3;12467:67;12531:2;12526:3;12467:67;:::i;:::-;12460:74;;12543:93;12632:3;12543:93;:::i;:::-;12661:2;12656:3;12652:12;12645:19;;12304:366;;;:::o;12676:419::-;12842:4;12880:2;12869:9;12865:18;12857:26;;12929:9;12923:4;12919:20;12915:1;12904:9;12900:17;12893:47;12957:131;13083:4;12957:131;:::i;:::-;12949:139;;12676:419;;;:::o;13101:233::-;13241:34;13237:1;13229:6;13225:14;13218:58;13310:16;13305:2;13297:6;13293:15;13286:41;13101:233;:::o;13340:366::-;13482:3;13503:67;13567:2;13562:3;13503:67;:::i;:::-;13496:74;;13579:93;13668:3;13579:93;:::i;:::-;13697:2;13692:3;13688:12;13681:19;;13340:366;;;:::o;13712:419::-;13878:4;13916:2;13905:9;13901:18;13893:26;;13965:9;13959:4;13955:20;13951:1;13940:9;13936:17;13929:47;13993:131;14119:4;13993:131;:::i;:::-;13985:139;;13712:419;;;:::o;14137:174::-;14277:26;14273:1;14265:6;14261:14;14254:50;14137:174;:::o;14317:366::-;14459:3;14480:67;14544:2;14539:3;14480:67;:::i;:::-;14473:74;;14556:93;14645:3;14556:93;:::i;:::-;14674:2;14669:3;14665:12;14658:19;;14317:366;;;:::o;14689:419::-;14855:4;14893:2;14882:9;14878:18;14870:26;;14942:9;14936:4;14932:20;14928:1;14917:9;14913:17;14906:47;14970:131;15096:4;14970:131;:::i;:::-;14962:139;;14689:419;;;:::o;15114:228::-;15254:34;15250:1;15242:6;15238:14;15231:58;15323:11;15318:2;15310:6;15306:15;15299:36;15114:228;:::o;15348:366::-;15490:3;15511:67;15575:2;15570:3;15511:67;:::i;:::-;15504:74;;15587:93;15676:3;15587:93;:::i;:::-;15705:2;15700:3;15696:12;15689:19;;15348:366;;;:::o;15720:419::-;15886:4;15924:2;15913:9;15909:18;15901:26;;15973:9;15967:4;15963:20;15959:1;15948:9;15944:17;15937:47;16001:131;16127:4;16001:131;:::i;:::-;15993:139;;15720:419;;;:::o;16145:148::-;16247:11;16284:3;16269:18;;16145:148;;;;:::o;16299:377::-;16405:3;16433:39;16466:5;16433:39;:::i;:::-;16488:89;16570:6;16565:3;16488:89;:::i;:::-;16481:96;;16586:52;16631:6;16626:3;16619:4;16612:5;16608:16;16586:52;:::i;:::-;16663:6;16658:3;16654:16;16647:23;;16409:267;16299:377;;;;:::o;16682:435::-;16862:3;16884:95;16975:3;16966:6;16884:95;:::i;:::-;16877:102;;16996:95;17087:3;17078:6;16996:95;:::i;:::-;16989:102;;17108:3;17101:10;;16682:435;;;;;:::o;17123:224::-;17263:34;17259:1;17251:6;17247:14;17240:58;17332:7;17327:2;17319:6;17315:15;17308:32;17123:224;:::o;17353:366::-;17495:3;17516:67;17580:2;17575:3;17516:67;:::i;:::-;17509:74;;17592:93;17681:3;17592:93;:::i;:::-;17710:2;17705:3;17701:12;17694:19;;17353:366;;;:::o;17725:419::-;17891:4;17929:2;17918:9;17914:18;17906:26;;17978:9;17972:4;17968:20;17964:1;17953:9;17949:17;17942:47;18006:131;18132:4;18006:131;:::i;:::-;17998:139;;17725:419;;;:::o;18150:223::-;18290:34;18286:1;18278:6;18274:14;18267:58;18359:6;18354:2;18346:6;18342:15;18335:31;18150:223;:::o;18379:366::-;18521:3;18542:67;18606:2;18601:3;18542:67;:::i;:::-;18535:74;;18618:93;18707:3;18618:93;:::i;:::-;18736:2;18731:3;18727:12;18720:19;;18379:366;;;:::o;18751:419::-;18917:4;18955:2;18944:9;18940:18;18932:26;;19004:9;18998:4;18994:20;18990:1;18979:9;18975:17;18968:47;19032:131;19158:4;19032:131;:::i;:::-;19024:139;;18751:419;;;:::o;19176:180::-;19224:77;19221:1;19214:88;19321:4;19318:1;19311:15;19345:4;19342:1;19335:15;19362:191;19402:4;19422:20;19440:1;19422:20;:::i;:::-;19417:25;;19456:20;19474:1;19456:20;:::i;:::-;19451:25;;19495:1;19492;19489:8;19486:34;;;19500:18;;:::i;:::-;19486:34;19545:1;19542;19538:9;19530:17;;19362:191;;;;:::o;19559:305::-;19599:3;19618:20;19636:1;19618:20;:::i;:::-;19613:25;;19652:20;19670:1;19652:20;:::i;:::-;19647:25;;19806:1;19738:66;19734:74;19731:1;19728:81;19725:107;;;19812:18;;:::i;:::-;19725:107;19856:1;19853;19849:9;19842:16;;19559:305;;;;:::o;19870:175::-;20010:27;20006:1;19998:6;19994:14;19987:51;19870:175;:::o;20051:366::-;20193:3;20214:67;20278:2;20273:3;20214:67;:::i;:::-;20207:74;;20290:93;20379:3;20290:93;:::i;:::-;20408:2;20403:3;20399:12;20392:19;;20051:366;;;:::o;20423:419::-;20589:4;20627:2;20616:9;20612:18;20604:26;;20676:9;20670:4;20666:20;20662:1;20651:9;20647:17;20640:47;20704:131;20830:4;20704:131;:::i;:::-;20696:139;;20423:419;;;:::o;20848:237::-;20988:34;20984:1;20976:6;20972:14;20965:58;21057:20;21052:2;21044:6;21040:15;21033:45;20848:237;:::o;21091:366::-;21233:3;21254:67;21318:2;21313:3;21254:67;:::i;:::-;21247:74;;21330:93;21419:3;21330:93;:::i;:::-;21448:2;21443:3;21439:12;21432:19;;21091:366;;;:::o;21463:419::-;21629:4;21667:2;21656:9;21652:18;21644:26;;21716:9;21710:4;21706:20;21702:1;21691:9;21687:17;21680:47;21744:131;21870:4;21744:131;:::i;:::-;21736:139;;21463:419;;;:::o;21888:180::-;21936:77;21933:1;21926:88;22033:4;22030:1;22023:15;22057:4;22054:1;22047:15;22074:98;22125:6;22159:5;22153:12;22143:22;;22074:98;;;:::o;22178:168::-;22261:11;22295:6;22290:3;22283:19;22335:4;22330:3;22326:14;22311:29;;22178:168;;;;:::o;22352:360::-;22438:3;22466:38;22498:5;22466:38;:::i;:::-;22520:70;22583:6;22578:3;22520:70;:::i;:::-;22513:77;;22599:52;22644:6;22639:3;22632:4;22625:5;22621:16;22599:52;:::i;:::-;22676:29;22698:6;22676:29;:::i;:::-;22671:3;22667:39;22660:46;;22442:270;22352:360;;;;:::o;22718:640::-;22913:4;22951:3;22940:9;22936:19;22928:27;;22965:71;23033:1;23022:9;23018:17;23009:6;22965:71;:::i;:::-;23046:72;23114:2;23103:9;23099:18;23090:6;23046:72;:::i;:::-;23128;23196:2;23185:9;23181:18;23172:6;23128:72;:::i;:::-;23247:9;23241:4;23237:20;23232:2;23221:9;23217:18;23210:48;23275:76;23346:4;23337:6;23275:76;:::i;:::-;23267:84;;22718:640;;;;;;;:::o;23364:141::-;23420:5;23451:6;23445:13;23436:22;;23467:32;23493:5;23467:32;:::i;:::-;23364:141;;;;:::o;23511:349::-;23580:6;23629:2;23617:9;23608:7;23604:23;23600:32;23597:119;;;23635:79;;:::i;:::-;23597:119;23755:1;23780:63;23835:7;23826:6;23815:9;23811:22;23780:63;:::i;:::-;23770:73;;23726:127;23511:349;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"1702000","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2921","getApproved(uint256)":"5234","isApprovedForAll(address,address)":"infinite","name()":"infinite","ownerOf(uint256)":"2979","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"infinite","supportsInterface(bytes4)":"774","symbol()":"infinite","tokenURI(uint256)":"3424","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,uint256)":"15","_approve(address,uint256)":"infinite","_baseURI()":"infinite","_beforeTokenTransfer(address,address,uint256)":"15","_burn(uint256)":"infinite","_checkOnERC721Received(address,address,uint256,bytes memory)":"infinite","_exists(uint256)":"2269","_isApprovedOrOwner(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_requireMinted(uint256)":"infinite","_safeMint(address,uint256)":"infinite","_safeMint(address,uint256,bytes memory)":"infinite","_safeTransfer(address,address,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}. NOTE: The only changes made here are: - change scope of \\\"_owners\\\" from private to internal - change scope of \\\"_balances\\\" from private to internal - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\" - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/lib/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n *\\n * NOTE:\\n * The only changes made here are:\\n * - change scope of \\\"_owners\\\" from private to internal\\n * - change scope of \\\"_balances\\\" from private to internal\\n * - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\"\\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) internal _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) internal _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _owners[tokenId];\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _owners[tokenId] != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId);\\n\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n // Clear approvals\\n _approve(address(0), tokenId);\\n\\n _balances[owner] -= 1;\\n // Prevent re-assigning the token back to the Pre-Mint Receiver\\n _owners[tokenId] = _NULL_ADDRESS;\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.code.length > 0) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n * transferred to `to`.\\n * - When `from` is zero, `tokenId` will be minted for `to`.\\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x726960336df673d5fd509dde21ba3bed24645291d201f74762b945fe4d5aa016\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2017,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":2019,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":2023,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":2027,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":2031,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":2037,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ERC721iEnumerable.sol":{"ERC721iEnumerable":{"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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"This implements an optional extension of {ERC721} defined in the EIP that adds enumerability of all the token ids in the contract as well as all token ids owned by each account.This implementation also includes support for pre-minting a max-supply of tokens up-front. Note on pre-mint: Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs. For this reason, the \"allTokens\" state vars are unneccesary and have been removed. Also defines 2 light-weight state vars: \"_preMintReceiver\" & \"_maxSupply\" Overrides \"ownerOf\" & \"_exists\"","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"Override the ERC721 \"ownerOf\" function to account for the Pre-Mint Receiver."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}. Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable"},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenByIndex(uint256)":{"details":"See {IERC721Enumerable-tokenByIndex}."},"tokenOfOwnerByIndex(address,uint256)":{"details":"See {IERC721Enumerable-tokenOfOwnerByIndex}. note: Fix contributed by surfer77"},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"totalSupply()":{"details":"See {IERC721Enumerable-totalSupply}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"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","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"This implements an optional extension of {ERC721} defined in the EIP that adds enumerability of all the token ids in the contract as well as all token ids owned by each account.This implementation also includes support for pre-minting a max-supply of tokens up-front. Note on pre-mint: Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs. For this reason, the \\\"allTokens\\\" state vars are unneccesary and have been removed. Also defines 2 light-weight state vars: \\\"_preMintReceiver\\\" & \\\"_maxSupply\\\" Overrides \\\"ownerOf\\\" & \\\"_exists\\\"\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"Override the ERC721 \\\"ownerOf\\\" function to account for the Pre-Mint Receiver.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}. note: Fix contributed by surfer77\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ERC721iEnumerable.sol\":\"ERC721iEnumerable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Enumerable is IERC721 {\\n /**\\n * @dev Returns the total amount of tokens stored by the contract.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\\n * Use along with {totalSupply} to enumerate all tokens.\\n */\\n function tokenByIndex(uint256 index) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/lib/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n *\\n * NOTE:\\n * The only changes made here are:\\n * - change scope of \\\"_owners\\\" from private to internal\\n * - change scope of \\\"_balances\\\" from private to internal\\n * - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\"\\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) internal _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) internal _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _owners[tokenId];\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _owners[tokenId] != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId);\\n\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n // Clear approvals\\n _approve(address(0), tokenId);\\n\\n _balances[owner] -= 1;\\n // Prevent re-assigning the token back to the Pre-Mint Receiver\\n _owners[tokenId] = _NULL_ADDRESS;\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.code.length > 0) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n * transferred to `to`.\\n * - When `from` is zero, `tokenId` will be minted for `to`.\\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x726960336df673d5fd509dde21ba3bed24645291d201f74762b945fe4d5aa016\",\"license\":\"MIT\"},\"contracts/lib/ERC721iEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modified from: OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\\\";\\n\\n/**\\n * @dev This implements an optional extension of {ERC721} defined in the EIP that adds\\n * enumerability of all the token ids in the contract as well as all token ids owned by each\\n * account.\\n *\\n * @dev This implementation also includes support for pre-minting a max-supply of tokens up-front.\\n *\\n * Note on pre-mint:\\n * Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs.\\n * For this reason, the \\\"allTokens\\\" state vars are unneccesary and have been removed.\\n * Also defines 2 light-weight state vars: \\\"_preMintReceiver\\\" & \\\"_maxSupply\\\"\\n * Overrides \\\"ownerOf\\\" & \\\"_exists\\\"\\n */\\nabstract contract ERC721iEnumerable is ERC721, IERC721Enumerable {\\n // Mapping from owner to list of owned token IDs\\n mapping(address => mapping(uint256 => uint256)) private _ownedTokens;\\n\\n // Mapping from token ID to index of the owner tokens list\\n mapping(uint256 => uint256) private _ownedTokensIndex;\\n\\n // Tracking for the Pre-Mint Receiver\\n address internal _preMintReceiver;\\n\\n // Max-Supply for Pre-Mint\\n uint256 internal _maxSupply;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n *\\n * Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\\n * note: Fix contributed by surfer77\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\\n require(index < ERC721.balanceOf(owner), \\\"ERC721Enumerable: owner index out of bounds\\\");\\n if (owner == address(_preMintReceiver)) {\\n uint256 supply = totalSupply();\\n uint256 matched = 0;\\n for (uint256 i = 1; i < supply; i++) {\\n if (ownerOf(i) == address(_preMintReceiver)) {\\n matched += 1;\\n if (matched - 1 == index) {\\n return i;\\n }\\n }\\n }\\n }\\n return _ownedTokens[owner][index];\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n // The Total Supply is simply the Max Supply\\n return _maxSupply;\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-tokenByIndex}.\\n */\\n function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\\n require(index < _maxSupply, \\\"ERC721Enumerable: global index out of bounds\\\");\\n // Array index is 0-based, whereas Token ID is 1-based (sequential).\\n return index + 1;\\n }\\n\\n /**\\n * @dev Override the ERC721 \\\"ownerOf\\\" function to account for the Pre-Mint Receiver.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override(IERC721, ERC721) returns (address) {\\n // Anything beyond the Pre-Minted supply will use the standard \\\"ownerOf\\\"\\n if (tokenId > _maxSupply) {\\n return super.ownerOf(tokenId);\\n }\\n\\n // Since we have Pre-Minted the Max-Supply to the \\\"Pre-Mint Receiver\\\" account, we know:\\n // - if the \\\"_owners\\\" mapping has not been assigned, then the owner is the Pre-Mint Receiver.\\n // - after the NFT is transferred, the \\\"_owners\\\" mapping will be updated with the new owner.\\n address owner_ = _owners[tokenId];\\n if (owner_ == address(0)) {\\n owner_ = _preMintReceiver;\\n }\\n return owner_;\\n }\\n\\n /**\\n * @dev Override the ERC721 \\\"_exists\\\" function to account for the Pre-Minted Max-Supply.\\n */\\n function _exists(uint256 tokenId) internal view virtual override(ERC721) returns (bool) {\\n // Anything beyond the Pre-Minted supply will use the standard \\\"_exists\\\"\\n if (tokenId > _maxSupply) {\\n return super._exists(tokenId);\\n }\\n\\n // We know the Max-Supply has been Pre-Minted with Sequential Token IDs\\n return (tokenId > 0 && tokenId <= _maxSupply);\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_beforeTokenTransfer}.\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual override {\\n super._beforeTokenTransfer(from, to, tokenId);\\n\\n if (from != to) {\\n _removeTokenFromOwnerEnumeration(from, tokenId);\\n _addTokenToOwnerEnumeration(to, tokenId);\\n }\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_addTokenToOwnerEnumeration}.\\n */\\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\\n uint256 length = ERC721.balanceOf(to);\\n _ownedTokens[to][length] = tokenId;\\n _ownedTokensIndex[tokenId] = length;\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_removeTokenFromOwnerEnumeration}.\\n */\\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\\n // then delete the last slot (swap and pop).\\n\\n uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;\\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\\n\\n // When the token to delete is the last token, the swap operation is unnecessary\\n if (tokenIndex != lastTokenIndex) {\\n uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\\n\\n _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\\n }\\n\\n // This also deletes the contents at the last position of the array\\n delete _ownedTokensIndex[tokenId];\\n delete _ownedTokens[from][lastTokenIndex];\\n }\\n}\\n\",\"keccak256\":\"0x99b0f077ef320163c0100348d120946ea6fefa3d3f0148a8880e01d4a1924752\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2017,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":2019,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":2023,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":2027,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":2031,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":2037,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":2871,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_ownedTokens","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_uint256,t_uint256))"},{"astId":2875,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_ownedTokensIndex","offset":0,"slot":"7","type":"t_mapping(t_uint256,t_uint256)"},{"astId":2877,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_preMintReceiver","offset":0,"slot":"8","type":"t_address"},{"astId":2879,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_maxSupply","offset":0,"slot":"9","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_mapping(t_uint256,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => uint256))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}}}}} \ No newline at end of file diff --git a/build/contracts/build-info/7c858448bff731211c6ab6035fe17c34.json b/build/contracts/build-info/7c858448bff731211c6ab6035fe17c34.json new file mode 100644 index 0000000..df89fa9 --- /dev/null +++ b/build/contracts/build-info/7c858448bff731211c6ab6035fe17c34.json @@ -0,0 +1 @@ +{"id":"7c858448bff731211c6ab6035fe17c34","_format":"hh-sol-build-info-1","solcVersion":"0.8.13","solcLongVersion":"0.8.13+commit.abaa5c0e","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n /**\n * @dev Returns the total amount of tokens stored by the contract.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n /**\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n * Use along with {totalSupply} to enumerate all tokens.\n */\n function tokenByIndex(uint256 index) external view returns (uint256);\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\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 caller.\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 v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 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 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/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\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[EIP 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"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\nimport \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"contracts/ERC721All.sol":{"content":"// SPDX-License-Identifier: MIT\n// Written by: Rob Secord (https://twitter.com/robsecord)\n// Co-founder @ Charged Particles - Visit: https://charged.fi\n// Co-founder @ Taggr - Visit: https://taggr.io\n\npragma solidity 0.8.13;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"./lib/ERC721.sol\";\n\n/**\n * @dev todo...\n */\ncontract ERC721All is Ownable, ERC721 {\n mapping(uint256 => bool) internal _activeTokens;\n\n constructor(string memory name, string memory symbol) ERC721(name, symbol) Ownable() {}\n\n /**\n * @dev Overrides {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n if (_balances[owner] == 0 && _hasOwnToken(owner)) {\n return 1;\n }\n return _balances[owner];\n }\n\n /**\n * @dev Overrides {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view override returns (address) {\n require(_isTokenActive(tokenId), \"ERC721: invalid token ID\");\n\n // If token has been transfered then _owners will be populated,\n // otherwise the token ID represents the initial owner\n address owner = _owners[tokenId];\n if (owner == address(0)) {\n owner = address(uint160(tokenId));\n }\n return owner;\n }\n\n function mint() public {\n _mint(_msgSender());\n }\n\n function _mint(address receiver) internal {\n // Token ID == Minter Address\n uint256 tokenId = uint256(uint160(receiver));\n\n require(receiver != address(0), \"ERC721: mint to the zero address\");\n require(!_isTokenActive(tokenId), \"ERC721: token already minted\");\n\n // Mark Token as Active\n _activeTokens[tokenId] = true;\n\n // Fire Transfer Event\n emit Transfer(address(0), receiver, tokenId);\n }\n\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal override {\n require(ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n // Only if token has previously been transfered after mint\n if (_owners[tokenId] != address(0)) {\n _balances[from] -= 1;\n }\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId);\n }\n\n function _hasOwnToken(address owner) internal view returns (bool) {\n uint256 ownerTokenId = uint256(uint160(owner));\n address currentOwner = _owners[ownerTokenId];\n return (_isTokenActive(ownerTokenId) && (currentOwner == owner || currentOwner == address(0)));\n }\n\n function _isTokenActive(uint256 tokenId) internal view returns (bool) {\n // Check if Token is Active and Not Burned\n return (_activeTokens[tokenId] && _owners[tokenId] != _NULL_ADDRESS);\n }\n}\n"},"contracts/ERC721i.sol":{"content":"// SPDX-License-Identifier: MIT\n// Written by: Rob Secord (https://twitter.com/robsecord)\n// Co-founder @ Charged Particles - Visit: https://charged.fi\n// Co-founder @ Taggr - Visit: https://taggr.io\n\npragma solidity 0.8.13;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"./lib/ERC721iEnumerable.sol\";\n\n/**\n * @dev This implements a Pre-Mint version of {ERC721} that adds the ability to Pre-Mint\n * all the token ids in the contract as assign an initial owner for each token id.\n *\n * On-chain state for Pre-Mint does not need to be initially stored if Max-Supply is known.\n * Minting is a simple matter of assigning a balance to the pre-mint receiver,\n * and modifying the \"read\" methods to account for the pre-mint receiver as owner.\n * We use the Consecutive Transfer Method as defined in EIP-2309 to signal inital ownership.\n * Almost everything else remains standard.\n * We also default to the contract \"owner\" as the pre-mint receiver, but this can be changed.\n */\ncontract ERC721i is\n Ownable,\n ERC721iEnumerable\n{\n /// @dev EIP-2309: https://eips.ethereum.org/EIPS/eip-2309\n event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed fromAddress, address indexed toAddress);\n\n /// @dev ERC721 Base Token URI\n string internal _baseTokenURI;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection,\n * as well as a `minter` and a `maxSupply` for pre-minting the collection.\n */\n constructor(\n string memory name,\n string memory symbol,\n string memory baseUri,\n address minter,\n uint256 maxSupply\n )\n ERC721(name, symbol)\n Ownable()\n {\n _baseTokenURI = baseUri;\n // Set vars defined in ERC721iEnumerable.sol\n _maxSupply = maxSupply;\n _preMintReceiver = minter;\n }\n\n /**\n * @dev Pre-mint the max-supply of token IDs to the minter account.\n * Token IDs are in base-1 sequential order.\n */\n function _preMint() internal {\n // Update balance for initial owner, defined in ERC721.sol\n _balances[_preMintReceiver] = _maxSupply;\n\n // Emit the Consecutive Transfer Event\n emit ConsecutiveTransfer(1, _maxSupply, address(0), _preMintReceiver);\n }\n\n function preMint() external onlyOwner {\n _preMint();\n }\n\n function _baseURI() internal view virtual override returns (string memory) {\n return _baseTokenURI;\n }\n}\n"},"contracts/lib/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\n// Modified by: Rob Secord (https://twitter.com/robsecord)\n// Co-founder @ Charged Particles - Visit: https://charged.fi\n// Co-founder @ Taggr - Visit: https://taggr.io\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n *\n * NOTE:\n * The only changes made here are:\n * - change scope of \"_owners\" from private to internal\n * - change scope of \"_balances\" from private to internal\n * - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\"\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) internal _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) internal _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _owners[tokenId];\n require(owner != address(0), \"ERC721: invalid token ID\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not token owner nor approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n _requireMinted(tokenId);\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n _safeTransfer(from, to, tokenId, data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _owners[tokenId] != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n address owner = ownerOf(tokenId);\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId);\n\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n\n _afterTokenTransfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId);\n\n // Clear approvals\n _approve(address(0), tokenId);\n\n _balances[owner] -= 1;\n // Prevent re-assigning the token back to the Pre-Mint Receiver\n _owners[tokenId] = _NULL_ADDRESS;\n\n emit Transfer(owner, address(0), tokenId);\n\n _afterTokenTransfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {\n require(ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n _balances[from] -= 1;\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(\n address owner,\n address operator,\n bool approved\n ) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` has not been minted yet.\n */\n function _requireMinted(uint256 tokenId) internal view virtual {\n require(_exists(tokenId), \"ERC721: invalid token ID\");\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) private returns (bool) {\n if (to.code.length > 0) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n}\n"},"contracts/lib/ERC721iEnumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// Modified from: OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)\n// Modified by: Rob Secord (https://twitter.com/robsecord)\n// Co-founder @ Charged Particles - Visit: https://charged.fi\n// Co-founder @ Taggr - Visit: https://taggr.io\n\npragma solidity ^0.8.0;\n\nimport \"./ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\";\n\n/**\n * @dev This implements an optional extension of {ERC721} defined in the EIP that adds\n * enumerability of all the token ids in the contract as well as all token ids owned by each\n * account.\n *\n * @dev This implementation also includes support for pre-minting a max-supply of tokens up-front.\n *\n * Note on pre-mint:\n * Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs.\n * For this reason, the \"allTokens\" state vars are unneccesary and have been removed.\n * Also defines 2 light-weight state vars: \"_preMintReceiver\" & \"_maxSupply\"\n * Overrides \"ownerOf\" & \"_exists\"\n */\nabstract contract ERC721iEnumerable is ERC721, IERC721Enumerable {\n // Mapping from owner to list of owned token IDs\n mapping(address => mapping(uint256 => uint256)) private _ownedTokens;\n\n // Mapping from token ID to index of the owner tokens list\n mapping(uint256 => uint256) private _ownedTokensIndex;\n\n // Tracking for the Pre-Mint Receiver\n address internal _preMintReceiver;\n\n // Max-Supply for Pre-Mint\n uint256 internal _maxSupply;\n\n /**\n * @dev See {IERC165-supportsInterface}.\n *\n * Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n * note: Fix contributed by surfer77\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\n require(index < ERC721.balanceOf(owner), \"ERC721Enumerable: owner index out of bounds\");\n if (owner == address(_preMintReceiver)) {\n uint256 supply = totalSupply();\n uint256 matched = 0;\n for (uint256 i = 1; i < supply; i++) {\n if (ownerOf(i) == address(_preMintReceiver)) {\n matched += 1;\n if (matched - 1 == index) {\n return i;\n }\n }\n }\n }\n return _ownedTokens[owner][index];\n }\n\n /**\n * @dev See {IERC721Enumerable-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n // The Total Supply is simply the Max Supply\n return _maxSupply;\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenByIndex}.\n */\n function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\n require(index < _maxSupply, \"ERC721Enumerable: global index out of bounds\");\n // Array index is 0-based, whereas Token ID is 1-based (sequential).\n return index + 1;\n }\n\n /**\n * @dev Override the ERC721 \"ownerOf\" function to account for the Pre-Mint Receiver.\n */\n function ownerOf(uint256 tokenId) public view virtual override(IERC721, ERC721) returns (address) {\n // Anything beyond the Pre-Minted supply will use the standard \"ownerOf\"\n if (tokenId > _maxSupply) {\n return super.ownerOf(tokenId);\n }\n\n // Since we have Pre-Minted the Max-Supply to the \"Pre-Mint Receiver\" account, we know:\n // - if the \"_owners\" mapping has not been assigned, then the owner is the Pre-Mint Receiver.\n // - after the NFT is transferred, the \"_owners\" mapping will be updated with the new owner.\n address owner_ = _owners[tokenId];\n if (owner_ == address(0)) {\n owner_ = _preMintReceiver;\n }\n return owner_;\n }\n\n /**\n * @dev Override the ERC721 \"_exists\" function to account for the Pre-Minted Max-Supply.\n */\n function _exists(uint256 tokenId) internal view virtual override(ERC721) returns (bool) {\n // Anything beyond the Pre-Minted supply will use the standard \"_exists\"\n if (tokenId > _maxSupply) {\n return super._exists(tokenId);\n }\n\n // We know the Max-Supply has been Pre-Minted with Sequential Token IDs\n return (tokenId > 0 && tokenId <= _maxSupply);\n }\n\n /**\n * @dev See {IERC721Enumerable-_beforeTokenTransfer}.\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual override {\n super._beforeTokenTransfer(from, to, tokenId);\n\n if (from != to) {\n _removeTokenFromOwnerEnumeration(from, tokenId);\n _addTokenToOwnerEnumeration(to, tokenId);\n }\n }\n\n /**\n * @dev See {IERC721Enumerable-_addTokenToOwnerEnumeration}.\n */\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\n uint256 length = ERC721.balanceOf(to);\n _ownedTokens[to][length] = tokenId;\n _ownedTokensIndex[tokenId] = length;\n }\n\n /**\n * @dev See {IERC721Enumerable-_removeTokenFromOwnerEnumeration}.\n */\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\n\n _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n }\n\n // This also deletes the contents at the last position of the array\n delete _ownedTokensIndex[tokenId];\n delete _ownedTokens[from][lastTokenIndex];\n }\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[656],"Ownable":[112]},"id":113,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:0"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":113,"sourceUnit":657,"src":"127:30:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":656,"src":"683:7:0"},"id":5,"nodeType":"InheritanceSpecifier","src":"683:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"159:494:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":112,"linearizedBaseContracts":[112,656],"name":"Ownable","nameLocation":"672:7:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7,"mutability":"mutable","name":"_owner","nameLocation":"713:6:0","nodeType":"VariableDeclaration","scope":112,"src":"697:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":13,"name":"OwnershipTransferred","nameLocation":"732:20:0","nodeType":"EventDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"769:13:0","nodeType":"VariableDeclaration","scope":13,"src":"753:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8,"name":"address","nodeType":"ElementaryTypeName","src":"753:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"800:8:0","nodeType":"VariableDeclaration","scope":13,"src":"784:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"784:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"752:57:0"},"src":"726:84:0"},{"body":{"id":22,"nodeType":"Block","src":"926:49:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":18,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"955:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":19,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"955:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"936:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"936:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21,"nodeType":"ExpressionStatement","src":"936:32:0"}]},"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"816:91:0","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":23,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"923:2:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"926:0:0"},"scope":112,"src":"912:63:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":30,"nodeType":"Block","src":"1084:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":26,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1094:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":27,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28,"nodeType":"ExpressionStatement","src":"1094:13:0"},{"id":29,"nodeType":"PlaceholderStatement","src":"1117:1:0"}]},"documentation":{"id":24,"nodeType":"StructuredDocumentation","src":"981:77:0","text":" @dev Throws if called by any account other than the owner."},"id":31,"name":"onlyOwner","nameLocation":"1072:9:0","nodeType":"ModifierDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"1081:2:0"},"src":"1063:62:0","virtual":false,"visibility":"internal"},{"body":{"id":39,"nodeType":"Block","src":"1256:30:0","statements":[{"expression":{"id":37,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"1273:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":36,"id":38,"nodeType":"Return","src":"1266:13:0"}]},"documentation":{"id":32,"nodeType":"StructuredDocumentation","src":"1131:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":40,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1210:5:0","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[],"src":"1215:2:0"},"returnParameters":{"id":36,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40,"src":"1247:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1247:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1246:9:0"},"scope":112,"src":"1201:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":53,"nodeType":"Block","src":"1404:85:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":45,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"1422:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1422:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":47,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"1433:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":48,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1433:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1422:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1447:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":44,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1414:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1414:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52,"nodeType":"ExpressionStatement","src":"1414:68:0"}]},"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1292:62:0","text":" @dev Throws if the sender is not the owner."},"id":54,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1368:11:0","nodeType":"FunctionDefinition","parameters":{"id":42,"nodeType":"ParameterList","parameters":[],"src":"1379:2:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[],"src":"1404:0:0"},"scope":112,"src":"1359:130:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":67,"nodeType":"Block","src":"1878:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":63,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1915:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":62,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1907:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"1907:7:0","typeDescriptions":{}}},"id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1907:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"1888:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1888:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"ExpressionStatement","src":"1888:30:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1495:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":68,"implemented":true,"kind":"function","modifiers":[{"id":58,"kind":"modifierInvocation","modifierName":{"id":57,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"1868:9:0"},"nodeType":"ModifierInvocation","src":"1868:9:0"}],"name":"renounceOwnership","nameLocation":"1833:17:0","nodeType":"FunctionDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"1850:2:0"},"returnParameters":{"id":59,"nodeType":"ParameterList","parameters":[],"src":"1878:0:0"},"scope":112,"src":"1824:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":90,"nodeType":"Block","src":"2144:128:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":82,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2162:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2182:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":79,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2174:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"2174:7:0","typeDescriptions":{}}},"id":81,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2174:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2162:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":83,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2186:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":76,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2154:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2154:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85,"nodeType":"ExpressionStatement","src":"2154:73:0"},{"expression":{"arguments":[{"id":87,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2256:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2237:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2237:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"2237:28:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1931:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":91,"implemented":true,"kind":"function","modifiers":[{"id":74,"kind":"modifierInvocation","modifierName":{"id":73,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2134:9:0"},"nodeType":"ModifierInvocation","src":"2134:9:0"}],"name":"transferOwnership","nameLocation":"2083:17:0","nodeType":"FunctionDefinition","parameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"newOwner","nameLocation":"2109:8:0","nodeType":"VariableDeclaration","scope":91,"src":"2101:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"2101:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2100:18:0"},"returnParameters":{"id":75,"nodeType":"ParameterList","parameters":[],"src":"2144:0:0"},"scope":112,"src":"2074:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":110,"nodeType":"Block","src":"2489:124:0","statements":[{"assignments":[98],"declarations":[{"constant":false,"id":98,"mutability":"mutable","name":"oldOwner","nameLocation":"2507:8:0","nodeType":"VariableDeclaration","scope":110,"src":"2499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":100,"initialValue":{"id":99,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2518:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2499:25:0"},{"expression":{"id":103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":101,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2534:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":102,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2543:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2534:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":104,"nodeType":"ExpressionStatement","src":"2534:17:0"},{"eventCall":{"arguments":[{"id":106,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"2587:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":107,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2597:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":105,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"2566:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2566:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"EmitStatement","src":"2561:45:0"}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"2278:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":111,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2435:18:0","nodeType":"FunctionDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"newOwner","nameLocation":"2462:8:0","nodeType":"VariableDeclaration","scope":111,"src":"2454:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":93,"name":"address","nodeType":"ElementaryTypeName","src":"2454:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2453:18:0"},"returnParameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2489:0:0"},"scope":112,"src":"2426:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":113,"src":"654:1961:0","usedErrors":[]}],"src":"102:2514:0"},"id":0},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[921],"IERC721":[228]},"id":229,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":114,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:1"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":115,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":229,"sourceUnit":922,"src":"133:47:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":117,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":921,"src":"271:7:1"},"id":118,"nodeType":"InheritanceSpecifier","src":"271:7:1"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"182:67:1","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":228,"linearizedBaseContracts":[228,921],"name":"IERC721","nameLocation":"260:7:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"285:88:1","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":127,"name":"Transfer","nameLocation":"384:8:1","nodeType":"EventDefinition","parameters":{"id":126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:1","nodeType":"VariableDeclaration","scope":127,"src":"393:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":123,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:1","nodeType":"VariableDeclaration","scope":127,"src":"415:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":122,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":125,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:1","nodeType":"VariableDeclaration","scope":127,"src":"435:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":124,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:1"},"src":"378:82:1"},{"anonymous":false,"documentation":{"id":128,"nodeType":"StructuredDocumentation","src":"466:94:1","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":136,"name":"Approval","nameLocation":"571:8:1","nodeType":"EventDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":130,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:1","nodeType":"VariableDeclaration","scope":136,"src":"580:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":132,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:1","nodeType":"VariableDeclaration","scope":136,"src":"603:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":131,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":134,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:1","nodeType":"VariableDeclaration","scope":136,"src":"629:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":133,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:1"},"src":"565:89:1"},{"anonymous":false,"documentation":{"id":137,"nodeType":"StructuredDocumentation","src":"660:117:1","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":145,"name":"ApprovalForAll","nameLocation":"788:14:1","nodeType":"EventDefinition","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":139,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:1","nodeType":"VariableDeclaration","scope":145,"src":"803:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":141,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:1","nodeType":"VariableDeclaration","scope":145,"src":"826:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":143,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:1","nodeType":"VariableDeclaration","scope":145,"src":"852:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":142,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:1"},"src":"782:85:1"},{"documentation":{"id":146,"nodeType":"StructuredDocumentation","src":"873:76:1","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":153,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:1","nodeType":"FunctionDefinition","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"owner","nameLocation":"981:5:1","nodeType":"VariableDeclaration","scope":153,"src":"973:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":147,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:1"},"returnParameters":{"id":152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":151,"mutability":"mutable","name":"balance","nameLocation":"1019:7:1","nodeType":"VariableDeclaration","scope":153,"src":"1011:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":150,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:1"},"scope":228,"src":"954:74:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"1034:131:1","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":161,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:1","nodeType":"FunctionDefinition","parameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:1","nodeType":"VariableDeclaration","scope":161,"src":"1187:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":155,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:1"},"returnParameters":{"id":160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"owner","nameLocation":"1235:5:1","nodeType":"VariableDeclaration","scope":161,"src":"1227:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":158,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:1"},"scope":228,"src":"1170:72:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":162,"nodeType":"StructuredDocumentation","src":"1248:556: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 a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":173,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:1","nodeType":"FunctionDefinition","parameters":{"id":171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"from","nameLocation":"1843:4:1","nodeType":"VariableDeclaration","scope":173,"src":"1835:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":166,"mutability":"mutable","name":"to","nameLocation":"1857:2:1","nodeType":"VariableDeclaration","scope":173,"src":"1849:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":165,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":168,"mutability":"mutable","name":"tokenId","nameLocation":"1869:7:1","nodeType":"VariableDeclaration","scope":173,"src":"1861:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":167,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":170,"mutability":"mutable","name":"data","nameLocation":"1893:4:1","nodeType":"VariableDeclaration","scope":173,"src":"1878:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":169,"name":"bytes","nodeType":"ElementaryTypeName","src":"1878:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:64:1"},"returnParameters":{"id":172,"nodeType":"ParameterList","parameters":[],"src":"1907:0:1"},"scope":228,"src":"1809:99:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":174,"nodeType":"StructuredDocumentation","src":"1914:687:1","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 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 {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":183,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2615:16:1","nodeType":"FunctionDefinition","parameters":{"id":181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":176,"mutability":"mutable","name":"from","nameLocation":"2640:4:1","nodeType":"VariableDeclaration","scope":183,"src":"2632:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":175,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":178,"mutability":"mutable","name":"to","nameLocation":"2654:2:1","nodeType":"VariableDeclaration","scope":183,"src":"2646:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":177,"name":"address","nodeType":"ElementaryTypeName","src":"2646:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":180,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:1","nodeType":"VariableDeclaration","scope":183,"src":"2658:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":179,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2631:43:1"},"returnParameters":{"id":182,"nodeType":"ParameterList","parameters":[],"src":"2683:0:1"},"scope":228,"src":"2606:78:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":184,"nodeType":"StructuredDocumentation","src":"2690:732: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 ERC721\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":193,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3436:12:1","nodeType":"FunctionDefinition","parameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":186,"mutability":"mutable","name":"from","nameLocation":"3457:4:1","nodeType":"VariableDeclaration","scope":193,"src":"3449:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"to","nameLocation":"3471:2:1","nodeType":"VariableDeclaration","scope":193,"src":"3463:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":187,"name":"address","nodeType":"ElementaryTypeName","src":"3463:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"tokenId","nameLocation":"3483:7:1","nodeType":"VariableDeclaration","scope":193,"src":"3475:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":189,"name":"uint256","nodeType":"ElementaryTypeName","src":"3475:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3448:43:1"},"returnParameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"3500:0:1"},"scope":228,"src":"3427:74:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":194,"nodeType":"StructuredDocumentation","src":"3507: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":201,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3973:7:1","nodeType":"FunctionDefinition","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"to","nameLocation":"3989:2:1","nodeType":"VariableDeclaration","scope":201,"src":"3981:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":195,"name":"address","nodeType":"ElementaryTypeName","src":"3981:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":198,"mutability":"mutable","name":"tokenId","nameLocation":"4001:7:1","nodeType":"VariableDeclaration","scope":201,"src":"3993:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":197,"name":"uint256","nodeType":"ElementaryTypeName","src":"3993:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3980:29:1"},"returnParameters":{"id":200,"nodeType":"ParameterList","parameters":[],"src":"4018:0:1"},"scope":228,"src":"3964:55:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":202,"nodeType":"StructuredDocumentation","src":"4025:309: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 caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":209,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4348:17:1","nodeType":"FunctionDefinition","parameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"mutability":"mutable","name":"operator","nameLocation":"4374:8:1","nodeType":"VariableDeclaration","scope":209,"src":"4366:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"4366:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":206,"mutability":"mutable","name":"approved","nameLocation":"4389:8:1","nodeType":"VariableDeclaration","scope":209,"src":"4384:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":205,"name":"bool","nodeType":"ElementaryTypeName","src":"4384:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4365:33:1"},"returnParameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"4407:0:1"},"scope":228,"src":"4339:69:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":210,"nodeType":"StructuredDocumentation","src":"4414:139:1","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":217,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4567:11:1","nodeType":"FunctionDefinition","parameters":{"id":213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":212,"mutability":"mutable","name":"tokenId","nameLocation":"4587:7:1","nodeType":"VariableDeclaration","scope":217,"src":"4579:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":211,"name":"uint256","nodeType":"ElementaryTypeName","src":"4579:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4578:17:1"},"returnParameters":{"id":216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":215,"mutability":"mutable","name":"operator","nameLocation":"4627:8:1","nodeType":"VariableDeclaration","scope":217,"src":"4619:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":214,"name":"address","nodeType":"ElementaryTypeName","src":"4619:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4618:18:1"},"scope":228,"src":"4558:79:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":218,"nodeType":"StructuredDocumentation","src":"4643:138:1","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":227,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4795:16:1","nodeType":"FunctionDefinition","parameters":{"id":223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":220,"mutability":"mutable","name":"owner","nameLocation":"4820:5:1","nodeType":"VariableDeclaration","scope":227,"src":"4812:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":219,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":222,"mutability":"mutable","name":"operator","nameLocation":"4835:8:1","nodeType":"VariableDeclaration","scope":227,"src":"4827:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":221,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4811:33:1"},"returnParameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":227,"src":"4868:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":224,"name":"bool","nodeType":"ElementaryTypeName","src":"4868:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4867:6:1"},"scope":228,"src":"4786:88:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":229,"src":"250:4626:1","usedErrors":[]}],"src":"108:4769:1"},"id":1},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[246]},"id":247,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":230,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":231,"nodeType":"StructuredDocumentation","src":"141:152:2","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":246,"linearizedBaseContracts":[246],"name":"IERC721Receiver","nameLocation":"304:15:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":232,"nodeType":"StructuredDocumentation","src":"326:493: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 reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":245,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:2","nodeType":"FunctionDefinition","parameters":{"id":241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":234,"mutability":"mutable","name":"operator","nameLocation":"867:8:2","nodeType":"VariableDeclaration","scope":245,"src":"859:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":233,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":236,"mutability":"mutable","name":"from","nameLocation":"893:4:2","nodeType":"VariableDeclaration","scope":245,"src":"885:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":235,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":238,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:2","nodeType":"VariableDeclaration","scope":245,"src":"907:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":237,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":240,"mutability":"mutable","name":"data","nameLocation":"947:4:2","nodeType":"VariableDeclaration","scope":245,"src":"932:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":239,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:2"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":245,"src":"976:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":242,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:2"},"scope":246,"src":"824:160:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":247,"src":"294:692:2","usedErrors":[]}],"src":"116:871:2"},"id":2},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","exportedSymbols":{"IERC165":[921],"IERC721":[228],"IERC721Enumerable":[277]},"id":278,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":248,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"129:23:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":249,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":278,"sourceUnit":229,"src":"154:24:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":251,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":228,"src":"348:7:3"},"id":252,"nodeType":"InheritanceSpecifier","src":"348:7:3"}],"canonicalName":"IERC721Enumerable","contractDependencies":[],"contractKind":"interface","documentation":{"id":250,"nodeType":"StructuredDocumentation","src":"180:136:3","text":" @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":277,"linearizedBaseContracts":[277,228,921],"name":"IERC721Enumerable","nameLocation":"327:17:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":253,"nodeType":"StructuredDocumentation","src":"362:82:3","text":" @dev Returns the total amount of tokens stored by the contract."},"functionSelector":"18160ddd","id":258,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"458:11:3","nodeType":"FunctionDefinition","parameters":{"id":254,"nodeType":"ParameterList","parameters":[],"src":"469:2:3"},"returnParameters":{"id":257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":258,"src":"495:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":255,"name":"uint256","nodeType":"ElementaryTypeName","src":"495:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"494:9:3"},"scope":277,"src":"449:55:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"510:171:3","text":" @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"functionSelector":"2f745c59","id":268,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"695:19:3","nodeType":"FunctionDefinition","parameters":{"id":264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":261,"mutability":"mutable","name":"owner","nameLocation":"723:5:3","nodeType":"VariableDeclaration","scope":268,"src":"715:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":260,"name":"address","nodeType":"ElementaryTypeName","src":"715:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":263,"mutability":"mutable","name":"index","nameLocation":"738:5:3","nodeType":"VariableDeclaration","scope":268,"src":"730:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"730:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"714:30:3"},"returnParameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":268,"src":"768:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":265,"name":"uint256","nodeType":"ElementaryTypeName","src":"768:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"767:9:3"},"scope":277,"src":"686:91:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":269,"nodeType":"StructuredDocumentation","src":"783:164:3","text":" @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens."},"functionSelector":"4f6ccce7","id":276,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"961:12:3","nodeType":"FunctionDefinition","parameters":{"id":272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"mutability":"mutable","name":"index","nameLocation":"982:5:3","nodeType":"VariableDeclaration","scope":276,"src":"974:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":270,"name":"uint256","nodeType":"ElementaryTypeName","src":"974:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"973:15:3"},"returnParameters":{"id":275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":274,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":276,"src":"1012:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":273,"name":"uint256","nodeType":"ElementaryTypeName","src":"1012:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1011:9:3"},"scope":277,"src":"952:69:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":278,"src":"317:706:3","usedErrors":[]}],"src":"129:895:3"},"id":3},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC165":[921],"IERC721":[228],"IERC721Metadata":[304]},"id":305,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":279,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:4"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":280,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":305,"sourceUnit":229,"src":"137:24:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":282,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":228,"src":"326:7:4"},"id":283,"nodeType":"InheritanceSpecifier","src":"326:7:4"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":281,"nodeType":"StructuredDocumentation","src":"163:133:4","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":304,"linearizedBaseContracts":[304,228,921],"name":"IERC721Metadata","nameLocation":"307:15:4","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":284,"nodeType":"StructuredDocumentation","src":"340:58:4","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":289,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"412:4:4","nodeType":"FunctionDefinition","parameters":{"id":285,"nodeType":"ParameterList","parameters":[],"src":"416:2:4"},"returnParameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":289,"src":"442:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":286,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"441:15:4"},"scope":304,"src":"403:54:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":290,"nodeType":"StructuredDocumentation","src":"463:60:4","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":295,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"537:6:4","nodeType":"FunctionDefinition","parameters":{"id":291,"nodeType":"ParameterList","parameters":[],"src":"543:2:4"},"returnParameters":{"id":294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":293,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":295,"src":"569:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":292,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"568:15:4"},"scope":304,"src":"528:56:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":296,"nodeType":"StructuredDocumentation","src":"590:90:4","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":303,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"694:8:4","nodeType":"FunctionDefinition","parameters":{"id":299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":298,"mutability":"mutable","name":"tokenId","nameLocation":"711:7:4","nodeType":"VariableDeclaration","scope":303,"src":"703:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":297,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"702:17:4"},"returnParameters":{"id":302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":303,"src":"743:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":300,"name":"string","nodeType":"ElementaryTypeName","src":"743:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"742:15:4"},"scope":304,"src":"685:73:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":305,"src":"297:463:4","usedErrors":[]}],"src":"112:649:4"},"id":4},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[634]},"id":635,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":306,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":307,"nodeType":"StructuredDocumentation","src":"126:67:5","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":634,"linearizedBaseContracts":[634],"name":"Address","nameLocation":"202:7:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":321,"nodeType":"Block","src":"1478:254:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":315,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":310,"src":"1702:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"1702:12:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1702:19:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":314,"id":320,"nodeType":"Return","src":"1695:30:5"}]},"documentation":{"id":308,"nodeType":"StructuredDocumentation","src":"216:1191:5","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":322,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:5","nodeType":"FunctionDefinition","parameters":{"id":311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":310,"mutability":"mutable","name":"account","nameLocation":"1440:7:5","nodeType":"VariableDeclaration","scope":322,"src":"1432:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":309,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:5"},"returnParameters":{"id":314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":322,"src":"1472:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":312,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:5"},"scope":634,"src":"1412:320:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":355,"nodeType":"Block","src":"2718:241:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":333,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2744:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$634","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$634","typeString":"library Address"}],"id":332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":331,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:5","typeDescriptions":{}}},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2736:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2736:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":336,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"2761:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":330,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2728:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2728:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":340,"nodeType":"ExpressionStatement","src":"2728:73:5"},{"assignments":[342,null],"declarations":[{"constant":false,"id":342,"mutability":"mutable","name":"success","nameLocation":"2818:7:5","nodeType":"VariableDeclaration","scope":355,"src":"2813:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":341,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":349,"initialValue":{"arguments":[{"hexValue":"","id":347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":343,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"2831:9:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2831:14:5","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":346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":345,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"2853:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:5","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":348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2831:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:5"},{"expression":{"arguments":[{"id":351,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"2882:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":350,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2874:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2874:78:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":354,"nodeType":"ExpressionStatement","src":"2874:78:5"}]},"documentation":{"id":323,"nodeType":"StructuredDocumentation","src":"1738:904:5","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":356,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:5","nodeType":"FunctionDefinition","parameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:5","nodeType":"VariableDeclaration","scope":356,"src":"2666:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":324,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:5","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":327,"mutability":"mutable","name":"amount","nameLocation":"2701:6:5","nodeType":"VariableDeclaration","scope":356,"src":"2693:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":326,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:5"},"returnParameters":{"id":329,"nodeType":"ParameterList","parameters":[],"src":"2718:0:5"},"scope":634,"src":"2647:312:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":373,"nodeType":"Block","src":"3790:96:5","statements":[{"expression":{"arguments":[{"id":367,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":359,"src":"3829:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":368,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"3837:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":366,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[414,458],"referencedDeclaration":458,"src":"3807:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3807:72:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":365,"id":372,"nodeType":"Return","src":"3800:79:5"}]},"documentation":{"id":357,"nodeType":"StructuredDocumentation","src":"2965:731:5","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":374,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:5","nodeType":"FunctionDefinition","parameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":359,"mutability":"mutable","name":"target","nameLocation":"3731:6:5","nodeType":"VariableDeclaration","scope":374,"src":"3723:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":358,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":361,"mutability":"mutable","name":"data","nameLocation":"3752:4:5","nodeType":"VariableDeclaration","scope":374,"src":"3739:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":360,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:5"},"returnParameters":{"id":365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":374,"src":"3776:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":363,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:5"},"scope":634,"src":"3701:185:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":393,"nodeType":"Block","src":"4255:76:5","statements":[{"expression":{"arguments":[{"id":387,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":377,"src":"4294:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":388,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"4302:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":390,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"4311:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":386,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[414,458],"referencedDeclaration":458,"src":"4272:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4272:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":385,"id":392,"nodeType":"Return","src":"4265:59:5"}]},"documentation":{"id":375,"nodeType":"StructuredDocumentation","src":"3892:211:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":394,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:5","nodeType":"FunctionDefinition","parameters":{"id":382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"target","nameLocation":"4147:6:5","nodeType":"VariableDeclaration","scope":394,"src":"4139:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":376,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":379,"mutability":"mutable","name":"data","nameLocation":"4176:4:5","nodeType":"VariableDeclaration","scope":394,"src":"4163:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":378,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":381,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:5","nodeType":"VariableDeclaration","scope":394,"src":"4190:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":380,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:5"},"returnParameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":394,"src":"4241:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":383,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:5"},"scope":634,"src":"4108:223:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":413,"nodeType":"Block","src":"4806:111:5","statements":[{"expression":{"arguments":[{"id":407,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"4845:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":408,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":399,"src":"4853:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":401,"src":"4859:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":406,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[414,458],"referencedDeclaration":458,"src":"4823:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4823:87:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":405,"id":412,"nodeType":"Return","src":"4816:94:5"}]},"documentation":{"id":395,"nodeType":"StructuredDocumentation","src":"4337:351:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":414,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:5","nodeType":"FunctionDefinition","parameters":{"id":402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":397,"mutability":"mutable","name":"target","nameLocation":"4732:6:5","nodeType":"VariableDeclaration","scope":414,"src":"4724:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":396,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":399,"mutability":"mutable","name":"data","nameLocation":"4753:4:5","nodeType":"VariableDeclaration","scope":414,"src":"4740:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":398,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":401,"mutability":"mutable","name":"value","nameLocation":"4767:5:5","nodeType":"VariableDeclaration","scope":414,"src":"4759:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":400,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:5"},"returnParameters":{"id":405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":414,"src":"4792:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":403,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:5"},"scope":634,"src":"4693:224:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":457,"nodeType":"Block","src":"5344:267:5","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":431,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5370:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$634","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$634","typeString":"library Address"}],"id":430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":429,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:5","typeDescriptions":{}}},"id":432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5362:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"5362:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":434,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"5387:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":428,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5354:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5354:81:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":438,"nodeType":"ExpressionStatement","src":"5354:81:5"},{"assignments":[440,442],"declarations":[{"constant":false,"id":440,"mutability":"mutable","name":"success","nameLocation":"5451:7:5","nodeType":"VariableDeclaration","scope":457,"src":"5446:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":439,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":442,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:5","nodeType":"VariableDeclaration","scope":457,"src":"5460:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":441,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":449,"initialValue":{"arguments":[{"id":447,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"5513:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":443,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"5487:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5487:11:5","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":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"5506:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:5","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":448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5487:31:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:5"},{"expression":{"arguments":[{"id":451,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"5562:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":452,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":440,"src":"5570:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":453,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"5579:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":454,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":423,"src":"5591:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":450,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"5535:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5535:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":427,"id":456,"nodeType":"Return","src":"5528:76:5"}]},"documentation":{"id":415,"nodeType":"StructuredDocumentation","src":"4923:237:5","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":458,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:5","nodeType":"FunctionDefinition","parameters":{"id":424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":417,"mutability":"mutable","name":"target","nameLocation":"5213:6:5","nodeType":"VariableDeclaration","scope":458,"src":"5205:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":419,"mutability":"mutable","name":"data","nameLocation":"5242:4:5","nodeType":"VariableDeclaration","scope":458,"src":"5229:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":418,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":421,"mutability":"mutable","name":"value","nameLocation":"5264:5:5","nodeType":"VariableDeclaration","scope":458,"src":"5256:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":420,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":423,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:5","nodeType":"VariableDeclaration","scope":458,"src":"5279:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":422,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:5"},"returnParameters":{"id":427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":458,"src":"5330:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":425,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:5"},"scope":634,"src":"5165:446:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":474,"nodeType":"Block","src":"5888:97:5","statements":[{"expression":{"arguments":[{"id":469,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"5924:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":470,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":463,"src":"5932:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":468,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[475,504],"referencedDeclaration":504,"src":"5905:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5905:73:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":467,"id":473,"nodeType":"Return","src":"5898:80:5"}]},"documentation":{"id":459,"nodeType":"StructuredDocumentation","src":"5617:166:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":475,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:5","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":461,"mutability":"mutable","name":"target","nameLocation":"5824:6:5","nodeType":"VariableDeclaration","scope":475,"src":"5816:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":460,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":463,"mutability":"mutable","name":"data","nameLocation":"5845:4:5","nodeType":"VariableDeclaration","scope":475,"src":"5832:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":462,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:5"},"returnParameters":{"id":467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":475,"src":"5874:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":465,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:5"},"scope":634,"src":"5788:197:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":503,"nodeType":"Block","src":"6327:168:5","statements":[{"assignments":[488,490],"declarations":[{"constant":false,"id":488,"mutability":"mutable","name":"success","nameLocation":"6343:7:5","nodeType":"VariableDeclaration","scope":503,"src":"6338:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":487,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":490,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:5","nodeType":"VariableDeclaration","scope":503,"src":"6352:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":489,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":495,"initialValue":{"arguments":[{"id":493,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"6397:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":491,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6379:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:5","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":494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6379:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:5"},{"expression":{"arguments":[{"id":497,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6446:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":498,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"6454:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":499,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":490,"src":"6463:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":500,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"6475:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":496,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"6419:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6419:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":486,"id":502,"nodeType":"Return","src":"6412:76:5"}]},"documentation":{"id":476,"nodeType":"StructuredDocumentation","src":"5991:173:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":504,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:5","nodeType":"FunctionDefinition","parameters":{"id":483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":478,"mutability":"mutable","name":"target","nameLocation":"6214:6:5","nodeType":"VariableDeclaration","scope":504,"src":"6206:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":477,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"data","nameLocation":"6243:4:5","nodeType":"VariableDeclaration","scope":504,"src":"6230:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":479,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":482,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:5","nodeType":"VariableDeclaration","scope":504,"src":"6257:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":481,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:5"},"returnParameters":{"id":486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":485,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":504,"src":"6313:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":484,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:5"},"scope":634,"src":"6169:326:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":520,"nodeType":"Block","src":"6771:101:5","statements":[{"expression":{"arguments":[{"id":515,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"6809:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":516,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":509,"src":"6817:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":514,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[521,550],"referencedDeclaration":550,"src":"6788:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6788:77:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":513,"id":519,"nodeType":"Return","src":"6781:84:5"}]},"documentation":{"id":505,"nodeType":"StructuredDocumentation","src":"6501:168:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":521,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:5","nodeType":"FunctionDefinition","parameters":{"id":510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":507,"mutability":"mutable","name":"target","nameLocation":"6712:6:5","nodeType":"VariableDeclaration","scope":521,"src":"6704:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":506,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":509,"mutability":"mutable","name":"data","nameLocation":"6733:4:5","nodeType":"VariableDeclaration","scope":521,"src":"6720:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":508,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:5"},"returnParameters":{"id":513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":521,"src":"6757:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":511,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:5"},"scope":634,"src":"6674:198:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":549,"nodeType":"Block","src":"7213:170:5","statements":[{"assignments":[534,536],"declarations":[{"constant":false,"id":534,"mutability":"mutable","name":"success","nameLocation":"7229:7:5","nodeType":"VariableDeclaration","scope":549,"src":"7224:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":533,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":536,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:5","nodeType":"VariableDeclaration","scope":549,"src":"7238:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":535,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":541,"initialValue":{"arguments":[{"id":539,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"7285:4:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":537,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"7265:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:5","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":540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7265:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:5"},{"expression":{"arguments":[{"id":543,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"7334:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":544,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":534,"src":"7342:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":545,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":536,"src":"7351:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":546,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"7363:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":542,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"7307:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7307:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":532,"id":548,"nodeType":"Return","src":"7300:76:5"}]},"documentation":{"id":522,"nodeType":"StructuredDocumentation","src":"6878:175:5","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":550,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:5","nodeType":"FunctionDefinition","parameters":{"id":529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":524,"mutability":"mutable","name":"target","nameLocation":"7105:6:5","nodeType":"VariableDeclaration","scope":550,"src":"7097:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":523,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":526,"mutability":"mutable","name":"data","nameLocation":"7134:4:5","nodeType":"VariableDeclaration","scope":550,"src":"7121:17:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":525,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":528,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:5","nodeType":"VariableDeclaration","scope":550,"src":"7148:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":527,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:5"},"returnParameters":{"id":532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":531,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":550,"src":"7199:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":530,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:5"},"scope":634,"src":"7058:325:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":588,"nodeType":"Block","src":"7865:434:5","statements":[{"condition":{"id":564,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":555,"src":"7879:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":586,"nodeType":"Block","src":"8235:58:5","statements":[{"expression":{"arguments":[{"id":582,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"8257:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":583,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"8269:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":581,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"8249:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8249:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":585,"nodeType":"ExpressionStatement","src":"8249:33:5"}]},"id":587,"nodeType":"IfStatement","src":"7875:418:5","trueBody":{"id":580,"nodeType":"Block","src":"7888:341:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":565,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"7906:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7906:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":577,"nodeType":"IfStatement","src":"7902:286:5","trueBody":{"id":576,"nodeType":"Block","src":"7930:258:5","statements":[{"expression":{"arguments":[{"arguments":[{"id":571,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"8132:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":570,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"8121:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8121:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":569,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8113:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8113:60:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":575,"nodeType":"ExpressionStatement","src":"8113:60:5"}]}},{"expression":{"id":578,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"8208:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":563,"id":579,"nodeType":"Return","src":"8201:17:5"}]}}]},"documentation":{"id":551,"nodeType":"StructuredDocumentation","src":"7389:277:5","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":589,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:5","nodeType":"FunctionDefinition","parameters":{"id":560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"target","nameLocation":"7724:6:5","nodeType":"VariableDeclaration","scope":589,"src":"7716:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":552,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"success","nameLocation":"7745:7:5","nodeType":"VariableDeclaration","scope":589,"src":"7740:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":554,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":557,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:5","nodeType":"VariableDeclaration","scope":589,"src":"7762:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":556,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":559,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:5","nodeType":"VariableDeclaration","scope":589,"src":"7795:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":558,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:5"},"returnParameters":{"id":563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":589,"src":"7851:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":561,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:5"},"scope":634,"src":"7671:628:5","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":612,"nodeType":"Block","src":"8680:135:5","statements":[{"condition":{"id":601,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"8694:7:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":610,"nodeType":"Block","src":"8751:58:5","statements":[{"expression":{"arguments":[{"id":606,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"8773:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":607,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":596,"src":"8785:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":605,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"8765:7:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8765:33:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":609,"nodeType":"ExpressionStatement","src":"8765:33:5"}]},"id":611,"nodeType":"IfStatement","src":"8690:119:5","trueBody":{"id":604,"nodeType":"Block","src":"8703:42:5","statements":[{"expression":{"id":602,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":594,"src":"8724:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":600,"id":603,"nodeType":"Return","src":"8717:17:5"}]}}]},"documentation":{"id":590,"nodeType":"StructuredDocumentation","src":"8305:210:5","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":613,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:5","nodeType":"FunctionDefinition","parameters":{"id":597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":592,"mutability":"mutable","name":"success","nameLocation":"8560:7:5","nodeType":"VariableDeclaration","scope":613,"src":"8555:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":591,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":594,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:5","nodeType":"VariableDeclaration","scope":613,"src":"8577:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":593,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":596,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:5","nodeType":"VariableDeclaration","scope":613,"src":"8610:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":595,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:5"},"returnParameters":{"id":600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":613,"src":"8666:12:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":598,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:5"},"scope":634,"src":"8520:295:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":632,"nodeType":"Block","src":"8904:457:5","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":620,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"8980:10:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8980:17:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":630,"nodeType":"Block","src":"9310:45:5","statements":[{"expression":{"arguments":[{"id":627,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"9331:12:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":626,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9324:6:5","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9324:20:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":629,"nodeType":"ExpressionStatement","src":"9324:20:5"}]},"id":631,"nodeType":"IfStatement","src":"8976:379:5","trueBody":{"id":625,"nodeType":"Block","src":"9003:301:5","statements":[{"AST":{"nodeType":"YulBlock","src":"9161:133:5","statements":[{"nodeType":"YulVariableDeclaration","src":"9179:40:5","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9208:10:5"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9202:5:5"},"nodeType":"YulFunctionCall","src":"9202:17:5"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9183:15:5","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9247:2:5","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9251:10:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9243:3:5"},"nodeType":"YulFunctionCall","src":"9243:19:5"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9264:15:5"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9236:6:5"},"nodeType":"YulFunctionCall","src":"9236:44:5"},"nodeType":"YulExpressionStatement","src":"9236:44:5"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":615,"isOffset":false,"isSlot":false,"src":"9208:10:5","valueSize":1},{"declaration":615,"isOffset":false,"isSlot":false,"src":"9251:10:5","valueSize":1}],"id":624,"nodeType":"InlineAssembly","src":"9152:142:5"}]}}]},"id":633,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:5","nodeType":"FunctionDefinition","parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":615,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:5","nodeType":"VariableDeclaration","scope":633,"src":"8838:23:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":614,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":617,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:5","nodeType":"VariableDeclaration","scope":633,"src":"8863:26:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":616,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:5"},"returnParameters":{"id":619,"nodeType":"ParameterList","parameters":[],"src":"8904:0:5"},"scope":634,"src":"8821:540:5","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":635,"src":"194:9169:5","usedErrors":[]}],"src":"101:9263:5"},"id":5},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[656]},"id":657,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":636,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:6"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":637,"nodeType":"StructuredDocumentation","src":"111:496:6","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":656,"linearizedBaseContracts":[656],"name":"Context","nameLocation":"626:7:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":645,"nodeType":"Block","src":"702:34:6","statements":[{"expression":{"expression":{"id":642,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"719:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":641,"id":644,"nodeType":"Return","src":"712:17:6"}]},"id":646,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:6","nodeType":"FunctionDefinition","parameters":{"id":638,"nodeType":"ParameterList","parameters":[],"src":"659:2:6"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":646,"src":"693:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":639,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:6"},"scope":656,"src":"640:96:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":654,"nodeType":"Block","src":"809:32:6","statements":[{"expression":{"expression":{"id":651,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"826:8:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":650,"id":653,"nodeType":"Return","src":"819:15:6"}]},"id":655,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:6","nodeType":"FunctionDefinition","parameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"759:2:6"},"returnParameters":{"id":650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":655,"src":"793:14:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":648,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:6"},"scope":656,"src":"742:99:6","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":657,"src":"608:235:6","usedErrors":[]}],"src":"86:758:6"},"id":6},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[1787],"SignedMath":[1892],"Strings":[885]},"id":886,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":658,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:7"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":659,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":886,"sourceUnit":1788,"src":"126:25:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":660,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":886,"sourceUnit":1893,"src":"152:31:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":661,"nodeType":"StructuredDocumentation","src":"185:34:7","text":" @dev String operations."},"fullyImplemented":true,"id":885,"linearizedBaseContracts":[885],"name":"Strings","nameLocation":"228:7:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":664,"mutability":"constant","name":"_SYMBOLS","nameLocation":"267:8:7","nodeType":"VariableDeclaration","scope":885,"src":"242:54:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":662,"name":"bytes16","nodeType":"ElementaryTypeName","src":"242:7:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"278:18:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":667,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"325:15:7","nodeType":"VariableDeclaration","scope":885,"src":"302:43:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":665,"name":"uint8","nodeType":"ElementaryTypeName","src":"302:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"343:2:7","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":714,"nodeType":"Block","src":"518:625:7","statements":[{"id":713,"nodeType":"UncheckedBlock","src":"528:609:7","statements":[{"assignments":[676],"declarations":[{"constant":false,"id":676,"mutability":"mutable","name":"length","nameLocation":"560:6:7","nodeType":"VariableDeclaration","scope":713,"src":"552:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"552:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":683,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":679,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"580:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":677,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"569:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1787_$","typeString":"type(library Math)"}},"id":678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1624,"src":"569:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"569:17:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"589:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"569:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"552:38:7"},{"assignments":[685],"declarations":[{"constant":false,"id":685,"mutability":"mutable","name":"buffer","nameLocation":"618:6:7","nodeType":"VariableDeclaration","scope":713,"src":"604:20:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":684,"name":"string","nodeType":"ElementaryTypeName","src":"604:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":690,"initialValue":{"arguments":[{"id":688,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"638:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"627:10:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":686,"name":"string","nodeType":"ElementaryTypeName","src":"631:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"627:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"604:41:7"},{"assignments":[692],"declarations":[{"constant":false,"id":692,"mutability":"mutable","name":"ptr","nameLocation":"667:3:7","nodeType":"VariableDeclaration","scope":713,"src":"659:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":691,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":693,"nodeType":"VariableDeclarationStatement","src":"659:11:7"},{"AST":{"nodeType":"YulBlock","src":"740:67:7","statements":[{"nodeType":"YulAssignment","src":"758:35:7","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"769:6:7"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"781:2:7","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"785:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:7"},"nodeType":"YulFunctionCall","src":"777:15:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:7"},"nodeType":"YulFunctionCall","src":"765:28:7"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"758:3:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":685,"isOffset":false,"isSlot":false,"src":"769:6:7","valueSize":1},{"declaration":676,"isOffset":false,"isSlot":false,"src":"785:6:7","valueSize":1},{"declaration":692,"isOffset":false,"isSlot":false,"src":"758:3:7","valueSize":1}],"id":694,"nodeType":"InlineAssembly","src":"731:76:7"},{"body":{"id":709,"nodeType":"Block","src":"833:267:7","statements":[{"expression":{"id":697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"851:5:7","subExpression":{"id":696,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"851:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":698,"nodeType":"ExpressionStatement","src":"851:5:7"},{"AST":{"nodeType":"YulBlock","src":"934:84:7","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"964:3:7"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"978:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"985:2:7","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"974:3:7"},"nodeType":"YulFunctionCall","src":"974:14:7"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"990:8:7"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"969:4:7"},"nodeType":"YulFunctionCall","src":"969:30:7"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"956:7:7"},"nodeType":"YulFunctionCall","src":"956:44:7"},"nodeType":"YulExpressionStatement","src":"956:44:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":664,"isOffset":false,"isSlot":false,"src":"990:8:7","valueSize":1},{"declaration":692,"isOffset":false,"isSlot":false,"src":"964:3:7","valueSize":1},{"declaration":670,"isOffset":false,"isSlot":false,"src":"978:5:7","valueSize":1}],"id":699,"nodeType":"InlineAssembly","src":"925:93:7"},{"expression":{"id":702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":700,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1035:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:2:7","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1035:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":703,"nodeType":"ExpressionStatement","src":"1035:11:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":704,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1068:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1077:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1068:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":708,"nodeType":"IfStatement","src":"1064:21:7","trueBody":{"id":707,"nodeType":"Break","src":"1080:5:7"}}]},"condition":{"hexValue":"74727565","id":695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"827:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":710,"nodeType":"WhileStatement","src":"820:280:7"},{"expression":{"id":711,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":685,"src":"1120:6:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":674,"id":712,"nodeType":"Return","src":"1113:13:7"}]}]},"documentation":{"id":668,"nodeType":"StructuredDocumentation","src":"352:90:7","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":715,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"456:8:7","nodeType":"FunctionDefinition","parameters":{"id":671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":670,"mutability":"mutable","name":"value","nameLocation":"473:5:7","nodeType":"VariableDeclaration","scope":715,"src":"465:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"464:15:7"},"returnParameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":715,"src":"503:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":672,"name":"string","nodeType":"ElementaryTypeName","src":"503:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"502:15:7"},"scope":885,"src":"447:696:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":742,"nodeType":"Block","src":"1313:103:7","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":727,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"1354:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1362:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1354:9:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1372:2:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1354:20:7","trueExpression":{"hexValue":"2d","id":730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1366:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":736,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"1400:5:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":734,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1892,"src":"1385:10:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$1892_$","typeString":"type(library SignedMath)"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":1891,"src":"1385:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1385:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":733,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[715,743],"referencedDeclaration":715,"src":"1376:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1376:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":725,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1337:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1337:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1337:71:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1330:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":723,"name":"string","nodeType":"ElementaryTypeName","src":"1330:6:7","typeDescriptions":{}}},"id":740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1330:79:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":722,"id":741,"nodeType":"Return","src":"1323:86:7"}]},"documentation":{"id":716,"nodeType":"StructuredDocumentation","src":"1149:89:7","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":743,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1252:8:7","nodeType":"FunctionDefinition","parameters":{"id":719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"value","nameLocation":"1268:5:7","nodeType":"VariableDeclaration","scope":743,"src":"1261:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":717,"name":"int256","nodeType":"ElementaryTypeName","src":"1261:6:7","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1260:14:7"},"returnParameters":{"id":722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":743,"src":"1298:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":720,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:15:7"},"scope":885,"src":"1243:173:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":762,"nodeType":"Block","src":"1595:100:7","statements":[{"id":761,"nodeType":"UncheckedBlock","src":"1605:84:7","statements":[{"expression":{"arguments":[{"id":752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"1648:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":755,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"1667:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":753,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1787,"src":"1655:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1787_$","typeString":"type(library Math)"}},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1747,"src":"1655:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1655:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1676:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1655:22:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":751,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[763,839,859],"referencedDeclaration":839,"src":"1636:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1636:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":750,"id":760,"nodeType":"Return","src":"1629:49:7"}]}]},"documentation":{"id":744,"nodeType":"StructuredDocumentation","src":"1422:94:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":763,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1530:11:7","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"value","nameLocation":"1550:5:7","nodeType":"VariableDeclaration","scope":763,"src":"1542:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":745,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1541:15:7"},"returnParameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":763,"src":"1580:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":748,"name":"string","nodeType":"ElementaryTypeName","src":"1580:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1579:15:7"},"scope":885,"src":"1521:174:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":838,"nodeType":"Block","src":"1908:347:7","statements":[{"assignments":[774],"declarations":[{"constant":false,"id":774,"mutability":"mutable","name":"buffer","nameLocation":"1931:6:7","nodeType":"VariableDeclaration","scope":838,"src":"1918:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":773,"name":"bytes","nodeType":"ElementaryTypeName","src":"1918:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":783,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1950:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":778,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"1954:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1950:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1950:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1940:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":775,"name":"bytes","nodeType":"ElementaryTypeName","src":"1944:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1940:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1918:47:7"},{"expression":{"id":788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":784,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"1975:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":786,"indexExpression":{"hexValue":"30","id":785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1982:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1975:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1987:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1975:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":789,"nodeType":"ExpressionStatement","src":"1975:15:7"},{"expression":{"id":794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":790,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"2000:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":792,"indexExpression":{"hexValue":"31","id":791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2007:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2000:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2012:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2000:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":795,"nodeType":"ExpressionStatement","src":"2000:15:7"},{"body":{"id":824,"nodeType":"Block","src":"2070:83:7","statements":[{"expression":{"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":810,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"2084:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":812,"indexExpression":{"id":811,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"2091:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2084:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":813,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":664,"src":"2096:8:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":817,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":814,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"2105:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:3:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2105:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2096:21:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2084:33:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":819,"nodeType":"ExpressionStatement","src":"2084:33:7"},{"expression":{"id":822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":820,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"2131:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2141:1:7","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2131:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":823,"nodeType":"ExpressionStatement","src":"2131:11:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":804,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"2058:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2062:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2058:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":825,"initializationExpression":{"assignments":[797],"declarations":[{"constant":false,"id":797,"mutability":"mutable","name":"i","nameLocation":"2038:1:7","nodeType":"VariableDeclaration","scope":825,"src":"2030:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":796,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":803,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2042:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":799,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":768,"src":"2046:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2042:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2055:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2042:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2030:26:7"},"loopExpression":{"expression":{"id":808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2065:3:7","subExpression":{"id":807,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"2067:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":809,"nodeType":"ExpressionStatement","src":"2065:3:7"},"nodeType":"ForStatement","src":"2025:128:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":827,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"2170:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2170:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2182:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":826,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2162:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":832,"nodeType":"ExpressionStatement","src":"2162:55:7"},{"expression":{"arguments":[{"id":835,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":774,"src":"2241:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2234:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":833,"name":"string","nodeType":"ElementaryTypeName","src":"2234:6:7","typeDescriptions":{}}},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2234:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":772,"id":837,"nodeType":"Return","src":"2227:21:7"}]},"documentation":{"id":764,"nodeType":"StructuredDocumentation","src":"1701:112:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":839,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1827:11:7","nodeType":"FunctionDefinition","parameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"mutability":"mutable","name":"value","nameLocation":"1847:5:7","nodeType":"VariableDeclaration","scope":839,"src":"1839:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":765,"name":"uint256","nodeType":"ElementaryTypeName","src":"1839:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":768,"mutability":"mutable","name":"length","nameLocation":"1862:6:7","nodeType":"VariableDeclaration","scope":839,"src":"1854:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":767,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1838:31:7"},"returnParameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":839,"src":"1893:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":770,"name":"string","nodeType":"ElementaryTypeName","src":"1893:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1892:15:7"},"scope":885,"src":"1818:437:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":858,"nodeType":"Block","src":"2480:76:7","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":852,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":842,"src":"2525:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2517:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":850,"name":"uint160","nodeType":"ElementaryTypeName","src":"2517:7:7","typeDescriptions":{}}},"id":853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2517:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":848,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:7","typeDescriptions":{}}},"id":854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2509:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":855,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":667,"src":"2533:15:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":847,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[763,839,859],"referencedDeclaration":839,"src":"2497:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2497:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":846,"id":857,"nodeType":"Return","src":"2490:59:7"}]},"documentation":{"id":840,"nodeType":"StructuredDocumentation","src":"2261:141:7","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":859,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2416:11:7","nodeType":"FunctionDefinition","parameters":{"id":843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":842,"mutability":"mutable","name":"addr","nameLocation":"2436:4:7","nodeType":"VariableDeclaration","scope":859,"src":"2428:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":841,"name":"address","nodeType":"ElementaryTypeName","src":"2428:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2427:14:7"},"returnParameters":{"id":846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":859,"src":"2465:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":844,"name":"string","nodeType":"ElementaryTypeName","src":"2465:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2464:15:7"},"scope":885,"src":"2407:149:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":883,"nodeType":"Block","src":"2711:66:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":872,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":862,"src":"2744:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2738:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":870,"name":"bytes","nodeType":"ElementaryTypeName","src":"2738:5:7","typeDescriptions":{}}},"id":873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2738:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":869,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2728:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2728:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":878,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":864,"src":"2767:1:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2761:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":876,"name":"bytes","nodeType":"ElementaryTypeName","src":"2761:5:7","typeDescriptions":{}}},"id":879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2761:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":875,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2751:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2751:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2728:42:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":868,"id":882,"nodeType":"Return","src":"2721:49:7"}]},"documentation":{"id":860,"nodeType":"StructuredDocumentation","src":"2562:66:7","text":" @dev Returns true if the two strings are equal."},"id":884,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2642:5:7","nodeType":"FunctionDefinition","parameters":{"id":865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":862,"mutability":"mutable","name":"a","nameLocation":"2662:1:7","nodeType":"VariableDeclaration","scope":884,"src":"2648:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":861,"name":"string","nodeType":"ElementaryTypeName","src":"2648:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":864,"mutability":"mutable","name":"b","nameLocation":"2679:1:7","nodeType":"VariableDeclaration","scope":884,"src":"2665:15:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":863,"name":"string","nodeType":"ElementaryTypeName","src":"2665:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2647:34:7"},"returnParameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":884,"src":"2705:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":866,"name":"bool","nodeType":"ElementaryTypeName","src":"2705:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2704:6:7"},"scope":885,"src":"2633:144:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":886,"src":"220:2559:7","usedErrors":[]}],"src":"101:2679:7"},"id":7},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[909],"IERC165":[921]},"id":910,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":887,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:8"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":888,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":910,"sourceUnit":922,"src":"124:23:8","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":890,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":921,"src":"754:7:8"},"id":891,"nodeType":"InheritanceSpecifier","src":"754:7:8"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":889,"nodeType":"StructuredDocumentation","src":"149:576:8","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":909,"linearizedBaseContracts":[909,921],"name":"ERC165","nameLocation":"744:6:8","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[920],"body":{"id":907,"nodeType":"Block","src":"920:64:8","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":900,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":894,"src":"937:11:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":902,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":921,"src":"957:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$921_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$921_$","typeString":"type(contract IERC165)"}],"id":901,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"952:4:8","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"952:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$921","typeString":"type(contract IERC165)"}},"id":904,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":899,"id":906,"nodeType":"Return","src":"930:47:8"}]},"documentation":{"id":892,"nodeType":"StructuredDocumentation","src":"768:56:8","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":908,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:8","nodeType":"FunctionDefinition","overrides":{"id":896,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:8"},"parameters":{"id":895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":894,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:8","nodeType":"VariableDeclaration","scope":908,"src":"856:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":893,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:8"},"returnParameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":908,"src":"914:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":897,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:8"},"scope":909,"src":"829:155:8","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":910,"src":"726:260:8","usedErrors":[]}],"src":"99:888:8"},"id":8},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[921]},"id":922,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":911,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":912,"nodeType":"StructuredDocumentation","src":"125:279:9","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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":921,"linearizedBaseContracts":[921],"name":"IERC165","nameLocation":"415:7:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":913,"nodeType":"StructuredDocumentation","src":"429:340:9","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[EIP 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":920,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:9","nodeType":"FunctionDefinition","parameters":{"id":916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":915,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:9","nodeType":"VariableDeclaration","scope":920,"src":"801:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":914,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:9"},"returnParameters":{"id":919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":918,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":920,"src":"844:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":917,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:9"},"scope":921,"src":"774:76:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":922,"src":"405:447:9","usedErrors":[]}],"src":"100:753:9"},"id":9},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[1787]},"id":1788,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":923,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":924,"nodeType":"StructuredDocumentation","src":"128:73:10","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":1787,"linearizedBaseContracts":[1787],"name":"Math","nameLocation":"210:4:10","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":928,"members":[{"id":925,"name":"Down","nameLocation":"245:4:10","nodeType":"EnumValue","src":"245:4:10"},{"id":926,"name":"Up","nameLocation":"287:2:10","nodeType":"EnumValue","src":"287:2:10"},{"id":927,"name":"Zero","nameLocation":"318:4:10","nodeType":"EnumValue","src":"318:4:10"}],"name":"Rounding","nameLocation":"226:8:10","nodeType":"EnumDefinition","src":"221:122:10"},{"body":{"id":945,"nodeType":"Block","src":"480:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":938,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"497:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":939,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"501:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":942,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"509:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:13:10","trueExpression":{"id":941,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"505:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":937,"id":944,"nodeType":"Return","src":"490:20:10"}]},"documentation":{"id":929,"nodeType":"StructuredDocumentation","src":"349:59:10","text":" @dev Returns the largest of two numbers."},"id":946,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:10","nodeType":"FunctionDefinition","parameters":{"id":934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":931,"mutability":"mutable","name":"a","nameLocation":"434:1:10","nodeType":"VariableDeclaration","scope":946,"src":"426:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":930,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":933,"mutability":"mutable","name":"b","nameLocation":"445:1:10","nodeType":"VariableDeclaration","scope":946,"src":"437:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":932,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:10"},"returnParameters":{"id":937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":946,"src":"471:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":935,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:10"},"scope":1787,"src":"413:104:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":963,"nodeType":"Block","src":"655:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":956,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":949,"src":"672:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":957,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"676:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"672:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":960,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"684:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"672:13:10","trueExpression":{"id":959,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":949,"src":"680:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":955,"id":962,"nodeType":"Return","src":"665:20:10"}]},"documentation":{"id":947,"nodeType":"StructuredDocumentation","src":"523:60:10","text":" @dev Returns the smallest of two numbers."},"id":964,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"597:3:10","nodeType":"FunctionDefinition","parameters":{"id":952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":949,"mutability":"mutable","name":"a","nameLocation":"609:1:10","nodeType":"VariableDeclaration","scope":964,"src":"601:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":948,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":951,"mutability":"mutable","name":"b","nameLocation":"620:1:10","nodeType":"VariableDeclaration","scope":964,"src":"612:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":950,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:10"},"returnParameters":{"id":955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":964,"src":"646:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":953,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:10"},"scope":1787,"src":"588:104:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":986,"nodeType":"Block","src":"876:82:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":974,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"931:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":975,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"935:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":977,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":978,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":967,"src":"941:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":979,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"945:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":981,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"940:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"950:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"940:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"930:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":973,"id":985,"nodeType":"Return","src":"923:28:10"}]},"documentation":{"id":965,"nodeType":"StructuredDocumentation","src":"698:102:10","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":987,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"814:7:10","nodeType":"FunctionDefinition","parameters":{"id":970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":967,"mutability":"mutable","name":"a","nameLocation":"830:1:10","nodeType":"VariableDeclaration","scope":987,"src":"822:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":966,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":969,"mutability":"mutable","name":"b","nameLocation":"841:1:10","nodeType":"VariableDeclaration","scope":987,"src":"833:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":968,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:22:10"},"returnParameters":{"id":973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":972,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":987,"src":"867:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":971,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"866:9:10"},"scope":1787,"src":"805:153:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1011,"nodeType":"Block","src":"1228:123:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":997,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"1316:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1316:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1001,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"1330:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1004,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1329:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1005,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":992,"src":"1339:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1329:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1316:28:10","trueExpression":{"hexValue":"30","id":1000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":996,"id":1010,"nodeType":"Return","src":"1309:35:10"}]},"documentation":{"id":988,"nodeType":"StructuredDocumentation","src":"964:188:10","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":1012,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1166:7:10","nodeType":"FunctionDefinition","parameters":{"id":993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":990,"mutability":"mutable","name":"a","nameLocation":"1182:1:10","nodeType":"VariableDeclaration","scope":1012,"src":"1174:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":992,"mutability":"mutable","name":"b","nameLocation":"1193:1:10","nodeType":"VariableDeclaration","scope":1012,"src":"1185:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":991,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:22:10"},"returnParameters":{"id":996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":995,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1012,"src":"1219:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":994,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1218:9:10"},"scope":1787,"src":"1157:194:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1134,"nodeType":"Block","src":"1765:4115:10","statements":[{"id":1133,"nodeType":"UncheckedBlock","src":"1775:4099:10","statements":[{"assignments":[1025],"declarations":[{"constant":false,"id":1025,"mutability":"mutable","name":"prod0","nameLocation":"2104:5:10","nodeType":"VariableDeclaration","scope":1133,"src":"2096:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1024,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1026,"nodeType":"VariableDeclarationStatement","src":"2096:13:10"},{"assignments":[1028],"declarations":[{"constant":false,"id":1028,"mutability":"mutable","name":"prod1","nameLocation":"2176:5:10","nodeType":"VariableDeclaration","scope":1133,"src":"2168:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1027,"name":"uint256","nodeType":"ElementaryTypeName","src":"2168:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1029,"nodeType":"VariableDeclarationStatement","src":"2168:13:10"},{"AST":{"nodeType":"YulBlock","src":"2248:157:10","statements":[{"nodeType":"YulVariableDeclaration","src":"2266:30:10","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2283:1:10"},{"name":"y","nodeType":"YulIdentifier","src":"2286:1:10"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2293:1:10","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2289:3:10"},"nodeType":"YulFunctionCall","src":"2289:6:10"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2276:6:10"},"nodeType":"YulFunctionCall","src":"2276:20:10"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2270:2:10","type":""}]},{"nodeType":"YulAssignment","src":"2313:18:10","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2326:1:10"},{"name":"y","nodeType":"YulIdentifier","src":"2329:1:10"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2322:3:10"},"nodeType":"YulFunctionCall","src":"2322:9:10"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2313:5:10"}]},{"nodeType":"YulAssignment","src":"2348:43:10","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2365:2:10"},{"name":"prod0","nodeType":"YulIdentifier","src":"2369:5:10"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2361:3:10"},"nodeType":"YulFunctionCall","src":"2361:14:10"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2380:2:10"},{"name":"prod0","nodeType":"YulIdentifier","src":"2384:5:10"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2377:2:10"},"nodeType":"YulFunctionCall","src":"2377:13:10"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2357:3:10"},"nodeType":"YulFunctionCall","src":"2357:34:10"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2348:5:10"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1025,"isOffset":false,"isSlot":false,"src":"2313:5:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"2369:5:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"2384:5:10","valueSize":1},{"declaration":1028,"isOffset":false,"isSlot":false,"src":"2348:5:10","valueSize":1},{"declaration":1015,"isOffset":false,"isSlot":false,"src":"2283:1:10","valueSize":1},{"declaration":1015,"isOffset":false,"isSlot":false,"src":"2326:1:10","valueSize":1},{"declaration":1017,"isOffset":false,"isSlot":false,"src":"2286:1:10","valueSize":1},{"declaration":1017,"isOffset":false,"isSlot":false,"src":"2329:1:10","valueSize":1}],"id":1030,"nodeType":"InlineAssembly","src":"2239:166:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1031,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"2486:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2495:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2486:10:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1039,"nodeType":"IfStatement","src":"2482:368:10","trueBody":{"id":1038,"nodeType":"Block","src":"2498:352:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1034,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"2816:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1035,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"2824:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2816:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1023,"id":1037,"nodeType":"Return","src":"2809:26:10"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1041,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"2960:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1042,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"2974:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2960:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":1044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2981:23:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":1040,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2952:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2952:53:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1046,"nodeType":"ExpressionStatement","src":"2952:53:10"},{"assignments":[1048],"declarations":[{"constant":false,"id":1048,"mutability":"mutable","name":"remainder","nameLocation":"3269:9:10","nodeType":"VariableDeclaration","scope":1133,"src":"3261:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1047,"name":"uint256","nodeType":"ElementaryTypeName","src":"3261:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1049,"nodeType":"VariableDeclarationStatement","src":"3261:17:10"},{"AST":{"nodeType":"YulBlock","src":"3301:291:10","statements":[{"nodeType":"YulAssignment","src":"3370:38:10","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3390:1:10"},{"name":"y","nodeType":"YulIdentifier","src":"3393:1:10"},{"name":"denominator","nodeType":"YulIdentifier","src":"3396:11:10"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3383:6:10"},"nodeType":"YulFunctionCall","src":"3383:25:10"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3370:9:10"}]},{"nodeType":"YulAssignment","src":"3490:41:10","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3503:5:10"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3513:9:10"},{"name":"prod0","nodeType":"YulIdentifier","src":"3524:5:10"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3510:2:10"},"nodeType":"YulFunctionCall","src":"3510:20:10"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3499:3:10"},"nodeType":"YulFunctionCall","src":"3499:32:10"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3490:5:10"}]},{"nodeType":"YulAssignment","src":"3548:30:10","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3561:5:10"},{"name":"remainder","nodeType":"YulIdentifier","src":"3568:9:10"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3557:3:10"},"nodeType":"YulFunctionCall","src":"3557:21:10"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3548:5:10"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1019,"isOffset":false,"isSlot":false,"src":"3396:11:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"3524:5:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"3548:5:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"3561:5:10","valueSize":1},{"declaration":1028,"isOffset":false,"isSlot":false,"src":"3490:5:10","valueSize":1},{"declaration":1028,"isOffset":false,"isSlot":false,"src":"3503:5:10","valueSize":1},{"declaration":1048,"isOffset":false,"isSlot":false,"src":"3370:9:10","valueSize":1},{"declaration":1048,"isOffset":false,"isSlot":false,"src":"3513:9:10","valueSize":1},{"declaration":1048,"isOffset":false,"isSlot":false,"src":"3568:9:10","valueSize":1},{"declaration":1015,"isOffset":false,"isSlot":false,"src":"3390:1:10","valueSize":1},{"declaration":1017,"isOffset":false,"isSlot":false,"src":"3393:1:10","valueSize":1}],"id":1050,"nodeType":"InlineAssembly","src":"3292:300:10"},{"assignments":[1052],"declarations":[{"constant":false,"id":1052,"mutability":"mutable","name":"twos","nameLocation":"3907:4:10","nodeType":"VariableDeclaration","scope":1133,"src":"3899:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1051,"name":"uint256","nodeType":"ElementaryTypeName","src":"3899:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1060,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1053,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"3914:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3929:12:10","subExpression":{"id":1054,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"3930:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3944:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3929:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1058,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3928:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3914:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3899:47:10"},{"AST":{"nodeType":"YulBlock","src":"3969:362:10","statements":[{"nodeType":"YulAssignment","src":"4034:37:10","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4053:11:10"},{"name":"twos","nodeType":"YulIdentifier","src":"4066:4:10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4049:3:10"},"nodeType":"YulFunctionCall","src":"4049:22:10"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4034:11:10"}]},{"nodeType":"YulAssignment","src":"4138:25:10","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4151:5:10"},{"name":"twos","nodeType":"YulIdentifier","src":"4158:4:10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4147:3:10"},"nodeType":"YulFunctionCall","src":"4147:16:10"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4138:5:10"}]},{"nodeType":"YulAssignment","src":"4278:39:10","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4298:1:10","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4301:4:10"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4294:3:10"},"nodeType":"YulFunctionCall","src":"4294:12:10"},{"name":"twos","nodeType":"YulIdentifier","src":"4308:4:10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4290:3:10"},"nodeType":"YulFunctionCall","src":"4290:23:10"},{"kind":"number","nodeType":"YulLiteral","src":"4315:1:10","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4286:3:10"},"nodeType":"YulFunctionCall","src":"4286:31:10"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4278:4:10"}]}]},"evmVersion":"london","externalReferences":[{"declaration":1019,"isOffset":false,"isSlot":false,"src":"4034:11:10","valueSize":1},{"declaration":1019,"isOffset":false,"isSlot":false,"src":"4053:11:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"4138:5:10","valueSize":1},{"declaration":1025,"isOffset":false,"isSlot":false,"src":"4151:5:10","valueSize":1},{"declaration":1052,"isOffset":false,"isSlot":false,"src":"4066:4:10","valueSize":1},{"declaration":1052,"isOffset":false,"isSlot":false,"src":"4158:4:10","valueSize":1},{"declaration":1052,"isOffset":false,"isSlot":false,"src":"4278:4:10","valueSize":1},{"declaration":1052,"isOffset":false,"isSlot":false,"src":"4301:4:10","valueSize":1},{"declaration":1052,"isOffset":false,"isSlot":false,"src":"4308:4:10","valueSize":1}],"id":1061,"nodeType":"InlineAssembly","src":"3960:371:10"},{"expression":{"id":1066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1062,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"4397:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1063,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"4406:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1064,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"4414:4:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4406:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4397:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1067,"nodeType":"ExpressionStatement","src":"4397:21:10"},{"assignments":[1069],"declarations":[{"constant":false,"id":1069,"mutability":"mutable","name":"inverse","nameLocation":"4744:7:10","nodeType":"VariableDeclaration","scope":1133,"src":"4736:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1068,"name":"uint256","nodeType":"ElementaryTypeName","src":"4736:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1076,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4755:1:10","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1071,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"4759:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4755:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1073,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4754:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4774:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4754:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4736:39:10"},{"expression":{"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1077,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"4992:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5003:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1079,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5007:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1080,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5021:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5007:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4992:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1084,"nodeType":"ExpressionStatement","src":"4992:36:10"},{"expression":{"id":1091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1085,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5061:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5072:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1087,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5076:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1088,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5090:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5076:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5061:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1092,"nodeType":"ExpressionStatement","src":"5061:36:10"},{"expression":{"id":1099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1093,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5131:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5142:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1095,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5146:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1096,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5160:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5146:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5131:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1100,"nodeType":"ExpressionStatement","src":"5131:36:10"},{"expression":{"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1101,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5201:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5212:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1103,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5216:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1104,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5230:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5216:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5201:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1108,"nodeType":"ExpressionStatement","src":"5201:36:10"},{"expression":{"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1109,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5271:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1111,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5286:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1112,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5300:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5271:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1116,"nodeType":"ExpressionStatement","src":"5271:36:10"},{"expression":{"id":1123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1117,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5342:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5353:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1119,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"5357:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1120,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5371:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5357:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5342:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1124,"nodeType":"ExpressionStatement","src":"5342:36:10"},{"expression":{"id":1129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1125,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"5812:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1126,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"5821:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1127,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5829:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5821:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5812:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1130,"nodeType":"ExpressionStatement","src":"5812:24:10"},{"expression":{"id":1131,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"5857:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1023,"id":1132,"nodeType":"Return","src":"5850:13:10"}]}]},"documentation":{"id":1013,"nodeType":"StructuredDocumentation","src":"1357:305:10","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":1135,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1676:6:10","nodeType":"FunctionDefinition","parameters":{"id":1020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1015,"mutability":"mutable","name":"x","nameLocation":"1691:1:10","nodeType":"VariableDeclaration","scope":1135,"src":"1683:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1014,"name":"uint256","nodeType":"ElementaryTypeName","src":"1683:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1017,"mutability":"mutable","name":"y","nameLocation":"1702:1:10","nodeType":"VariableDeclaration","scope":1135,"src":"1694:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1016,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1019,"mutability":"mutable","name":"denominator","nameLocation":"1713:11:10","nodeType":"VariableDeclaration","scope":1135,"src":"1705:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1018,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1682:43:10"},"returnParameters":{"id":1023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1022,"mutability":"mutable","name":"result","nameLocation":"1757:6:10","nodeType":"VariableDeclaration","scope":1135,"src":"1749:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1021,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1748:16:10"},"scope":1787,"src":"1667:4213:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1178,"nodeType":"Block","src":"6122:189:10","statements":[{"assignments":[1151],"declarations":[{"constant":false,"id":1151,"mutability":"mutable","name":"result","nameLocation":"6140:6:10","nodeType":"VariableDeclaration","scope":1178,"src":"6132:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"6132:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1157,"initialValue":{"arguments":[{"id":1153,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1138,"src":"6156:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1154,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1140,"src":"6159:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1155,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"6162:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1152,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1135,1179],"referencedDeclaration":1135,"src":"6149:6:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6149:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6132:42:10"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"id":1161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1158,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"6188:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1159,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"6200:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$928_$","typeString":"type(enum Math.Rounding)"}},"id":1160,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":926,"src":"6200:11:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"src":"6188:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1163,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1138,"src":"6222:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1164,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1140,"src":"6225:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1165,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"6228:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1162,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"6215:6:10","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6215:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6243:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6215:29:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6188:56:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1175,"nodeType":"IfStatement","src":"6184:98:10","trueBody":{"id":1174,"nodeType":"Block","src":"6246:36:10","statements":[{"expression":{"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1170,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"6260:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6270:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6260:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1173,"nodeType":"ExpressionStatement","src":"6260:11:10"}]}},{"expression":{"id":1176,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"6298:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1149,"id":1177,"nodeType":"Return","src":"6291:13:10"}]},"documentation":{"id":1136,"nodeType":"StructuredDocumentation","src":"5886:121:10","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":1179,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6021:6:10","nodeType":"FunctionDefinition","parameters":{"id":1146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1138,"mutability":"mutable","name":"x","nameLocation":"6036:1:10","nodeType":"VariableDeclaration","scope":1179,"src":"6028:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1137,"name":"uint256","nodeType":"ElementaryTypeName","src":"6028:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1140,"mutability":"mutable","name":"y","nameLocation":"6047:1:10","nodeType":"VariableDeclaration","scope":1179,"src":"6039:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1139,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1142,"mutability":"mutable","name":"denominator","nameLocation":"6058:11:10","nodeType":"VariableDeclaration","scope":1179,"src":"6050:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1141,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1145,"mutability":"mutable","name":"rounding","nameLocation":"6080:8:10","nodeType":"VariableDeclaration","scope":1179,"src":"6071:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"typeName":{"id":1144,"nodeType":"UserDefinedTypeName","pathNode":{"id":1143,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":928,"src":"6071:8:10"},"referencedDeclaration":928,"src":"6071:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"6027:62:10"},"returnParameters":{"id":1149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1148,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1179,"src":"6113:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1147,"name":"uint256","nodeType":"ElementaryTypeName","src":"6113:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6112:9:10"},"scope":1787,"src":"6012:299:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1290,"nodeType":"Block","src":"6587:1585:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1187,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"6601:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6606:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6601:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1193,"nodeType":"IfStatement","src":"6597:45:10","trueBody":{"id":1192,"nodeType":"Block","src":"6609:33:10","statements":[{"expression":{"hexValue":"30","id":1190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6630:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1186,"id":1191,"nodeType":"Return","src":"6623:8:10"}]}},{"assignments":[1195],"declarations":[{"constant":false,"id":1195,"mutability":"mutable","name":"result","nameLocation":"7329:6:10","nodeType":"VariableDeclaration","scope":1290,"src":"7321:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1194,"name":"uint256","nodeType":"ElementaryTypeName","src":"7321:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1204,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7338:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1198,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7349:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1197,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[1459,1495],"referencedDeclaration":1459,"src":"7344:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7344:7:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7355:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7344:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1202,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7343:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7338:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7321:36:10"},{"id":1289,"nodeType":"UncheckedBlock","src":"7758:408:10","statements":[{"expression":{"id":1214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1205,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7782:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1206,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7792:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1207,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7801:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1208,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7805:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7792:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1211,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7791:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7816:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7791:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7782:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1215,"nodeType":"ExpressionStatement","src":"7782:35:10"},{"expression":{"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1216,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7831:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1217,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7841:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1218,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7850:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1219,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7854:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7850:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7841:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1222,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7840:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7865:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7840:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7831:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1226,"nodeType":"ExpressionStatement","src":"7831:35:10"},{"expression":{"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1227,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7880:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1228,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7890:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1229,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7899:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1230,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7903:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7890:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1233,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7889:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7914:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7889:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7880:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1237,"nodeType":"ExpressionStatement","src":"7880:35:10"},{"expression":{"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1238,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7929:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1239,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7939:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1240,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7948:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1241,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7952:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7948:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7939:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1244,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7938:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7938:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7929:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1248,"nodeType":"ExpressionStatement","src":"7929:35:10"},{"expression":{"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1249,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7978:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1250,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7988:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1251,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"7997:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8001:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7997:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7988:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1255,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7987:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8012:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7987:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7978:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1259,"nodeType":"ExpressionStatement","src":"7978:35:10"},{"expression":{"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1260,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8027:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1261,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8037:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1262,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8046:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1263,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8050:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8046:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8037:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1266,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8036:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8061:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8036:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8027:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1270,"nodeType":"ExpressionStatement","src":"8027:35:10"},{"expression":{"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1271,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8076:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1272,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8086:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1273,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8095:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1274,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8099:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8095:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8086:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8085:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8110:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8085:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8076:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1281,"nodeType":"ExpressionStatement","src":"8076:35:10"},{"expression":{"arguments":[{"id":1283,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8136:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1284,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8144:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1285,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8148:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8144:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1282,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"8132:3:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8132:23:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1186,"id":1288,"nodeType":"Return","src":"8125:30:10"}]}]},"documentation":{"id":1180,"nodeType":"StructuredDocumentation","src":"6317:208:10","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":1291,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6539:4:10","nodeType":"FunctionDefinition","parameters":{"id":1183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1182,"mutability":"mutable","name":"a","nameLocation":"6552:1:10","nodeType":"VariableDeclaration","scope":1291,"src":"6544:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1181,"name":"uint256","nodeType":"ElementaryTypeName","src":"6544:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6543:11:10"},"returnParameters":{"id":1186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1291,"src":"6578:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1184,"name":"uint256","nodeType":"ElementaryTypeName","src":"6578:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6577:9:10"},"scope":1787,"src":"6530:1642:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1326,"nodeType":"Block","src":"8348:161:10","statements":[{"id":1325,"nodeType":"UncheckedBlock","src":"8358:145:10","statements":[{"assignments":[1303],"declarations":[{"constant":false,"id":1303,"mutability":"mutable","name":"result","nameLocation":"8390:6:10","nodeType":"VariableDeclaration","scope":1325,"src":"8382:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"8382:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1307,"initialValue":{"arguments":[{"id":1305,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"8404:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1304,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[1291,1327],"referencedDeclaration":1291,"src":"8399:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8399:7:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8382:24:10"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1308,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"8427:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1309,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1297,"src":"8437:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1310,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"8449:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$928_$","typeString":"type(enum Math.Rounding)"}},"id":1311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":926,"src":"8449:11:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"src":"8437:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1313,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"8464:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1314,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"8473:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1316,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"8482:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8437:46:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8490:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8437:54:10","trueExpression":{"hexValue":"31","id":1319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8486:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1322,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8436:56:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8427:65:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1301,"id":1324,"nodeType":"Return","src":"8420:72:10"}]}]},"documentation":{"id":1292,"nodeType":"StructuredDocumentation","src":"8178:89:10","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":1327,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8281:4:10","nodeType":"FunctionDefinition","parameters":{"id":1298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1294,"mutability":"mutable","name":"a","nameLocation":"8294:1:10","nodeType":"VariableDeclaration","scope":1327,"src":"8286:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1293,"name":"uint256","nodeType":"ElementaryTypeName","src":"8286:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1297,"mutability":"mutable","name":"rounding","nameLocation":"8306:8:10","nodeType":"VariableDeclaration","scope":1327,"src":"8297:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"typeName":{"id":1296,"nodeType":"UserDefinedTypeName","pathNode":{"id":1295,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":928,"src":"8297:8:10"},"referencedDeclaration":928,"src":"8297:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8285:30:10"},"returnParameters":{"id":1301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1327,"src":"8339:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1299,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8338:9:10"},"scope":1787,"src":"8272:237:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1458,"nodeType":"Block","src":"8694:922:10","statements":[{"assignments":[1336],"declarations":[{"constant":false,"id":1336,"mutability":"mutable","name":"result","nameLocation":"8712:6:10","nodeType":"VariableDeclaration","scope":1458,"src":"8704:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1335,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1338,"initialValue":{"hexValue":"30","id":1337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8721:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8704:18:10"},{"id":1455,"nodeType":"UncheckedBlock","src":"8732:855:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1339,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"8760:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8769:3:10","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8760:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8760:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1353,"nodeType":"IfStatement","src":"8756:99:10","trueBody":{"id":1352,"nodeType":"Block","src":"8778:77:10","statements":[{"expression":{"id":1346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1344,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"8796:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:3:10","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8796:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1347,"nodeType":"ExpressionStatement","src":"8796:13:10"},{"expression":{"id":1350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1348,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"8827:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":1349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8837:3:10","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8827:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1351,"nodeType":"ExpressionStatement","src":"8827:13:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1354,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"8872:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8881:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8872:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8886:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8872:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1368,"nodeType":"IfStatement","src":"8868:96:10","trueBody":{"id":1367,"nodeType":"Block","src":"8889:75:10","statements":[{"expression":{"id":1361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"8907:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8917:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8907:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1362,"nodeType":"ExpressionStatement","src":"8907:12:10"},{"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1363,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"8937:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8947:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8937:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1366,"nodeType":"ExpressionStatement","src":"8937:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1369,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"8981:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8981:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8995:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8981:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1383,"nodeType":"IfStatement","src":"8977:96:10","trueBody":{"id":1382,"nodeType":"Block","src":"8998:75:10","statements":[{"expression":{"id":1376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1374,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9016:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9026:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9016:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1377,"nodeType":"ExpressionStatement","src":"9016:12:10"},{"expression":{"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1378,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9046:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9056:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9046:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1381,"nodeType":"ExpressionStatement","src":"9046:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1384,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9090:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9090:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9104:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9090:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1398,"nodeType":"IfStatement","src":"9086:96:10","trueBody":{"id":1397,"nodeType":"Block","src":"9107:75:10","statements":[{"expression":{"id":1391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9125:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9135:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9125:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1392,"nodeType":"ExpressionStatement","src":"9125:12:10"},{"expression":{"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1393,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9155:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9155:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1396,"nodeType":"ExpressionStatement","src":"9155:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9199:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9208:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9199:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9212:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9199:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1413,"nodeType":"IfStatement","src":"9195:93:10","trueBody":{"id":1412,"nodeType":"Block","src":"9215:73:10","statements":[{"expression":{"id":1406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1404,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9233:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":1405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9243:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9233:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1407,"nodeType":"ExpressionStatement","src":"9233:11:10"},{"expression":{"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1408,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9262:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9272:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9262:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1411,"nodeType":"ExpressionStatement","src":"9262:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9305:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":1415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9314:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9305:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9318:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9305:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1428,"nodeType":"IfStatement","src":"9301:93:10","trueBody":{"id":1427,"nodeType":"Block","src":"9321:73:10","statements":[{"expression":{"id":1421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1419,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9339:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9349:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9339:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1422,"nodeType":"ExpressionStatement","src":"9339:11:10"},{"expression":{"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1423,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9368:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9378:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9368:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1426,"nodeType":"ExpressionStatement","src":"9368:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1429,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9411:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":1430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9420:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9411:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9424:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9411:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1443,"nodeType":"IfStatement","src":"9407:93:10","trueBody":{"id":1442,"nodeType":"Block","src":"9427:73:10","statements":[{"expression":{"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1434,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9445:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":1435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9455:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9445:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1437,"nodeType":"ExpressionStatement","src":"9445:11:10"},{"expression":{"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1438,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9474:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9484:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9474:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1441,"nodeType":"ExpressionStatement","src":"9474:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"9517:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9526:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9517:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9530:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9517:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1454,"nodeType":"IfStatement","src":"9513:64:10","trueBody":{"id":1453,"nodeType":"Block","src":"9533:44:10","statements":[{"expression":{"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1449,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9551:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9561:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9551:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1452,"nodeType":"ExpressionStatement","src":"9551:11:10"}]}}]},{"expression":{"id":1456,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"9603:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1334,"id":1457,"nodeType":"Return","src":"9596:13:10"}]},"documentation":{"id":1328,"nodeType":"StructuredDocumentation","src":"8515:113:10","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":1459,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8642:4:10","nodeType":"FunctionDefinition","parameters":{"id":1331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1330,"mutability":"mutable","name":"value","nameLocation":"8655:5:10","nodeType":"VariableDeclaration","scope":1459,"src":"8647:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1329,"name":"uint256","nodeType":"ElementaryTypeName","src":"8647:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8646:15:10"},"returnParameters":{"id":1334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1459,"src":"8685:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"8685:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8684:9:10"},"scope":1787,"src":"8633:983:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1494,"nodeType":"Block","src":"9849:165:10","statements":[{"id":1493,"nodeType":"UncheckedBlock","src":"9859:149:10","statements":[{"assignments":[1471],"declarations":[{"constant":false,"id":1471,"mutability":"mutable","name":"result","nameLocation":"9891:6:10","nodeType":"VariableDeclaration","scope":1493,"src":"9883:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1470,"name":"uint256","nodeType":"ElementaryTypeName","src":"9883:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1475,"initialValue":{"arguments":[{"id":1473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1462,"src":"9905:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1472,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[1459,1495],"referencedDeclaration":1459,"src":"9900:4:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9900:11:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9883:28:10"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1476,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1471,"src":"9932:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"id":1480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1477,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1465,"src":"9942:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1478,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"9954:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$928_$","typeString":"type(enum Math.Rounding)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":926,"src":"9954:11:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"src":"9942:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9969:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1482,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1471,"src":"9974:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1484,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1462,"src":"9983:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9942:46:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9995:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9942:54:10","trueExpression":{"hexValue":"31","id":1487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9991:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1490,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9941:56:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9932:65:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1469,"id":1492,"nodeType":"Return","src":"9925:72:10"}]}]},"documentation":{"id":1460,"nodeType":"StructuredDocumentation","src":"9622:142:10","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1495,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9778:4:10","nodeType":"FunctionDefinition","parameters":{"id":1466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1462,"mutability":"mutable","name":"value","nameLocation":"9791:5:10","nodeType":"VariableDeclaration","scope":1495,"src":"9783:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1461,"name":"uint256","nodeType":"ElementaryTypeName","src":"9783:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1465,"mutability":"mutable","name":"rounding","nameLocation":"9807:8:10","nodeType":"VariableDeclaration","scope":1495,"src":"9798:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"typeName":{"id":1464,"nodeType":"UserDefinedTypeName","pathNode":{"id":1463,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":928,"src":"9798:8:10"},"referencedDeclaration":928,"src":"9798:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9782:34:10"},"returnParameters":{"id":1469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1468,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1495,"src":"9840:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1467,"name":"uint256","nodeType":"ElementaryTypeName","src":"9840:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9839:9:10"},"scope":1787,"src":"9769:245:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1623,"nodeType":"Block","src":"10201:854:10","statements":[{"assignments":[1504],"declarations":[{"constant":false,"id":1504,"mutability":"mutable","name":"result","nameLocation":"10219:6:10","nodeType":"VariableDeclaration","scope":1623,"src":"10211:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1503,"name":"uint256","nodeType":"ElementaryTypeName","src":"10211:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1506,"initialValue":{"hexValue":"30","id":1505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10228:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10211:18:10"},{"id":1620,"nodeType":"UncheckedBlock","src":"10239:787:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1507,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10267:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10276:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10282:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10276:8:10","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10267:17:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1523,"nodeType":"IfStatement","src":"10263:103:10","trueBody":{"id":1522,"nodeType":"Block","src":"10286:80:10","statements":[{"expression":{"id":1516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1512,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10304:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10313:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10313:8:10","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10304:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1517,"nodeType":"ExpressionStatement","src":"10304:17:10"},{"expression":{"id":1520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1518,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10339:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10349:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10339:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1521,"nodeType":"ExpressionStatement","src":"10339:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10383:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10392:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10398:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10392:8:10","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10383:17:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1540,"nodeType":"IfStatement","src":"10379:103:10","trueBody":{"id":1539,"nodeType":"Block","src":"10402:80:10","statements":[{"expression":{"id":1533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1529,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10420:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10435:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10429:8:10","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10420:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1534,"nodeType":"ExpressionStatement","src":"10420:17:10"},{"expression":{"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1535,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10455:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10465:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10455:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1538,"nodeType":"ExpressionStatement","src":"10455:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1541,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10499:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10508:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10514:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10508:8:10","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10499:17:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1557,"nodeType":"IfStatement","src":"10495:103:10","trueBody":{"id":1556,"nodeType":"Block","src":"10518:80:10","statements":[{"expression":{"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1546,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10536:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10545:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10551:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10545:8:10","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10536:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1551,"nodeType":"ExpressionStatement","src":"10536:17:10"},{"expression":{"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1552,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10571:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10581:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10571:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1555,"nodeType":"ExpressionStatement","src":"10571:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10615:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10624:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10630:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10624:7:10","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10615:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1574,"nodeType":"IfStatement","src":"10611:100:10","trueBody":{"id":1573,"nodeType":"Block","src":"10633:78:10","statements":[{"expression":{"id":1567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1563,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10651:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10660:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10666:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10660:7:10","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10651:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1568,"nodeType":"ExpressionStatement","src":"10651:16:10"},{"expression":{"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1569,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10685:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10695:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10685:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1572,"nodeType":"ExpressionStatement","src":"10685:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1575,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10728:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10737:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10743:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10737:7:10","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10728:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1591,"nodeType":"IfStatement","src":"10724:100:10","trueBody":{"id":1590,"nodeType":"Block","src":"10746:78:10","statements":[{"expression":{"id":1584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1580,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10764:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10773:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10779:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10773:7:10","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10764:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1585,"nodeType":"ExpressionStatement","src":"10764:16:10"},{"expression":{"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1586,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10798:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10808:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10798:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1589,"nodeType":"ExpressionStatement","src":"10798:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1592,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10841:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1595,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10850:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10856:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10850:7:10","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10841:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1608,"nodeType":"IfStatement","src":"10837:100:10","trueBody":{"id":1607,"nodeType":"Block","src":"10859:78:10","statements":[{"expression":{"id":1601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10877:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10886:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10892:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10886:7:10","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10877:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1602,"nodeType":"ExpressionStatement","src":"10877:16:10"},{"expression":{"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1603,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10911:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10921:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10911:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1606,"nodeType":"ExpressionStatement","src":"10911:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1609,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"10954:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10963:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10969:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10963:7:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10954:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1619,"nodeType":"IfStatement","src":"10950:66:10","trueBody":{"id":1618,"nodeType":"Block","src":"10972:44:10","statements":[{"expression":{"id":1616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1614,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"10990:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11000:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10990:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1617,"nodeType":"ExpressionStatement","src":"10990:11:10"}]}}]},{"expression":{"id":1621,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"11042:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1502,"id":1622,"nodeType":"Return","src":"11035:13:10"}]},"documentation":{"id":1496,"nodeType":"StructuredDocumentation","src":"10020:114:10","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":1624,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10148:5:10","nodeType":"FunctionDefinition","parameters":{"id":1499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1498,"mutability":"mutable","name":"value","nameLocation":"10162:5:10","nodeType":"VariableDeclaration","scope":1624,"src":"10154:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1497,"name":"uint256","nodeType":"ElementaryTypeName","src":"10154:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10153:15:10"},"returnParameters":{"id":1502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1501,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1624,"src":"10192:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1500,"name":"uint256","nodeType":"ElementaryTypeName","src":"10192:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10191:9:10"},"scope":1787,"src":"10139:916:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1659,"nodeType":"Block","src":"11290:167:10","statements":[{"id":1658,"nodeType":"UncheckedBlock","src":"11300:151:10","statements":[{"assignments":[1636],"declarations":[{"constant":false,"id":1636,"mutability":"mutable","name":"result","nameLocation":"11332:6:10","nodeType":"VariableDeclaration","scope":1658,"src":"11324:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1635,"name":"uint256","nodeType":"ElementaryTypeName","src":"11324:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1640,"initialValue":{"arguments":[{"id":1638,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1627,"src":"11347:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1637,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1624,1660],"referencedDeclaration":1624,"src":"11341:5:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11341:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11324:29:10"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1641,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"11374:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"id":1645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1642,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1630,"src":"11384:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1643,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"11396:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$928_$","typeString":"type(enum Math.Rounding)"}},"id":1644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":926,"src":"11396:11:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"src":"11384:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11411:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1647,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"11417:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1649,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1627,"src":"11426:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11384:47:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11438:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11384:55:10","trueExpression":{"hexValue":"31","id":1652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11434:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1655,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11383:57:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11374:66:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1634,"id":1657,"nodeType":"Return","src":"11367:73:10"}]}]},"documentation":{"id":1625,"nodeType":"StructuredDocumentation","src":"11061:143:10","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1660,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11218:5:10","nodeType":"FunctionDefinition","parameters":{"id":1631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1627,"mutability":"mutable","name":"value","nameLocation":"11232:5:10","nodeType":"VariableDeclaration","scope":1660,"src":"11224:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1626,"name":"uint256","nodeType":"ElementaryTypeName","src":"11224:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1630,"mutability":"mutable","name":"rounding","nameLocation":"11248:8:10","nodeType":"VariableDeclaration","scope":1660,"src":"11239:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"typeName":{"id":1629,"nodeType":"UserDefinedTypeName","pathNode":{"id":1628,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":928,"src":"11239:8:10"},"referencedDeclaration":928,"src":"11239:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11223:34:10"},"returnParameters":{"id":1634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1660,"src":"11281:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1632,"name":"uint256","nodeType":"ElementaryTypeName","src":"11281:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11280:9:10"},"scope":1787,"src":"11209:248:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1746,"nodeType":"Block","src":"11771:600:10","statements":[{"assignments":[1669],"declarations":[{"constant":false,"id":1669,"mutability":"mutable","name":"result","nameLocation":"11789:6:10","nodeType":"VariableDeclaration","scope":1746,"src":"11781:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1668,"name":"uint256","nodeType":"ElementaryTypeName","src":"11781:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1671,"initialValue":{"hexValue":"30","id":1670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11798:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11781:18:10"},{"id":1743,"nodeType":"UncheckedBlock","src":"11809:533:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1672,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"11837:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11846:3:10","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11837:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11852:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11837:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1686,"nodeType":"IfStatement","src":"11833:98:10","trueBody":{"id":1685,"nodeType":"Block","src":"11855:76:10","statements":[{"expression":{"id":1679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1677,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"11873:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11883:3:10","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11873:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1680,"nodeType":"ExpressionStatement","src":"11873:13:10"},{"expression":{"id":1683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1681,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"11904:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11914:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11904:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1684,"nodeType":"ExpressionStatement","src":"11904:12:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1687,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"11948:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11957:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11948:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11962:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11948:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1701,"nodeType":"IfStatement","src":"11944:95:10","trueBody":{"id":1700,"nodeType":"Block","src":"11965:74:10","statements":[{"expression":{"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1692,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"11983:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11993:2:10","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11983:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1695,"nodeType":"ExpressionStatement","src":"11983:12:10"},{"expression":{"id":1698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"12013:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12023:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12013:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1699,"nodeType":"ExpressionStatement","src":"12013:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1702,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"12056:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12065:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12056:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12070:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12056:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1716,"nodeType":"IfStatement","src":"12052:95:10","trueBody":{"id":1715,"nodeType":"Block","src":"12073:74:10","statements":[{"expression":{"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1707,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"12091:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12101:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12091:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1710,"nodeType":"ExpressionStatement","src":"12091:12:10"},{"expression":{"id":1713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1711,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"12121:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12131:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12121:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1714,"nodeType":"ExpressionStatement","src":"12121:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1717,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"12164:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12173:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12164:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12178:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12164:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1731,"nodeType":"IfStatement","src":"12160:95:10","trueBody":{"id":1730,"nodeType":"Block","src":"12181:74:10","statements":[{"expression":{"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1722,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"12199:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12209:2:10","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12199:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1725,"nodeType":"ExpressionStatement","src":"12199:12:10"},{"expression":{"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1726,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"12229:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12239:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12229:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1729,"nodeType":"ExpressionStatement","src":"12229:11:10"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"12272:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12281:1:10","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12272:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12272:14:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1742,"nodeType":"IfStatement","src":"12268:64:10","trueBody":{"id":1741,"nodeType":"Block","src":"12288:44:10","statements":[{"expression":{"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1737,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"12306:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12306:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1740,"nodeType":"ExpressionStatement","src":"12306:11:10"}]}}]},{"expression":{"id":1744,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"12358:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1667,"id":1745,"nodeType":"Return","src":"12351:13:10"}]},"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"11463:240:10","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":1747,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11717:6:10","nodeType":"FunctionDefinition","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"value","nameLocation":"11732:5:10","nodeType":"VariableDeclaration","scope":1747,"src":"11724:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"11724:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11723:15:10"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1747,"src":"11762:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"11762:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11761:9:10"},"scope":1787,"src":"11708:663:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1785,"nodeType":"Block","src":"12608:174:10","statements":[{"id":1784,"nodeType":"UncheckedBlock","src":"12618:158:10","statements":[{"assignments":[1759],"declarations":[{"constant":false,"id":1759,"mutability":"mutable","name":"result","nameLocation":"12650:6:10","nodeType":"VariableDeclaration","scope":1784,"src":"12642:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1758,"name":"uint256","nodeType":"ElementaryTypeName","src":"12642:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1763,"initialValue":{"arguments":[{"id":1761,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"12666:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1760,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1747,1786],"referencedDeclaration":1747,"src":"12659:6:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12659:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12642:30:10"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1764,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1759,"src":"12693:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1765,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1753,"src":"12703:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1766,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"12715:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$928_$","typeString":"type(enum Math.Rounding)"}},"id":1767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":926,"src":"12715:11:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"src":"12703:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12730:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1770,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1759,"src":"12736:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12746:1:10","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12736:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1773,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12735:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:18:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1775,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"12751:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:26:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12703:53:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12703:61:10","trueExpression":{"hexValue":"31","id":1778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12759:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1781,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12702:63:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12693:72:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1757,"id":1783,"nodeType":"Return","src":"12686:79:10"}]}]},"documentation":{"id":1748,"nodeType":"StructuredDocumentation","src":"12377:144:10","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1786,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12535:6:10","nodeType":"FunctionDefinition","parameters":{"id":1754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1750,"mutability":"mutable","name":"value","nameLocation":"12550:5:10","nodeType":"VariableDeclaration","scope":1786,"src":"12542:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1749,"name":"uint256","nodeType":"ElementaryTypeName","src":"12542:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1753,"mutability":"mutable","name":"rounding","nameLocation":"12566:8:10","nodeType":"VariableDeclaration","scope":1786,"src":"12557:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"},"typeName":{"id":1752,"nodeType":"UserDefinedTypeName","pathNode":{"id":1751,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":928,"src":"12557:8:10"},"referencedDeclaration":928,"src":"12557:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$928","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12541:34:10"},"returnParameters":{"id":1757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1786,"src":"12599:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1755,"name":"uint256","nodeType":"ElementaryTypeName","src":"12599:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12598:9:10"},"scope":1787,"src":"12526:256:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1788,"src":"202:12582:10","usedErrors":[]}],"src":"103:12682:10"},"id":10},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SignedMath":[1892]},"id":1893,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1789,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":1790,"nodeType":"StructuredDocumentation","src":"134:80:11","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":1892,"linearizedBaseContracts":[1892],"name":"SignedMath","nameLocation":"223:10:11","nodeType":"ContractDefinition","nodes":[{"body":{"id":1807,"nodeType":"Block","src":"375:37:11","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1800,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"392:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1801,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1795,"src":"396:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"392:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1804,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1795,"src":"404:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"392:13:11","trueExpression":{"id":1803,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"400:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1799,"id":1806,"nodeType":"Return","src":"385:20:11"}]},"documentation":{"id":1791,"nodeType":"StructuredDocumentation","src":"240:66:11","text":" @dev Returns the largest of two signed numbers."},"id":1808,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"320:3:11","nodeType":"FunctionDefinition","parameters":{"id":1796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1793,"mutability":"mutable","name":"a","nameLocation":"331:1:11","nodeType":"VariableDeclaration","scope":1808,"src":"324:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1792,"name":"int256","nodeType":"ElementaryTypeName","src":"324:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1795,"mutability":"mutable","name":"b","nameLocation":"341:1:11","nodeType":"VariableDeclaration","scope":1808,"src":"334:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1794,"name":"int256","nodeType":"ElementaryTypeName","src":"334:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"323:20:11"},"returnParameters":{"id":1799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1798,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1808,"src":"367:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1797,"name":"int256","nodeType":"ElementaryTypeName","src":"367:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"366:8:11"},"scope":1892,"src":"311:101:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1825,"nodeType":"Block","src":"554:37:11","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1818,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1811,"src":"571:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1819,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"575:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"571:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1822,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1813,"src":"583:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"571:13:11","trueExpression":{"id":1821,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1811,"src":"579:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1817,"id":1824,"nodeType":"Return","src":"564:20:11"}]},"documentation":{"id":1809,"nodeType":"StructuredDocumentation","src":"418:67:11","text":" @dev Returns the smallest of two signed numbers."},"id":1826,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"499:3:11","nodeType":"FunctionDefinition","parameters":{"id":1814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1811,"mutability":"mutable","name":"a","nameLocation":"510:1:11","nodeType":"VariableDeclaration","scope":1826,"src":"503:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1810,"name":"int256","nodeType":"ElementaryTypeName","src":"503:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1813,"mutability":"mutable","name":"b","nameLocation":"520:1:11","nodeType":"VariableDeclaration","scope":1826,"src":"513:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1812,"name":"int256","nodeType":"ElementaryTypeName","src":"513:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"502:20:11"},"returnParameters":{"id":1817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1826,"src":"546:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1815,"name":"int256","nodeType":"ElementaryTypeName","src":"546:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"545:8:11"},"scope":1892,"src":"490:101:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1869,"nodeType":"Block","src":"796:162:11","statements":[{"assignments":[1837],"declarations":[{"constant":false,"id":1837,"mutability":"mutable","name":"x","nameLocation":"865:1:11","nodeType":"VariableDeclaration","scope":1869,"src":"858:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1836,"name":"int256","nodeType":"ElementaryTypeName","src":"858:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1850,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1838,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"870:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1839,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"874:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:5:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1841,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"869:7:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1842,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"881:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1843,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"885:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"891:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"880:12:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1848,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"879:14:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"869:24:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"858:35:11"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1851,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"910:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1856,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"930:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"922:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:11","typeDescriptions":{}}},"id":1857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"922:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":1858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:3:11","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"922:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1852,"name":"int256","nodeType":"ElementaryTypeName","src":"915:6:11","typeDescriptions":{}}},"id":1860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"915:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1861,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"944:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1862,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"948:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"944:5:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1864,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"943:7:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"915:35:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1866,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"914:37:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"910:41:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1835,"id":1868,"nodeType":"Return","src":"903:48:11"}]},"documentation":{"id":1827,"nodeType":"StructuredDocumentation","src":"597:126:11","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":1870,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"737:7:11","nodeType":"FunctionDefinition","parameters":{"id":1832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1829,"mutability":"mutable","name":"a","nameLocation":"752:1:11","nodeType":"VariableDeclaration","scope":1870,"src":"745:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1828,"name":"int256","nodeType":"ElementaryTypeName","src":"745:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1831,"mutability":"mutable","name":"b","nameLocation":"762:1:11","nodeType":"VariableDeclaration","scope":1870,"src":"755:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1830,"name":"int256","nodeType":"ElementaryTypeName","src":"755:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"744:20:11"},"returnParameters":{"id":1835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1870,"src":"788:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1833,"name":"int256","nodeType":"ElementaryTypeName","src":"788:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"787:8:11"},"scope":1892,"src":"728:230:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1890,"nodeType":"Block","src":"1102:158:11","statements":[{"id":1889,"nodeType":"UncheckedBlock","src":"1112:142:11","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1880,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"1227:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":1881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1227:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1240:2:11","subExpression":{"id":1884,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"1241:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1227:15:11","trueExpression":{"id":1883,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1873,"src":"1236:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1219:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1878,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:11","typeDescriptions":{}}},"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1219:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1877,"id":1888,"nodeType":"Return","src":"1212:31:11"}]}]},"documentation":{"id":1871,"nodeType":"StructuredDocumentation","src":"964:78:11","text":" @dev Returns the absolute unsigned value of a signed value."},"id":1891,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1056:3:11","nodeType":"FunctionDefinition","parameters":{"id":1874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1873,"mutability":"mutable","name":"n","nameLocation":"1067:1:11","nodeType":"VariableDeclaration","scope":1891,"src":"1060:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1872,"name":"int256","nodeType":"ElementaryTypeName","src":"1060:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1059:10:11"},"returnParameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1891,"src":"1093:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1875,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1092:9:11"},"scope":1892,"src":"1047:213:11","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1893,"src":"215:1047:11","usedErrors":[]}],"src":"109:1154:11"},"id":11},"contracts/ERC721All.sol":{"ast":{"absolutePath":"contracts/ERC721All.sol","exportedSymbols":{"Address":[634],"Context":[656],"ERC165":[909],"ERC721":[3166],"ERC721All":[2202],"IERC165":[921],"IERC721":[228],"IERC721Metadata":[304],"IERC721Receiver":[246],"Math":[1787],"Ownable":[112],"SignedMath":[1892],"Strings":[885]},"id":2203,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1894,"literals":["solidity","0.8",".13"],"nodeType":"PragmaDirective","src":"213:23:12"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":1895,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2203,"sourceUnit":113,"src":"238:52:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/ERC721.sol","file":"./lib/ERC721.sol","id":1896,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2203,"sourceUnit":3167,"src":"292:26:12","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1898,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"366:7:12"},"id":1899,"nodeType":"InheritanceSpecifier","src":"366:7:12"},{"baseName":{"id":1900,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":3166,"src":"375:6:12"},"id":1901,"nodeType":"InheritanceSpecifier","src":"375:6:12"}],"canonicalName":"ERC721All","contractDependencies":[],"contractKind":"contract","documentation":{"id":1897,"nodeType":"StructuredDocumentation","src":"320:23:12","text":" @dev todo..."},"fullyImplemented":true,"id":2202,"linearizedBaseContracts":[2202,3166,304,228,909,921,112,656],"name":"ERC721All","nameLocation":"353:9:12","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1905,"mutability":"mutable","name":"_activeTokens","nameLocation":"420:13:12","nodeType":"VariableDeclaration","scope":2202,"src":"386:47:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":1904,"keyType":{"id":1902,"name":"uint256","nodeType":"ElementaryTypeName","src":"394:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"386:24:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueType":{"id":1903,"name":"bool","nodeType":"ElementaryTypeName","src":"405:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"body":{"id":1918,"nodeType":"Block","src":"523:2:12","statements":[]},"id":1919,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1912,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"499:4:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1913,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"505:6:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":1914,"kind":"baseConstructorSpecifier","modifierName":{"id":1911,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":3166,"src":"492:6:12"},"nodeType":"ModifierInvocation","src":"492:20:12"},{"arguments":[],"id":1916,"kind":"baseConstructorSpecifier","modifierName":{"id":1915,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"513:7:12"},"nodeType":"ModifierInvocation","src":"513:9:12"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"name","nameLocation":"464:4:12","nodeType":"VariableDeclaration","scope":1919,"src":"450:18:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1906,"name":"string","nodeType":"ElementaryTypeName","src":"450:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1909,"mutability":"mutable","name":"symbol","nameLocation":"484:6:12","nodeType":"VariableDeclaration","scope":1919,"src":"470:20:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1908,"name":"string","nodeType":"ElementaryTypeName","src":"470:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"449:42:12"},"returnParameters":{"id":1917,"nodeType":"ParameterList","parameters":[],"src":"523:0:12"},"scope":2202,"src":"438:87:12","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2419],"body":{"id":1955,"nodeType":"Block","src":"655:191:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1929,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"669:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"686:1:12","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":1931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"678:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1930,"name":"address","nodeType":"ElementaryTypeName","src":"678:7:12","typeDescriptions":{}}},"id":1933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"678:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"669:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":1935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"690:43:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":1928,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"661:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"661:73:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1937,"nodeType":"ExpressionStatement","src":"661:73:12"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":1938,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"744:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1940,"indexExpression":{"id":1939,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"754:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"744:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"764:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"744:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":1944,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"782:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1943,"name":"_hasOwnToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2182,"src":"769:12:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"769:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"744:44:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1950,"nodeType":"IfStatement","src":"740:73:12","trueBody":{"id":1949,"nodeType":"Block","src":"790:23:12","statements":[{"expression":{"hexValue":"31","id":1947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"805:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":1927,"id":1948,"nodeType":"Return","src":"798:8:12"}]}},{"expression":{"baseExpression":{"id":1951,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"825:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1953,"indexExpression":{"id":1952,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"835:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"825:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1927,"id":1954,"nodeType":"Return","src":"818:23:12"}]},"documentation":{"id":1920,"nodeType":"StructuredDocumentation","src":"529:50:12","text":" @dev Overrides {IERC721-balanceOf}."},"functionSelector":"70a08231","id":1956,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"591:9:12","nodeType":"FunctionDefinition","overrides":{"id":1924,"nodeType":"OverrideSpecifier","overrides":[],"src":"628:8:12"},"parameters":{"id":1923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1922,"mutability":"mutable","name":"owner","nameLocation":"609:5:12","nodeType":"VariableDeclaration","scope":1956,"src":"601:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1921,"name":"address","nodeType":"ElementaryTypeName","src":"601:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"600:15:12"},"returnParameters":{"id":1927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1926,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1956,"src":"646:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1925,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:12"},"scope":2202,"src":"582:264:12","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2447],"body":{"id":1998,"nodeType":"Block","src":"974:333:12","statements":[{"expression":{"arguments":[{"arguments":[{"id":1967,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1959,"src":"1003:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1966,"name":"_isTokenActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2201,"src":"988:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"988:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":1969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1013:26:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":1965,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"980:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"980:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1971,"nodeType":"ExpressionStatement","src":"980:60:12"},{"assignments":[1973],"declarations":[{"constant":false,"id":1973,"mutability":"mutable","name":"owner","nameLocation":"1182:5:12","nodeType":"VariableDeclaration","scope":1998,"src":"1174:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1972,"name":"address","nodeType":"ElementaryTypeName","src":"1174:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1977,"initialValue":{"baseExpression":{"id":1974,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"1190:7:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1976,"indexExpression":{"id":1975,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1959,"src":"1198:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1190:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1174:32:12"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1978,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1973,"src":"1216:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1233:1:12","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":1980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1225:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1979,"name":"address","nodeType":"ElementaryTypeName","src":"1225:7:12","typeDescriptions":{}}},"id":1982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1225:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1216:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1995,"nodeType":"IfStatement","src":"1212:73:12","trueBody":{"id":1994,"nodeType":"Block","src":"1237:48:12","statements":[{"expression":{"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1984,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1973,"src":"1245:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":1989,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1959,"src":"1269:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1261:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1987,"name":"uint160","nodeType":"ElementaryTypeName","src":"1261:7:12","typeDescriptions":{}}},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1261:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1253:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1985,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:12","typeDescriptions":{}}},"id":1991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1253:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1245:33:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1993,"nodeType":"ExpressionStatement","src":"1245:33:12"}]}},{"expression":{"id":1996,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1973,"src":"1297:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1964,"id":1997,"nodeType":"Return","src":"1290:12:12"}]},"documentation":{"id":1957,"nodeType":"StructuredDocumentation","src":"850:48:12","text":" @dev Overrides {IERC721-ownerOf}."},"functionSelector":"6352211e","id":1999,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"910:7:12","nodeType":"FunctionDefinition","overrides":{"id":1961,"nodeType":"OverrideSpecifier","overrides":[],"src":"947:8:12"},"parameters":{"id":1960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1959,"mutability":"mutable","name":"tokenId","nameLocation":"926:7:12","nodeType":"VariableDeclaration","scope":1999,"src":"918:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1958,"name":"uint256","nodeType":"ElementaryTypeName","src":"918:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"917:17:12"},"returnParameters":{"id":1964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1963,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1999,"src":"965:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1962,"name":"address","nodeType":"ElementaryTypeName","src":"965:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"964:9:12"},"scope":2202,"src":"901:406:12","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":2007,"nodeType":"Block","src":"1334:30:12","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2003,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"1346:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1346:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2002,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[2057,2876],"referencedDeclaration":2057,"src":"1340:5:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1340:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2006,"nodeType":"ExpressionStatement","src":"1340:19:12"}]},"functionSelector":"1249c58b","id":2008,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"1320:4:12","nodeType":"FunctionDefinition","parameters":{"id":2000,"nodeType":"ParameterList","parameters":[],"src":"1324:2:12"},"returnParameters":{"id":2001,"nodeType":"ParameterList","parameters":[],"src":"1334:0:12"},"scope":2202,"src":"1311:53:12","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2056,"nodeType":"Block","src":"1410:376:12","statements":[{"assignments":[2014],"declarations":[{"constant":false,"id":2014,"mutability":"mutable","name":"tokenId","nameLocation":"1458:7:12","nodeType":"VariableDeclaration","scope":2056,"src":"1450:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2013,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2022,"initialValue":{"arguments":[{"arguments":[{"id":2019,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2010,"src":"1484:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1476:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2017,"name":"uint160","nodeType":"ElementaryTypeName","src":"1476:7:12","typeDescriptions":{}}},"id":2020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1476:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1468:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2015,"name":"uint256","nodeType":"ElementaryTypeName","src":"1468:7:12","typeDescriptions":{}}},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1468:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1450:44:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2024,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2010,"src":"1509:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1529:1:12","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":2026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1521:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2025,"name":"address","nodeType":"ElementaryTypeName","src":"1521:7:12","typeDescriptions":{}}},"id":2028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1521:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1509:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":2030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1533:34:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":2023,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1501:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1501:67:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2032,"nodeType":"ExpressionStatement","src":"1501:67:12"},{"expression":{"arguments":[{"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1582:24:12","subExpression":{"arguments":[{"id":2035,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2014,"src":"1598:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2034,"name":"_isTokenActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2201,"src":"1583:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1583:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":2038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1608:30:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":2033,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1574:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1574:65:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2040,"nodeType":"ExpressionStatement","src":"1574:65:12"},{"expression":{"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2041,"name":"_activeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"1674:13:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2043,"indexExpression":{"id":2042,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2014,"src":"1688:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1674:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1699:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1674:29:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2046,"nodeType":"ExpressionStatement","src":"1674:29:12"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1759:1:12","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":2049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1751:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2048,"name":"address","nodeType":"ElementaryTypeName","src":"1751:7:12","typeDescriptions":{}}},"id":2051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1751:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2052,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2010,"src":"1763:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2053,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2014,"src":"1773:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2047,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"1742:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1742:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2055,"nodeType":"EmitStatement","src":"1737:44:12"}]},"id":2057,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"1377:5:12","nodeType":"FunctionDefinition","parameters":{"id":2011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2010,"mutability":"mutable","name":"receiver","nameLocation":"1391:8:12","nodeType":"VariableDeclaration","scope":2057,"src":"1383:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2009,"name":"address","nodeType":"ElementaryTypeName","src":"1383:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1382:18:12"},"returnParameters":{"id":2012,"nodeType":"ParameterList","parameters":[],"src":"1410:0:12"},"scope":2202,"src":"1368:418:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3010],"body":{"id":2140,"nodeType":"Block","src":"1886:560:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2069,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"1908:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2068,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[1999],"referencedDeclaration":1999,"src":"1900:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1900:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2071,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2059,"src":"1920:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1900:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":2073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1926:39:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":2067,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1892:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:74:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2075,"nodeType":"ExpressionStatement","src":"1892:74:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2077,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"1980:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1994:1:12","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":2079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1986:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2078,"name":"address","nodeType":"ElementaryTypeName","src":"1986:7:12","typeDescriptions":{}}},"id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1986:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1980:16:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":2083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1998:38:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":2076,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1972:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1972:65:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2085,"nodeType":"ExpressionStatement","src":"1972:65:12"},{"expression":{"arguments":[{"id":2087,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2059,"src":"2065:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2088,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"2071:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2089,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2075:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2086,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"2044:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2044:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2091,"nodeType":"ExpressionStatement","src":"2044:39:12"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2154:1:12","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":2094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2146:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2093,"name":"address","nodeType":"ElementaryTypeName","src":"2146:7:12","typeDescriptions":{}}},"id":2096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2146:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2097,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2158:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2092,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"2137:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2137:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2099,"nodeType":"ExpressionStatement","src":"2137:29:12"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2100,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"2240:7:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2102,"indexExpression":{"id":2101,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2248:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2240:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2268:1:12","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":2104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2260:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2103,"name":"address","nodeType":"ElementaryTypeName","src":"2260:7:12","typeDescriptions":{}}},"id":2106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2260:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2240:30:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2115,"nodeType":"IfStatement","src":"2236:71:12","trueBody":{"id":2114,"nodeType":"Block","src":"2272:35:12","statements":[{"expression":{"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2108,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"2280:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2110,"indexExpression":{"id":2109,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2059,"src":"2290:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2280:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2299:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2280:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2113,"nodeType":"ExpressionStatement","src":"2280:20:12"}]}},{"expression":{"id":2120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2116,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"2312:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2118,"indexExpression":{"id":2117,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"2322:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2312:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2329:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2312:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2121,"nodeType":"ExpressionStatement","src":"2312:18:12"},{"expression":{"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2122,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"2336:7:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2124,"indexExpression":{"id":2123,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2344:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2336:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2125,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"2355:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2336:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2127,"nodeType":"ExpressionStatement","src":"2336:21:12"},{"eventCall":{"arguments":[{"id":2129,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2059,"src":"2378:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2130,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"2384:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2131,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2388:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2128,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2369:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2369:27:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2133,"nodeType":"EmitStatement","src":"2364:32:12"},{"expression":{"arguments":[{"id":2135,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2059,"src":"2423:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2136,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2061,"src":"2429:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2137,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"2433:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2134,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"2403:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2403:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2139,"nodeType":"ExpressionStatement","src":"2403:38:12"}]},"id":2141,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"1799:9:12","nodeType":"FunctionDefinition","overrides":{"id":2065,"nodeType":"OverrideSpecifier","overrides":[],"src":"1877:8:12"},"parameters":{"id":2064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2059,"mutability":"mutable","name":"from","nameLocation":"1822:4:12","nodeType":"VariableDeclaration","scope":2141,"src":"1814:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2058,"name":"address","nodeType":"ElementaryTypeName","src":"1814:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2061,"mutability":"mutable","name":"to","nameLocation":"1840:2:12","nodeType":"VariableDeclaration","scope":2141,"src":"1832:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2060,"name":"address","nodeType":"ElementaryTypeName","src":"1832:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2063,"mutability":"mutable","name":"tokenId","nameLocation":"1856:7:12","nodeType":"VariableDeclaration","scope":2141,"src":"1848:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2062,"name":"uint256","nodeType":"ElementaryTypeName","src":"1848:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1808:59:12"},"returnParameters":{"id":2066,"nodeType":"ParameterList","parameters":[],"src":"1886:0:12"},"scope":2202,"src":"1790:656:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2181,"nodeType":"Block","src":"2516:207:12","statements":[{"assignments":[2149],"declarations":[{"constant":false,"id":2149,"mutability":"mutable","name":"ownerTokenId","nameLocation":"2530:12:12","nodeType":"VariableDeclaration","scope":2181,"src":"2522:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2148,"name":"uint256","nodeType":"ElementaryTypeName","src":"2522:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2157,"initialValue":{"arguments":[{"arguments":[{"id":2154,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2143,"src":"2561:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2553:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2152,"name":"uint160","nodeType":"ElementaryTypeName","src":"2553:7:12","typeDescriptions":{}}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2553:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2545:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2150,"name":"uint256","nodeType":"ElementaryTypeName","src":"2545:7:12","typeDescriptions":{}}},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2545:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2522:46:12"},{"assignments":[2159],"declarations":[{"constant":false,"id":2159,"mutability":"mutable","name":"currentOwner","nameLocation":"2582:12:12","nodeType":"VariableDeclaration","scope":2181,"src":"2574:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2158,"name":"address","nodeType":"ElementaryTypeName","src":"2574:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2163,"initialValue":{"baseExpression":{"id":2160,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"2597:7:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2162,"indexExpression":{"id":2161,"name":"ownerTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"2605:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2597:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2574:44:12"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2165,"name":"ownerTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"2647:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2164,"name":"_isTokenActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2201,"src":"2632:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2632:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2167,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2159,"src":"2665:12:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2168,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2143,"src":"2681:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2665:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2170,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2159,"src":"2690:12:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:12","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":2172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2706:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"2706:7:12","typeDescriptions":{}}},"id":2174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2706:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2690:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2665:51:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2177,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2664:53:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2632:85:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2179,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2631:87:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2147,"id":2180,"nodeType":"Return","src":"2624:94:12"}]},"id":2182,"implemented":true,"kind":"function","modifiers":[],"name":"_hasOwnToken","nameLocation":"2459:12:12","nodeType":"FunctionDefinition","parameters":{"id":2144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2143,"mutability":"mutable","name":"owner","nameLocation":"2480:5:12","nodeType":"VariableDeclaration","scope":2182,"src":"2472:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2142,"name":"address","nodeType":"ElementaryTypeName","src":"2472:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2471:15:12"},"returnParameters":{"id":2147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2182,"src":"2510:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2145,"name":"bool","nodeType":"ElementaryTypeName","src":"2510:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2509:6:12"},"scope":2202,"src":"2450:273:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2200,"nodeType":"Block","src":"2797:126:12","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2189,"name":"_activeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1905,"src":"2858:13:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2191,"indexExpression":{"id":2190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"2872:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2858:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2192,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"2884:7:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2194,"indexExpression":{"id":2193,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"2892:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2884:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2195,"name":"_NULL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2325,"src":"2904:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2884:33:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2858:59:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2198,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2857:61:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2188,"id":2199,"nodeType":"Return","src":"2850:68:12"}]},"id":2201,"implemented":true,"kind":"function","modifiers":[],"name":"_isTokenActive","nameLocation":"2736:14:12","nodeType":"FunctionDefinition","parameters":{"id":2185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2184,"mutability":"mutable","name":"tokenId","nameLocation":"2759:7:12","nodeType":"VariableDeclaration","scope":2201,"src":"2751:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2183,"name":"uint256","nodeType":"ElementaryTypeName","src":"2751:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2750:17:12"},"returnParameters":{"id":2188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2187,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2201,"src":"2791:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2186,"name":"bool","nodeType":"ElementaryTypeName","src":"2791:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2790:6:12"},"scope":2202,"src":"2727:196:12","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2203,"src":"344:2581:12","usedErrors":[]}],"src":"213:2713:12"},"id":12},"contracts/ERC721i.sol":{"ast":{"absolutePath":"contracts/ERC721i.sol","exportedSymbols":{"Address":[634],"Context":[656],"ERC165":[909],"ERC721":[3166],"ERC721i":[2298],"ERC721iEnumerable":[3525],"IERC165":[921],"IERC721":[228],"IERC721Enumerable":[277],"IERC721Metadata":[304],"IERC721Receiver":[246],"Math":[1787],"Ownable":[112],"SignedMath":[1892],"Strings":[885]},"id":2299,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2204,"literals":["solidity","0.8",".13"],"nodeType":"PragmaDirective","src":"213:23:13"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":2205,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2299,"sourceUnit":113,"src":"238:52:13","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/ERC721iEnumerable.sol","file":"./lib/ERC721iEnumerable.sol","id":2206,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2299,"sourceUnit":3526,"src":"291:37:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2208,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"1020:7:13"},"id":2209,"nodeType":"InheritanceSpecifier","src":"1020:7:13"},{"baseName":{"id":2210,"name":"ERC721iEnumerable","nodeType":"IdentifierPath","referencedDeclaration":3525,"src":"1031:17:13"},"id":2211,"nodeType":"InheritanceSpecifier","src":"1031:17:13"}],"canonicalName":"ERC721i","contractDependencies":[],"contractKind":"contract","documentation":{"id":2207,"nodeType":"StructuredDocumentation","src":"330:667:13","text":" @dev This implements a Pre-Mint version of {ERC721} that adds the ability to Pre-Mint\n all the token ids in the contract as assign an initial owner for each token id.\n On-chain state for Pre-Mint does not need to be initially stored if Max-Supply is known.\n Minting is a simple matter of assigning a balance to the pre-mint receiver,\n and modifying the \"read\" methods to account for the pre-mint receiver as owner.\n We use the Consecutive Transfer Method as defined in EIP-2309 to signal inital ownership.\n Almost everything else remains standard.\n We also default to the contract \"owner\" as the pre-mint receiver, but this can be changed."},"fullyImplemented":true,"id":2298,"linearizedBaseContracts":[2298,3525,277,3166,304,228,909,921,112,656],"name":"ERC721i","nameLocation":"1007:7:13","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2212,"nodeType":"StructuredDocumentation","src":"1053:58:13","text":"@dev EIP-2309: https://eips.ethereum.org/EIPS/eip-2309"},"eventSelector":"deaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d","id":2222,"name":"ConsecutiveTransfer","nameLocation":"1120:19:13","nodeType":"EventDefinition","parameters":{"id":2221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2214,"indexed":true,"mutability":"mutable","name":"fromTokenId","nameLocation":"1156:11:13","nodeType":"VariableDeclaration","scope":2222,"src":"1140:27:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2213,"name":"uint256","nodeType":"ElementaryTypeName","src":"1140:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2216,"indexed":false,"mutability":"mutable","name":"toTokenId","nameLocation":"1177:9:13","nodeType":"VariableDeclaration","scope":2222,"src":"1169:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2215,"name":"uint256","nodeType":"ElementaryTypeName","src":"1169:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2218,"indexed":true,"mutability":"mutable","name":"fromAddress","nameLocation":"1204:11:13","nodeType":"VariableDeclaration","scope":2222,"src":"1188:27:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2217,"name":"address","nodeType":"ElementaryTypeName","src":"1188:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2220,"indexed":true,"mutability":"mutable","name":"toAddress","nameLocation":"1233:9:13","nodeType":"VariableDeclaration","scope":2222,"src":"1217:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2219,"name":"address","nodeType":"ElementaryTypeName","src":"1217:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1139:104:13"},"src":"1114:130:13"},{"constant":false,"documentation":{"id":2223,"nodeType":"StructuredDocumentation","src":"1248:30:13","text":"@dev ERC721 Base Token URI"},"id":2225,"mutability":"mutable","name":"_baseTokenURI","nameLocation":"1297:13:13","nodeType":"VariableDeclaration","scope":2298,"src":"1281:29:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2224,"name":"string","nodeType":"ElementaryTypeName","src":"1281:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"body":{"id":2257,"nodeType":"Block","src":"1679:142:13","statements":[{"expression":{"id":2247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2245,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"1685:13:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2246,"name":"baseUri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"1701:7:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1685:23:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2248,"nodeType":"ExpressionStatement","src":"1685:23:13"},{"expression":{"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2249,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3189,"src":"1763:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2250,"name":"maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"1776:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1763:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2252,"nodeType":"ExpressionStatement","src":"1763:22:13"},{"expression":{"id":2255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2253,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3187,"src":"1791:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2254,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"1810:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1791:25:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2256,"nodeType":"ExpressionStatement","src":"1791:25:13"}]},"documentation":{"id":2226,"nodeType":"StructuredDocumentation","src":"1315:184:13","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection,\n as well as a `minter` and a `maxSupply` for pre-minting the collection."},"id":2258,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2239,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2228,"src":"1649:4:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2240,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"1655:6:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":2241,"kind":"baseConstructorSpecifier","modifierName":{"id":2238,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":3166,"src":"1642:6:13"},"nodeType":"ModifierInvocation","src":"1642:20:13"},{"arguments":[],"id":2243,"kind":"baseConstructorSpecifier","modifierName":{"id":2242,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"1667:7:13"},"nodeType":"ModifierInvocation","src":"1667:9:13"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2228,"mutability":"mutable","name":"name","nameLocation":"1533:4:13","nodeType":"VariableDeclaration","scope":2258,"src":"1519:18:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2227,"name":"string","nodeType":"ElementaryTypeName","src":"1519:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2230,"mutability":"mutable","name":"symbol","nameLocation":"1557:6:13","nodeType":"VariableDeclaration","scope":2258,"src":"1543:20:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2229,"name":"string","nodeType":"ElementaryTypeName","src":"1543:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2232,"mutability":"mutable","name":"baseUri","nameLocation":"1583:7:13","nodeType":"VariableDeclaration","scope":2258,"src":"1569:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2231,"name":"string","nodeType":"ElementaryTypeName","src":"1569:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2234,"mutability":"mutable","name":"minter","nameLocation":"1604:6:13","nodeType":"VariableDeclaration","scope":2258,"src":"1596:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2233,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2236,"mutability":"mutable","name":"maxSupply","nameLocation":"1624:9:13","nodeType":"VariableDeclaration","scope":2258,"src":"1616:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2235,"name":"uint256","nodeType":"ElementaryTypeName","src":"1616:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1513:124:13"},"returnParameters":{"id":2244,"nodeType":"ParameterList","parameters":[],"src":"1679:0:13"},"scope":2298,"src":"1502:319:13","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2278,"nodeType":"Block","src":"1986:233:13","statements":[{"expression":{"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2262,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"2055:9:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2264,"indexExpression":{"id":2263,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3187,"src":"2065:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2055:27:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2265,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3189,"src":"2085:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2055:40:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2267,"nodeType":"ExpressionStatement","src":"2055:40:13"},{"eventCall":{"arguments":[{"hexValue":"31","id":2269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2170:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"id":2270,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3189,"src":"2173:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":2273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2193:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2185:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2271,"name":"address","nodeType":"ElementaryTypeName","src":"2185:7:13","typeDescriptions":{}}},"id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2185:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2275,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3187,"src":"2197:16:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2268,"name":"ConsecutiveTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2222,"src":"2150:19:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (uint256,uint256,address,address)"}},"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2150:64:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2277,"nodeType":"EmitStatement","src":"2145:69:13"}]},"documentation":{"id":2259,"nodeType":"StructuredDocumentation","src":"1825:129:13","text":" @dev Pre-mint the max-supply of token IDs to the minter account.\n Token IDs are in base-1 sequential order."},"id":2279,"implemented":true,"kind":"function","modifiers":[],"name":"_preMint","nameLocation":"1966:8:13","nodeType":"FunctionDefinition","parameters":{"id":2260,"nodeType":"ParameterList","parameters":[],"src":"1974:2:13"},"returnParameters":{"id":2261,"nodeType":"ParameterList","parameters":[],"src":"1986:0:13"},"scope":2298,"src":"1957:262:13","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2287,"nodeType":"Block","src":"2261:21:13","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2284,"name":"_preMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2279,"src":"2267:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2267:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2286,"nodeType":"ExpressionStatement","src":"2267:10:13"}]},"functionSelector":"3cd29ac8","id":2288,"implemented":true,"kind":"function","modifiers":[{"id":2282,"kind":"modifierInvocation","modifierName":{"id":2281,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2251:9:13"},"nodeType":"ModifierInvocation","src":"2251:9:13"}],"name":"preMint","nameLocation":"2232:7:13","nodeType":"FunctionDefinition","parameters":{"id":2280,"nodeType":"ParameterList","parameters":[],"src":"2239:2:13"},"returnParameters":{"id":2283,"nodeType":"ParameterList","parameters":[],"src":"2261:0:13"},"scope":2298,"src":"2223:59:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2515],"body":{"id":2296,"nodeType":"Block","src":"2361:31:13","statements":[{"expression":{"id":2294,"name":"_baseTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"2374:13:13","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2293,"id":2295,"nodeType":"Return","src":"2367:20:13"}]},"id":2297,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"2295:8:13","nodeType":"FunctionDefinition","overrides":{"id":2290,"nodeType":"OverrideSpecifier","overrides":[],"src":"2328:8:13"},"parameters":{"id":2289,"nodeType":"ParameterList","parameters":[],"src":"2303:2:13"},"returnParameters":{"id":2293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2297,"src":"2346:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2291,"name":"string","nodeType":"ElementaryTypeName","src":"2346:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2345:15:13"},"scope":2298,"src":"2286:106:13","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":2299,"src":"998:1396:13","usedErrors":[]}],"src":"213:2182:13"},"id":13},"contracts/lib/ERC721.sol":{"ast":{"absolutePath":"contracts/lib/ERC721.sol","exportedSymbols":{"Address":[634],"Context":[656],"ERC165":[909],"ERC721":[3166],"IERC165":[921],"IERC721":[228],"IERC721Metadata":[304],"IERC721Receiver":[246],"Math":[1787],"SignedMath":[1892],"Strings":[885]},"id":3167,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2300,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"302:23:14"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":2301,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3167,"sourceUnit":229,"src":"327:58:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":2302,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3167,"sourceUnit":247,"src":"386:66:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","id":2303,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3167,"sourceUnit":305,"src":"453:77:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":2304,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3167,"sourceUnit":635,"src":"531:51:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":2305,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3167,"sourceUnit":657,"src":"583:51:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"@openzeppelin/contracts/utils/Strings.sol","id":2306,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3167,"sourceUnit":886,"src":"635:51:14","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":2307,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3167,"sourceUnit":910,"src":"687:64:14","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2309,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":656,"src":"1401:7:14"},"id":2310,"nodeType":"InheritanceSpecifier","src":"1401:7:14"},{"baseName":{"id":2311,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":909,"src":"1410:6:14"},"id":2312,"nodeType":"InheritanceSpecifier","src":"1410:6:14"},{"baseName":{"id":2313,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":228,"src":"1418:7:14"},"id":2314,"nodeType":"InheritanceSpecifier","src":"1418:7:14"},{"baseName":{"id":2315,"name":"IERC721Metadata","nodeType":"IdentifierPath","referencedDeclaration":304,"src":"1427:15:14"},"id":2316,"nodeType":"InheritanceSpecifier","src":"1427:15:14"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":2308,"nodeType":"StructuredDocumentation","src":"753:628:14","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}.\n NOTE:\n The only changes made here are:\n - change scope of \"_owners\" from private to internal\n - change scope of \"_balances\" from private to internal\n - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\"\n - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)"},"fullyImplemented":true,"id":3166,"linearizedBaseContracts":[3166,304,228,909,921,656],"name":"ERC721","nameLocation":"1391:6:14","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2319,"libraryName":{"id":2317,"name":"Address","nodeType":"IdentifierPath","referencedDeclaration":634,"src":"1455:7:14"},"nodeType":"UsingForDirective","src":"1449:26:14","typeName":{"id":2318,"name":"address","nodeType":"ElementaryTypeName","src":"1467:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":2322,"libraryName":{"id":2320,"name":"Strings","nodeType":"IdentifierPath","referencedDeclaration":885,"src":"1486:7:14"},"nodeType":"UsingForDirective","src":"1480:26:14","typeName":{"id":2321,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":2325,"mutability":"constant","name":"_NULL_ADDRESS","nameLocation":"1538:13:14","nodeType":"VariableDeclaration","scope":3166,"src":"1512:84:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2323,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307830303030303030303030303030303030303030303030303030303030303030303030303064456144","id":2324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1554:42:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x000000000000000000000000000000000000dEaD"},"visibility":"internal"},{"constant":false,"id":2327,"mutability":"mutable","name":"_name","nameLocation":"1636:5:14","nodeType":"VariableDeclaration","scope":3166,"src":"1621:20:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2326,"name":"string","nodeType":"ElementaryTypeName","src":"1621:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":2329,"mutability":"mutable","name":"_symbol","nameLocation":"1683:7:14","nodeType":"VariableDeclaration","scope":3166,"src":"1668:22:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2328,"name":"string","nodeType":"ElementaryTypeName","src":"1668:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":2333,"mutability":"mutable","name":"_owners","nameLocation":"1780:7:14","nodeType":"VariableDeclaration","scope":3166,"src":"1743:44:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":2332,"keyType":{"id":2330,"name":"uint256","nodeType":"ElementaryTypeName","src":"1751:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1743:27:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":2331,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"internal"},{"constant":false,"id":2337,"mutability":"mutable","name":"_balances","nameLocation":"1875:9:14","nodeType":"VariableDeclaration","scope":3166,"src":"1838:46:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":2336,"keyType":{"id":2334,"name":"address","nodeType":"ElementaryTypeName","src":"1846:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1838:27:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":2335,"name":"uint256","nodeType":"ElementaryTypeName","src":"1857:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":2341,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1976:15:14","nodeType":"VariableDeclaration","scope":3166,"src":"1940:51:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":2340,"keyType":{"id":2338,"name":"uint256","nodeType":"ElementaryTypeName","src":"1948:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1940:27:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":2339,"name":"address","nodeType":"ElementaryTypeName","src":"1959:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":2347,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"2099:18:14","nodeType":"VariableDeclaration","scope":3166,"src":"2046:71:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":2346,"keyType":{"id":2342,"name":"address","nodeType":"ElementaryTypeName","src":"2054:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2046:44:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":2345,"keyType":{"id":2343,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2065:24:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":2344,"name":"bool","nodeType":"ElementaryTypeName","src":"2084:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":2363,"nodeType":"Block","src":"2293:57:14","statements":[{"expression":{"id":2357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2355,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2327,"src":"2303:5:14","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2356,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2350,"src":"2311:5:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2303:13:14","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2358,"nodeType":"ExpressionStatement","src":"2303:13:14"},{"expression":{"id":2361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2359,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2329,"src":"2326:7:14","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2360,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2352,"src":"2336:7:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2326:17:14","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2362,"nodeType":"ExpressionStatement","src":"2326:17:14"}]},"documentation":{"id":2348,"nodeType":"StructuredDocumentation","src":"2124:108:14","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":2364,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2350,"mutability":"mutable","name":"name_","nameLocation":"2263:5:14","nodeType":"VariableDeclaration","scope":2364,"src":"2249:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2349,"name":"string","nodeType":"ElementaryTypeName","src":"2249:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2352,"mutability":"mutable","name":"symbol_","nameLocation":"2284:7:14","nodeType":"VariableDeclaration","scope":2364,"src":"2270:21:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2351,"name":"string","nodeType":"ElementaryTypeName","src":"2270:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2248:44:14"},"returnParameters":{"id":2354,"nodeType":"ParameterList","parameters":[],"src":"2293:0:14"},"scope":3166,"src":"2237:113:14","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[908,920],"body":{"id":2394,"nodeType":"Block","src":"2525:192:14","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2375,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"2554:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2377,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":228,"src":"2574:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$228_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$228_$","typeString":"type(contract IERC721)"}],"id":2376,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2569:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2569:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$228","typeString":"type(contract IERC721)"}},"id":2379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"2569:25:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2554:40:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2381,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"2610:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2383,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"2630:15:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$304_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$304_$","typeString":"type(contract IERC721Metadata)"}],"id":2382,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2625:4:14","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2625:21:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$304","typeString":"type(contract IERC721Metadata)"}},"id":2385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"2625:33:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2610:48:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2554:104:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2390,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"2698:11:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":2388,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2674:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$3166_$","typeString":"type(contract super ERC721)"}},"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":908,"src":"2674:23:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":2391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2674:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2554:156:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2374,"id":2393,"nodeType":"Return","src":"2535:175:14"}]},"documentation":{"id":2365,"nodeType":"StructuredDocumentation","src":"2356:56:14","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2395,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2426:17:14","nodeType":"FunctionDefinition","overrides":{"id":2371,"nodeType":"OverrideSpecifier","overrides":[{"id":2369,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":909,"src":"2493:6:14"},{"id":2370,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":921,"src":"2501:7:14"}],"src":"2484:25:14"},"parameters":{"id":2368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2367,"mutability":"mutable","name":"interfaceId","nameLocation":"2451:11:14","nodeType":"VariableDeclaration","scope":2395,"src":"2444:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2366,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2444:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2443:20:14"},"returnParameters":{"id":2374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2395,"src":"2519:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2372,"name":"bool","nodeType":"ElementaryTypeName","src":"2519:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2518:6:14"},"scope":3166,"src":"2417:300:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[153],"body":{"id":2418,"nodeType":"Block","src":"2857:123:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2405,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"2875:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2892:1:14","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":2407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2884:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2406,"name":"address","nodeType":"ElementaryTypeName","src":"2884:7:14","typeDescriptions":{}}},"id":2409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2884:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2875:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":2411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2896:43:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":2404,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2867:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2867:73:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2413,"nodeType":"ExpressionStatement","src":"2867:73:14"},{"expression":{"baseExpression":{"id":2414,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"2957:9:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2416,"indexExpression":{"id":2415,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"2967:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2957:16:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2403,"id":2417,"nodeType":"Return","src":"2950:23:14"}]},"documentation":{"id":2396,"nodeType":"StructuredDocumentation","src":"2723:48:14","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":2419,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2785:9:14","nodeType":"FunctionDefinition","overrides":{"id":2400,"nodeType":"OverrideSpecifier","overrides":[],"src":"2830:8:14"},"parameters":{"id":2399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2398,"mutability":"mutable","name":"owner","nameLocation":"2803:5:14","nodeType":"VariableDeclaration","scope":2419,"src":"2795:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2397,"name":"address","nodeType":"ElementaryTypeName","src":"2795:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2794:15:14"},"returnParameters":{"id":2403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2402,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2419,"src":"2848:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2401,"name":"uint256","nodeType":"ElementaryTypeName","src":"2848:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2847:9:14"},"scope":3166,"src":"2776:204:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[161],"body":{"id":2446,"nodeType":"Block","src":"3118:137:14","statements":[{"assignments":[2429],"declarations":[{"constant":false,"id":2429,"mutability":"mutable","name":"owner","nameLocation":"3136:5:14","nodeType":"VariableDeclaration","scope":2446,"src":"3128:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2428,"name":"address","nodeType":"ElementaryTypeName","src":"3128:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2433,"initialValue":{"baseExpression":{"id":2430,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"3144:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2432,"indexExpression":{"id":2431,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2422,"src":"3152:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3144:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3128:32:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2435,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"3178:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3195:1:14","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":2437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3187:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"3187:7:14","typeDescriptions":{}}},"id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3187:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3178:19:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":2441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3199:26:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":2434,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3170:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3170:56:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2443,"nodeType":"ExpressionStatement","src":"3170:56:14"},{"expression":{"id":2444,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2429,"src":"3243:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2427,"id":2445,"nodeType":"Return","src":"3236:12:14"}]},"documentation":{"id":2420,"nodeType":"StructuredDocumentation","src":"2986:46:14","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":2447,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"3046:7:14","nodeType":"FunctionDefinition","overrides":{"id":2424,"nodeType":"OverrideSpecifier","overrides":[],"src":"3091:8:14"},"parameters":{"id":2423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2422,"mutability":"mutable","name":"tokenId","nameLocation":"3062:7:14","nodeType":"VariableDeclaration","scope":2447,"src":"3054:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2421,"name":"uint256","nodeType":"ElementaryTypeName","src":"3054:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3053:17:14"},"returnParameters":{"id":2427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2447,"src":"3109:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2425,"name":"address","nodeType":"ElementaryTypeName","src":"3109:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3108:9:14"},"scope":3166,"src":"3037:218:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[289],"body":{"id":2456,"nodeType":"Block","src":"3386:29:14","statements":[{"expression":{"id":2454,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2327,"src":"3403:5:14","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2453,"id":2455,"nodeType":"Return","src":"3396:12:14"}]},"documentation":{"id":2448,"nodeType":"StructuredDocumentation","src":"3261:51:14","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":2457,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"3326:4:14","nodeType":"FunctionDefinition","overrides":{"id":2450,"nodeType":"OverrideSpecifier","overrides":[],"src":"3353:8:14"},"parameters":{"id":2449,"nodeType":"ParameterList","parameters":[],"src":"3330:2:14"},"returnParameters":{"id":2453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2457,"src":"3371:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2451,"name":"string","nodeType":"ElementaryTypeName","src":"3371:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3370:15:14"},"scope":3166,"src":"3317:98:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[295],"body":{"id":2466,"nodeType":"Block","src":"3550:31:14","statements":[{"expression":{"id":2464,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2329,"src":"3567:7:14","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2463,"id":2465,"nodeType":"Return","src":"3560:14:14"}]},"documentation":{"id":2458,"nodeType":"StructuredDocumentation","src":"3421:53:14","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":2467,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"3488:6:14","nodeType":"FunctionDefinition","overrides":{"id":2460,"nodeType":"OverrideSpecifier","overrides":[],"src":"3517:8:14"},"parameters":{"id":2459,"nodeType":"ParameterList","parameters":[],"src":"3494:2:14"},"returnParameters":{"id":2463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2462,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2467,"src":"3535:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2461,"name":"string","nodeType":"ElementaryTypeName","src":"3535:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3534:15:14"},"scope":3166,"src":"3479:102:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[303],"body":{"id":2505,"nodeType":"Block","src":"3735:188:14","statements":[{"expression":{"arguments":[{"id":2477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2470,"src":"3760:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2476,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"3745:14:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3745:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2479,"nodeType":"ExpressionStatement","src":"3745:23:14"},{"assignments":[2481],"declarations":[{"constant":false,"id":2481,"mutability":"mutable","name":"baseURI","nameLocation":"3793:7:14","nodeType":"VariableDeclaration","scope":2505,"src":"3779:21:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2480,"name":"string","nodeType":"ElementaryTypeName","src":"3779:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2484,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2482,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"3803:8:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3803:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"3779:34:14"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2487,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"3836:7:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3830:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2485,"name":"bytes","nodeType":"ElementaryTypeName","src":"3830:5:14","typeDescriptions":{}}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3830:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3830:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3830:25:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":2502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3914:2:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3830:86:14","trueExpression":{"arguments":[{"arguments":[{"id":2496,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"3882:7:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2497,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2470,"src":"3891:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":715,"src":"3891:16:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":2499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3891:18:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":2494,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3865:3:14","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3865:16:14","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3865:45:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3858:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2492,"name":"string","nodeType":"ElementaryTypeName","src":"3858:6:14","typeDescriptions":{}}},"id":2501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3858:53:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2475,"id":2504,"nodeType":"Return","src":"3823:93:14"}]},"documentation":{"id":2468,"nodeType":"StructuredDocumentation","src":"3587:55:14","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":2506,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"3656:8:14","nodeType":"FunctionDefinition","overrides":{"id":2472,"nodeType":"OverrideSpecifier","overrides":[],"src":"3702:8:14"},"parameters":{"id":2471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2470,"mutability":"mutable","name":"tokenId","nameLocation":"3673:7:14","nodeType":"VariableDeclaration","scope":2506,"src":"3665:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2469,"name":"uint256","nodeType":"ElementaryTypeName","src":"3665:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3664:17:14"},"returnParameters":{"id":2475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2474,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2506,"src":"3720:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2473,"name":"string","nodeType":"ElementaryTypeName","src":"3720:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3719:15:14"},"scope":3166,"src":"3647:276:14","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2514,"nodeType":"Block","src":"4231:26:14","statements":[{"expression":{"hexValue":"","id":2512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4248:2:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":2511,"id":2513,"nodeType":"Return","src":"4241:9:14"}]},"documentation":{"id":2507,"nodeType":"StructuredDocumentation","src":"3929:231:14","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":2515,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"4174:8:14","nodeType":"FunctionDefinition","parameters":{"id":2508,"nodeType":"ParameterList","parameters":[],"src":"4182:2:14"},"returnParameters":{"id":2511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2515,"src":"4216:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2509,"name":"string","nodeType":"ElementaryTypeName","src":"4216:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4215:15:14"},"scope":3166,"src":"4165:92:14","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[201],"body":{"id":2556,"nodeType":"Block","src":"4384:330:14","statements":[{"assignments":[2525],"declarations":[{"constant":false,"id":2525,"mutability":"mutable","name":"owner","nameLocation":"4402:5:14","nodeType":"VariableDeclaration","scope":2556,"src":"4394:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2524,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2529,"initialValue":{"arguments":[{"id":2527,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2520,"src":"4418:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2526,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"4410:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4410:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4394:32:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2531,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2518,"src":"4444:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2532,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"4450:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4444:11:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":2534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4457:35:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":2530,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4436:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4436:57:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2536,"nodeType":"ExpressionStatement","src":"4436:57:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2538,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"4525:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4525:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2540,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"4541:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4525:21:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2543,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"4567:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2544,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"4574:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4574:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2542,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"4550:16:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4550:37:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4525:62:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4601:64:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""},"value":"ERC721: approve caller is not token owner nor approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""}],"id":2537,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4504:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4504:171:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2550,"nodeType":"ExpressionStatement","src":"4504:171:14"},{"expression":{"arguments":[{"id":2552,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2518,"src":"4695:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2553,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2520,"src":"4699:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2551,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"4686:8:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4686:21:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2555,"nodeType":"ExpressionStatement","src":"4686:21:14"}]},"documentation":{"id":2516,"nodeType":"StructuredDocumentation","src":"4263:46:14","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":2557,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4323:7:14","nodeType":"FunctionDefinition","overrides":{"id":2522,"nodeType":"OverrideSpecifier","overrides":[],"src":"4375:8:14"},"parameters":{"id":2521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2518,"mutability":"mutable","name":"to","nameLocation":"4339:2:14","nodeType":"VariableDeclaration","scope":2557,"src":"4331:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2517,"name":"address","nodeType":"ElementaryTypeName","src":"4331:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2520,"mutability":"mutable","name":"tokenId","nameLocation":"4351:7:14","nodeType":"VariableDeclaration","scope":2557,"src":"4343:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2519,"name":"uint256","nodeType":"ElementaryTypeName","src":"4343:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4330:29:14"},"returnParameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"4384:0:14"},"scope":3166,"src":"4314:400:14","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[217],"body":{"id":2574,"nodeType":"Block","src":"4860:82:14","statements":[{"expression":{"arguments":[{"id":2567,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"4885:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2566,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"4870:14:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":2568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4870:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2569,"nodeType":"ExpressionStatement","src":"4870:23:14"},{"expression":{"baseExpression":{"id":2570,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"4911:15:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2572,"indexExpression":{"id":2571,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"4927:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4911:24:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2565,"id":2573,"nodeType":"Return","src":"4904:31:14"}]},"documentation":{"id":2558,"nodeType":"StructuredDocumentation","src":"4720:50:14","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":2575,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4784:11:14","nodeType":"FunctionDefinition","overrides":{"id":2562,"nodeType":"OverrideSpecifier","overrides":[],"src":"4833:8:14"},"parameters":{"id":2561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2560,"mutability":"mutable","name":"tokenId","nameLocation":"4804:7:14","nodeType":"VariableDeclaration","scope":2575,"src":"4796:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2559,"name":"uint256","nodeType":"ElementaryTypeName","src":"4796:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4795:17:14"},"returnParameters":{"id":2565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2564,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2575,"src":"4851:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2563,"name":"address","nodeType":"ElementaryTypeName","src":"4851:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4850:9:14"},"scope":3166,"src":"4775:167:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[209],"body":{"id":2591,"nodeType":"Block","src":"5093:69:14","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2585,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"5122:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5122:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2587,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2578,"src":"5136:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2588,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"5146:8:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2584,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3065,"src":"5103:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5103:52:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2590,"nodeType":"ExpressionStatement","src":"5103:52:14"}]},"documentation":{"id":2576,"nodeType":"StructuredDocumentation","src":"4948:56:14","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":2592,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"5018:17:14","nodeType":"FunctionDefinition","overrides":{"id":2582,"nodeType":"OverrideSpecifier","overrides":[],"src":"5084:8:14"},"parameters":{"id":2581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2578,"mutability":"mutable","name":"operator","nameLocation":"5044:8:14","nodeType":"VariableDeclaration","scope":2592,"src":"5036:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2577,"name":"address","nodeType":"ElementaryTypeName","src":"5036:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2580,"mutability":"mutable","name":"approved","nameLocation":"5059:8:14","nodeType":"VariableDeclaration","scope":2592,"src":"5054:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2579,"name":"bool","nodeType":"ElementaryTypeName","src":"5054:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5035:33:14"},"returnParameters":{"id":2583,"nodeType":"ParameterList","parameters":[],"src":"5093:0:14"},"scope":3166,"src":"5009:153:14","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[227],"body":{"id":2609,"nodeType":"Block","src":"5331:59:14","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2603,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"5348:18:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2605,"indexExpression":{"id":2604,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"5367:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5348:25:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2607,"indexExpression":{"id":2606,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"5374:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5348:35:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2602,"id":2608,"nodeType":"Return","src":"5341:42:14"}]},"documentation":{"id":2593,"nodeType":"StructuredDocumentation","src":"5168:55:14","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":2610,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"5237:16:14","nodeType":"FunctionDefinition","overrides":{"id":2599,"nodeType":"OverrideSpecifier","overrides":[],"src":"5307:8:14"},"parameters":{"id":2598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2595,"mutability":"mutable","name":"owner","nameLocation":"5262:5:14","nodeType":"VariableDeclaration","scope":2610,"src":"5254:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2594,"name":"address","nodeType":"ElementaryTypeName","src":"5254:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2597,"mutability":"mutable","name":"operator","nameLocation":"5277:8:14","nodeType":"VariableDeclaration","scope":2610,"src":"5269:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2596,"name":"address","nodeType":"ElementaryTypeName","src":"5269:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5253:33:14"},"returnParameters":{"id":2602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2601,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2610,"src":"5325:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2600,"name":"bool","nodeType":"ElementaryTypeName","src":"5325:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5324:6:14"},"scope":3166,"src":"5228:162:14","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[193],"body":{"id":2636,"nodeType":"Block","src":"5571:208:14","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2623,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"5660:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5660:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2625,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2617,"src":"5674:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2622,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2766,"src":"5641:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":2626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5641:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":2627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5684:48:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":2621,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5633:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5633:100:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2629,"nodeType":"ExpressionStatement","src":"5633:100:14"},{"expression":{"arguments":[{"id":2631,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2613,"src":"5754:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2632,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2615,"src":"5760:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2633,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2617,"src":"5764:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2630,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3010,"src":"5744:9:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5744:28:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2635,"nodeType":"ExpressionStatement","src":"5744:28:14"}]},"documentation":{"id":2611,"nodeType":"StructuredDocumentation","src":"5396:51:14","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":2637,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5461:12:14","nodeType":"FunctionDefinition","overrides":{"id":2619,"nodeType":"OverrideSpecifier","overrides":[],"src":"5562:8:14"},"parameters":{"id":2618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2613,"mutability":"mutable","name":"from","nameLocation":"5491:4:14","nodeType":"VariableDeclaration","scope":2637,"src":"5483:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2612,"name":"address","nodeType":"ElementaryTypeName","src":"5483:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2615,"mutability":"mutable","name":"to","nameLocation":"5513:2:14","nodeType":"VariableDeclaration","scope":2637,"src":"5505:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2614,"name":"address","nodeType":"ElementaryTypeName","src":"5505:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2617,"mutability":"mutable","name":"tokenId","nameLocation":"5533:7:14","nodeType":"VariableDeclaration","scope":2637,"src":"5525:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2616,"name":"uint256","nodeType":"ElementaryTypeName","src":"5525:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5473:73:14"},"returnParameters":{"id":2620,"nodeType":"ParameterList","parameters":[],"src":"5571:0:14"},"scope":3166,"src":"5452:327:14","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[183],"body":{"id":2655,"nodeType":"Block","src":"5968:56:14","statements":[{"expression":{"arguments":[{"id":2649,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"5995:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2650,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2642,"src":"6001:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2651,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"6005:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6014:2:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2648,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2656,2686],"referencedDeclaration":2686,"src":"5978:16:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5978:39:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2654,"nodeType":"ExpressionStatement","src":"5978:39:14"}]},"documentation":{"id":2638,"nodeType":"StructuredDocumentation","src":"5785:55:14","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":2656,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5854:16:14","nodeType":"FunctionDefinition","overrides":{"id":2646,"nodeType":"OverrideSpecifier","overrides":[],"src":"5959:8:14"},"parameters":{"id":2645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2640,"mutability":"mutable","name":"from","nameLocation":"5888:4:14","nodeType":"VariableDeclaration","scope":2656,"src":"5880:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2639,"name":"address","nodeType":"ElementaryTypeName","src":"5880:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2642,"mutability":"mutable","name":"to","nameLocation":"5910:2:14","nodeType":"VariableDeclaration","scope":2656,"src":"5902:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2641,"name":"address","nodeType":"ElementaryTypeName","src":"5902:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2644,"mutability":"mutable","name":"tokenId","nameLocation":"5930:7:14","nodeType":"VariableDeclaration","scope":2656,"src":"5922:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2643,"name":"uint256","nodeType":"ElementaryTypeName","src":"5922:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5870:73:14"},"returnParameters":{"id":2647,"nodeType":"ParameterList","parameters":[],"src":"5968:0:14"},"scope":3166,"src":"5845:179:14","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[173],"body":{"id":2685,"nodeType":"Block","src":"6240:165:14","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2671,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"6277:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6277:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2673,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2663,"src":"6291:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2670,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2766,"src":"6258:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":2674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6258:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":2675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6301:48:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":2669,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6250:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6250:100:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2677,"nodeType":"ExpressionStatement","src":"6250:100:14"},{"expression":{"arguments":[{"id":2679,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"6374:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2680,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"6380:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2681,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2663,"src":"6384:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2682,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"6393:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2678,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2715,"src":"6360:13:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6360:38:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2684,"nodeType":"ExpressionStatement","src":"6360:38:14"}]},"documentation":{"id":2657,"nodeType":"StructuredDocumentation","src":"6030:55:14","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":2686,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"6099:16:14","nodeType":"FunctionDefinition","overrides":{"id":2667,"nodeType":"OverrideSpecifier","overrides":[],"src":"6231:8:14"},"parameters":{"id":2666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2659,"mutability":"mutable","name":"from","nameLocation":"6133:4:14","nodeType":"VariableDeclaration","scope":2686,"src":"6125:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2658,"name":"address","nodeType":"ElementaryTypeName","src":"6125:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2661,"mutability":"mutable","name":"to","nameLocation":"6155:2:14","nodeType":"VariableDeclaration","scope":2686,"src":"6147:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2660,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2663,"mutability":"mutable","name":"tokenId","nameLocation":"6175:7:14","nodeType":"VariableDeclaration","scope":2686,"src":"6167:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2662,"name":"uint256","nodeType":"ElementaryTypeName","src":"6167:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2665,"mutability":"mutable","name":"data","nameLocation":"6205:4:14","nodeType":"VariableDeclaration","scope":2686,"src":"6192:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2664,"name":"bytes","nodeType":"ElementaryTypeName","src":"6192:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6115:100:14"},"returnParameters":{"id":2668,"nodeType":"ParameterList","parameters":[],"src":"6240:0:14"},"scope":3166,"src":"6090:315:14","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2714,"nodeType":"Block","src":"7406:165:14","statements":[{"expression":{"arguments":[{"id":2699,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2689,"src":"7426:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2700,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"7432:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2701,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"7436:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2698,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3010,"src":"7416:9:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7416:28:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2703,"nodeType":"ExpressionStatement","src":"7416:28:14"},{"expression":{"arguments":[{"arguments":[{"id":2706,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2689,"src":"7485:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2707,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"7491:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2708,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"7495:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2709,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"7504:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2705,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"7462:22:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7462:47:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":2711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7511:52:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":2704,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7454:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7454:110:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2713,"nodeType":"ExpressionStatement","src":"7454:110:14"}]},"documentation":{"id":2687,"nodeType":"StructuredDocumentation","src":"6411:850:14","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":2715,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"7275:13:14","nodeType":"FunctionDefinition","parameters":{"id":2696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2689,"mutability":"mutable","name":"from","nameLocation":"7306:4:14","nodeType":"VariableDeclaration","scope":2715,"src":"7298:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2688,"name":"address","nodeType":"ElementaryTypeName","src":"7298:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2691,"mutability":"mutable","name":"to","nameLocation":"7328:2:14","nodeType":"VariableDeclaration","scope":2715,"src":"7320:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2690,"name":"address","nodeType":"ElementaryTypeName","src":"7320:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"tokenId","nameLocation":"7348:7:14","nodeType":"VariableDeclaration","scope":2715,"src":"7340:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2692,"name":"uint256","nodeType":"ElementaryTypeName","src":"7340:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"data","nameLocation":"7378:4:14","nodeType":"VariableDeclaration","scope":2715,"src":"7365:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2694,"name":"bytes","nodeType":"ElementaryTypeName","src":"7365:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7288:100:14"},"returnParameters":{"id":2697,"nodeType":"ParameterList","parameters":[],"src":"7406:0:14"},"scope":3166,"src":"7266:305:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2732,"nodeType":"Block","src":"7945:54:14","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2723,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"7962:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2725,"indexExpression":{"id":2724,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2718,"src":"7970:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7962:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7990:1:14","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":2727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7982:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2726,"name":"address","nodeType":"ElementaryTypeName","src":"7982:7:14","typeDescriptions":{}}},"id":2729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7982:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7962:30:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2722,"id":2731,"nodeType":"Return","src":"7955:37:14"}]},"documentation":{"id":2716,"nodeType":"StructuredDocumentation","src":"7577:292:14","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":2733,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7883:7:14","nodeType":"FunctionDefinition","parameters":{"id":2719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2718,"mutability":"mutable","name":"tokenId","nameLocation":"7899:7:14","nodeType":"VariableDeclaration","scope":2733,"src":"7891:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2717,"name":"uint256","nodeType":"ElementaryTypeName","src":"7891:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7890:17:14"},"returnParameters":{"id":2722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2721,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2733,"src":"7939:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2720,"name":"bool","nodeType":"ElementaryTypeName","src":"7939:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7938:6:14"},"scope":3166,"src":"7874:125:14","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2765,"nodeType":"Block","src":"8256:155:14","statements":[{"assignments":[2744],"declarations":[{"constant":false,"id":2744,"mutability":"mutable","name":"owner","nameLocation":"8274:5:14","nodeType":"VariableDeclaration","scope":2765,"src":"8266:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2743,"name":"address","nodeType":"ElementaryTypeName","src":"8266:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2748,"initialValue":{"arguments":[{"id":2746,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2738,"src":"8290:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2745,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"8282:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8282:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8266:32:14"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2749,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"8316:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2750,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"8327:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8316:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2753,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"8353:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2754,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"8360:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2752,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"8336:16:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8336:32:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8316:52:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2758,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2738,"src":"8384:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2757,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2575,"src":"8372:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8372:20:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2760,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"8396:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8372:31:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8316:87:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2763,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8315:89:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2742,"id":2764,"nodeType":"Return","src":"8308:96:14"}]},"documentation":{"id":2734,"nodeType":"StructuredDocumentation","src":"8005:147:14","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":2766,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"8166:18:14","nodeType":"FunctionDefinition","parameters":{"id":2739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2736,"mutability":"mutable","name":"spender","nameLocation":"8193:7:14","nodeType":"VariableDeclaration","scope":2766,"src":"8185:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2735,"name":"address","nodeType":"ElementaryTypeName","src":"8185:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2738,"mutability":"mutable","name":"tokenId","nameLocation":"8210:7:14","nodeType":"VariableDeclaration","scope":2766,"src":"8202:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2737,"name":"uint256","nodeType":"ElementaryTypeName","src":"8202:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8184:34:14"},"returnParameters":{"id":2742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2741,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2766,"src":"8250:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2740,"name":"bool","nodeType":"ElementaryTypeName","src":"8250:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8249:6:14"},"scope":3166,"src":"8157:254:14","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2780,"nodeType":"Block","src":"8806:43:14","statements":[{"expression":{"arguments":[{"id":2775,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2769,"src":"8826:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2776,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2771,"src":"8830:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8839:2:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2774,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2781,2810],"referencedDeclaration":2810,"src":"8816:9:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8816:26:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2779,"nodeType":"ExpressionStatement","src":"8816:26:14"}]},"documentation":{"id":2767,"nodeType":"StructuredDocumentation","src":"8417:319:14","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":2781,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8750:9:14","nodeType":"FunctionDefinition","parameters":{"id":2772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2769,"mutability":"mutable","name":"to","nameLocation":"8768:2:14","nodeType":"VariableDeclaration","scope":2781,"src":"8760:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2768,"name":"address","nodeType":"ElementaryTypeName","src":"8760:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2771,"mutability":"mutable","name":"tokenId","nameLocation":"8780:7:14","nodeType":"VariableDeclaration","scope":2781,"src":"8772:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2770,"name":"uint256","nodeType":"ElementaryTypeName","src":"8772:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8759:29:14"},"returnParameters":{"id":2773,"nodeType":"ParameterList","parameters":[],"src":"8806:0:14"},"scope":3166,"src":"8741:108:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2809,"nodeType":"Block","src":"9184:195:14","statements":[{"expression":{"arguments":[{"id":2792,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"9200:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2793,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"9204:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2791,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2876,"src":"9194:5:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9194:18:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2795,"nodeType":"ExpressionStatement","src":"9194:18:14"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":2800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:1:14","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":2799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9266:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2798,"name":"address","nodeType":"ElementaryTypeName","src":"9266:7:14","typeDescriptions":{}}},"id":2801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9266:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2802,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"9278:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2803,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"9282:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2804,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2788,"src":"9291:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2797,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"9243:22:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9243:53:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":2806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9310:52:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":2796,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9222:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9222:150:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2808,"nodeType":"ExpressionStatement","src":"9222:150:14"}]},"documentation":{"id":2782,"nodeType":"StructuredDocumentation","src":"8855:210:14","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":2810,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"9079:9:14","nodeType":"FunctionDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2784,"mutability":"mutable","name":"to","nameLocation":"9106:2:14","nodeType":"VariableDeclaration","scope":2810,"src":"9098:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2783,"name":"address","nodeType":"ElementaryTypeName","src":"9098:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2786,"mutability":"mutable","name":"tokenId","nameLocation":"9126:7:14","nodeType":"VariableDeclaration","scope":2810,"src":"9118:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2785,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2788,"mutability":"mutable","name":"data","nameLocation":"9156:4:14","nodeType":"VariableDeclaration","scope":2810,"src":"9143:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2787,"name":"bytes","nodeType":"ElementaryTypeName","src":"9143:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9088:78:14"},"returnParameters":{"id":2790,"nodeType":"ParameterList","parameters":[],"src":"9184:0:14"},"scope":3166,"src":"9070:309:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2875,"nodeType":"Block","src":"9762:366:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2819,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"9780:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9794:1:14","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":2821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9786:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2820,"name":"address","nodeType":"ElementaryTypeName","src":"9786:7:14","typeDescriptions":{}}},"id":2823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9786:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9780:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":2825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9798:34:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":2818,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9772:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9772:61:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2827,"nodeType":"ExpressionStatement","src":"9772:61:14"},{"expression":{"arguments":[{"id":2832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9851:17:14","subExpression":{"arguments":[{"id":2830,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"9860:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2829,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"9852:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9852:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":2833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9870:30:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":2828,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9843:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9843:58:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2835,"nodeType":"ExpressionStatement","src":"9843:58:14"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9941:1:14","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":2838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9933:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2837,"name":"address","nodeType":"ElementaryTypeName","src":"9933:7:14","typeDescriptions":{}}},"id":2840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9933:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2841,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"9945:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2842,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"9949:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2836,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"9912:20:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9912:45:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2844,"nodeType":"ExpressionStatement","src":"9912:45:14"},{"expression":{"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2845,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"9968:9:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2847,"indexExpression":{"id":2846,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"9978:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9968:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9985:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9968:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2850,"nodeType":"ExpressionStatement","src":"9968:18:14"},{"expression":{"id":2855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2851,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"9996:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2853,"indexExpression":{"id":2852,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"10004:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9996:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2854,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"10015:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9996:21:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2856,"nodeType":"ExpressionStatement","src":"9996:21:14"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10050:1:14","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":2859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10042:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2858,"name":"address","nodeType":"ElementaryTypeName","src":"10042:7:14","typeDescriptions":{}}},"id":2861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10042:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2862,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"10054:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2863,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"10058:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2857,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"10033:8:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10033:33:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2865,"nodeType":"EmitStatement","src":"10028:38:14"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10105:1:14","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":2868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10097:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2867,"name":"address","nodeType":"ElementaryTypeName","src":"10097:7:14","typeDescriptions":{}}},"id":2870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10097:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2871,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2813,"src":"10109:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2872,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"10113:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2866,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"10077:19:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10077:44:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2874,"nodeType":"ExpressionStatement","src":"10077:44:14"}]},"documentation":{"id":2811,"nodeType":"StructuredDocumentation","src":"9385:311:14","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":2876,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9710:5:14","nodeType":"FunctionDefinition","parameters":{"id":2816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2813,"mutability":"mutable","name":"to","nameLocation":"9724:2:14","nodeType":"VariableDeclaration","scope":2876,"src":"9716:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2812,"name":"address","nodeType":"ElementaryTypeName","src":"9716:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2815,"mutability":"mutable","name":"tokenId","nameLocation":"9736:7:14","nodeType":"VariableDeclaration","scope":2876,"src":"9728:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2814,"name":"uint256","nodeType":"ElementaryTypeName","src":"9728:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9715:29:14"},"returnParameters":{"id":2817,"nodeType":"ParameterList","parameters":[],"src":"9762:0:14"},"scope":3166,"src":"9701:427:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2935,"nodeType":"Block","src":"10394:431:14","statements":[{"assignments":[2883],"declarations":[{"constant":false,"id":2883,"mutability":"mutable","name":"owner","nameLocation":"10412:5:14","nodeType":"VariableDeclaration","scope":2935,"src":"10404:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2882,"name":"address","nodeType":"ElementaryTypeName","src":"10404:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2887,"initialValue":{"arguments":[{"id":2885,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"10428:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2884,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"10420:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10420:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10404:32:14"},{"expression":{"arguments":[{"id":2889,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"10468:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10483:1:14","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":2891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10475:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2890,"name":"address","nodeType":"ElementaryTypeName","src":"10475:7:14","typeDescriptions":{}}},"id":2893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10475:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2894,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"10487:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2888,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"10447:20:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10447:48:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2896,"nodeType":"ExpressionStatement","src":"10447:48:14"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:14","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":2899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10542:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2898,"name":"address","nodeType":"ElementaryTypeName","src":"10542:7:14","typeDescriptions":{}}},"id":2901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10542:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2902,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"10554:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2897,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"10533:8:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10533:29:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2904,"nodeType":"ExpressionStatement","src":"10533:29:14"},{"expression":{"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2905,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"10573:9:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2907,"indexExpression":{"id":2906,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"10583:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10573:16:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10593:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10573:21:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2910,"nodeType":"ExpressionStatement","src":"10573:21:14"},{"expression":{"id":2915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2911,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"10676:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2913,"indexExpression":{"id":2912,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"10684:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10676:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2914,"name":"_NULL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2325,"src":"10695:13:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10676:32:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2916,"nodeType":"ExpressionStatement","src":"10676:32:14"},{"eventCall":{"arguments":[{"id":2918,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"10733:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10748:1:14","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":2920,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10740:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2919,"name":"address","nodeType":"ElementaryTypeName","src":"10740:7:14","typeDescriptions":{}}},"id":2922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10740:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2923,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"10752:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2917,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"10724:8:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10724:36:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2925,"nodeType":"EmitStatement","src":"10719:41:14"},{"expression":{"arguments":[{"id":2927,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"10791:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10806:1:14","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":2929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10798:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2928,"name":"address","nodeType":"ElementaryTypeName","src":"10798:7:14","typeDescriptions":{}}},"id":2931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10798:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2932,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"10810:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2926,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"10771:19:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10771:47:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2934,"nodeType":"ExpressionStatement","src":"10771:47:14"}]},"documentation":{"id":2877,"nodeType":"StructuredDocumentation","src":"10134:206:14","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":2936,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10354:5:14","nodeType":"FunctionDefinition","parameters":{"id":2880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2879,"mutability":"mutable","name":"tokenId","nameLocation":"10368:7:14","nodeType":"VariableDeclaration","scope":2936,"src":"10360:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2878,"name":"uint256","nodeType":"ElementaryTypeName","src":"10360:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10359:17:14"},"returnParameters":{"id":2881,"nodeType":"ParameterList","parameters":[],"src":"10394:0:14"},"scope":3166,"src":"10345:480:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3009,"nodeType":"Block","src":"11258:489:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2948,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"11284:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2947,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"11276:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11276:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2950,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"11296:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11276:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":2952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11302:39:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":2946,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11268:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11268:74:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2954,"nodeType":"ExpressionStatement","src":"11268:74:14"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2956,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"11360:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11374:1:14","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":2958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11366:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2957,"name":"address","nodeType":"ElementaryTypeName","src":"11366:7:14","typeDescriptions":{}}},"id":2960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11366:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11360:16:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":2962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11378:38:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":2955,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11352:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11352:65:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2964,"nodeType":"ExpressionStatement","src":"11352:65:14"},{"expression":{"arguments":[{"id":2966,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"11449:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2967,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"11455:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2968,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"11459:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2965,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"11428:20:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11428:39:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2970,"nodeType":"ExpressionStatement","src":"11428:39:14"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11546:1:14","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":2973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11538:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2972,"name":"address","nodeType":"ElementaryTypeName","src":"11538:7:14","typeDescriptions":{}}},"id":2975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11538:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2976,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"11550:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2971,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"11529:8:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11529:29:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2978,"nodeType":"ExpressionStatement","src":"11529:29:14"},{"expression":{"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2979,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"11569:9:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2981,"indexExpression":{"id":2980,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"11579:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11569:15:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11588:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11569:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2984,"nodeType":"ExpressionStatement","src":"11569:20:14"},{"expression":{"id":2989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2985,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2337,"src":"11599:9:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2987,"indexExpression":{"id":2986,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"11609:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11599:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11616:1:14","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11599:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2990,"nodeType":"ExpressionStatement","src":"11599:18:14"},{"expression":{"id":2995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2991,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"11627:7:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2993,"indexExpression":{"id":2992,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"11635:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11627:16:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2994,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"11646:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11627:21:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2996,"nodeType":"ExpressionStatement","src":"11627:21:14"},{"eventCall":{"arguments":[{"id":2998,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"11673:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2999,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"11679:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3000,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"11683:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2997,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"11664:8:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11664:27:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3002,"nodeType":"EmitStatement","src":"11659:32:14"},{"expression":{"arguments":[{"id":3004,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"11722:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3005,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"11728:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3006,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"11732:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3003,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"11702:19:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11702:38:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3008,"nodeType":"ExpressionStatement","src":"11702:38:14"}]},"documentation":{"id":2937,"nodeType":"StructuredDocumentation","src":"10831:313:14","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":3010,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11158:9:14","nodeType":"FunctionDefinition","parameters":{"id":2944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2939,"mutability":"mutable","name":"from","nameLocation":"11185:4:14","nodeType":"VariableDeclaration","scope":3010,"src":"11177:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2938,"name":"address","nodeType":"ElementaryTypeName","src":"11177:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2941,"mutability":"mutable","name":"to","nameLocation":"11207:2:14","nodeType":"VariableDeclaration","scope":3010,"src":"11199:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2940,"name":"address","nodeType":"ElementaryTypeName","src":"11199:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2943,"mutability":"mutable","name":"tokenId","nameLocation":"11227:7:14","nodeType":"VariableDeclaration","scope":3010,"src":"11219:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2942,"name":"uint256","nodeType":"ElementaryTypeName","src":"11219:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11167:73:14"},"returnParameters":{"id":2945,"nodeType":"ParameterList","parameters":[],"src":"11258:0:14"},"scope":3166,"src":"11149:598:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3032,"nodeType":"Block","src":"11923:100:14","statements":[{"expression":{"id":3022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3018,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2341,"src":"11933:15:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":3020,"indexExpression":{"id":3019,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3015,"src":"11949:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11933:24:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3021,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"11960:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11933:29:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3023,"nodeType":"ExpressionStatement","src":"11933:29:14"},{"eventCall":{"arguments":[{"arguments":[{"id":3026,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3015,"src":"11994:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3025,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"11986:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11986:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3028,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3013,"src":"12004:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3029,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3015,"src":"12008:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3024,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"11977:8:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11977:39:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3031,"nodeType":"EmitStatement","src":"11972:44:14"}]},"documentation":{"id":3011,"nodeType":"StructuredDocumentation","src":"11753:101:14","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":3033,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"11868:8:14","nodeType":"FunctionDefinition","parameters":{"id":3016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3013,"mutability":"mutable","name":"to","nameLocation":"11885:2:14","nodeType":"VariableDeclaration","scope":3033,"src":"11877:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3012,"name":"address","nodeType":"ElementaryTypeName","src":"11877:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3015,"mutability":"mutable","name":"tokenId","nameLocation":"11897:7:14","nodeType":"VariableDeclaration","scope":3033,"src":"11889:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3014,"name":"uint256","nodeType":"ElementaryTypeName","src":"11889:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11876:29:14"},"returnParameters":{"id":3017,"nodeType":"ParameterList","parameters":[],"src":"11923:0:14"},"scope":3166,"src":"11859:164:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3064,"nodeType":"Block","src":"12282:184:14","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3044,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"12300:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3045,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"12309:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12300:17:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":3047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12319:27:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":3043,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12292:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12292:55:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3049,"nodeType":"ExpressionStatement","src":"12292:55:14"},{"expression":{"id":3056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":3050,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"12357:18:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":3053,"indexExpression":{"id":3051,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"12376:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12357:25:14","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3054,"indexExpression":{"id":3052,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"12383:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12357:35:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3055,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3040,"src":"12395:8:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12357:46:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3057,"nodeType":"ExpressionStatement","src":"12357:46:14"},{"eventCall":{"arguments":[{"id":3059,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"12433:5:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3060,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"12440:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3061,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3040,"src":"12450:8:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3058,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"12418:14:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":3062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12418:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3063,"nodeType":"EmitStatement","src":"12413:46:14"}]},"documentation":{"id":3034,"nodeType":"StructuredDocumentation","src":"12029:125:14","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":3065,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"12168:18:14","nodeType":"FunctionDefinition","parameters":{"id":3041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3036,"mutability":"mutable","name":"owner","nameLocation":"12204:5:14","nodeType":"VariableDeclaration","scope":3065,"src":"12196:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3035,"name":"address","nodeType":"ElementaryTypeName","src":"12196:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3038,"mutability":"mutable","name":"operator","nameLocation":"12227:8:14","nodeType":"VariableDeclaration","scope":3065,"src":"12219:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3037,"name":"address","nodeType":"ElementaryTypeName","src":"12219:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3040,"mutability":"mutable","name":"approved","nameLocation":"12250:8:14","nodeType":"VariableDeclaration","scope":3065,"src":"12245:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3039,"name":"bool","nodeType":"ElementaryTypeName","src":"12245:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12186:78:14"},"returnParameters":{"id":3042,"nodeType":"ParameterList","parameters":[],"src":"12282:0:14"},"scope":3166,"src":"12159:307:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3078,"nodeType":"Block","src":"12613:70:14","statements":[{"expression":{"arguments":[{"arguments":[{"id":3073,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3068,"src":"12639:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3072,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"12631:7:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":3074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12631:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":3075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12649:26:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":3071,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12623:7:14","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12623:53:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3077,"nodeType":"ExpressionStatement","src":"12623:53:14"}]},"documentation":{"id":3066,"nodeType":"StructuredDocumentation","src":"12472:73:14","text":" @dev Reverts if the `tokenId` has not been minted yet."},"id":3079,"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"12559:14:14","nodeType":"FunctionDefinition","parameters":{"id":3069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3068,"mutability":"mutable","name":"tokenId","nameLocation":"12582:7:14","nodeType":"VariableDeclaration","scope":3079,"src":"12574:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3067,"name":"uint256","nodeType":"ElementaryTypeName","src":"12574:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12573:17:14"},"returnParameters":{"id":3070,"nodeType":"ParameterList","parameters":[],"src":"12613:0:14"},"scope":3166,"src":"12550:133:14","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3142,"nodeType":"Block","src":"13390:679:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":3093,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"13404:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"13404:7:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13404:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13421:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13404:18:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3140,"nodeType":"Block","src":"14027:36:14","statements":[{"expression":{"hexValue":"74727565","id":3138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14048:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3092,"id":3139,"nodeType":"Return","src":"14041:11:14"}]},"id":3141,"nodeType":"IfStatement","src":"13400:663:14","trueBody":{"id":3137,"nodeType":"Block","src":"13424:597:14","statements":[{"clauses":[{"block":{"id":3117,"nodeType":"Block","src":"13538:91:14","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3111,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"13563:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":3112,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"13573:15:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$246_$","typeString":"type(contract IERC721Receiver)"}},"id":3113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":245,"src":"13573:32:14","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":3114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"13573:41:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"13563:51:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3092,"id":3116,"nodeType":"Return","src":"13556:58:14"}]},"errorName":"","id":3118,"nodeType":"TryCatchClause","parameters":{"id":3110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3109,"mutability":"mutable","name":"retval","nameLocation":"13530:6:14","nodeType":"VariableDeclaration","scope":3118,"src":"13523:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3108,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13523:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"13522:15:14"},"src":"13514:115:14"},{"block":{"id":3134,"nodeType":"Block","src":"13658:353:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3122,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3120,"src":"13680:6:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13680:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13697:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13680:18:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3132,"nodeType":"Block","src":"13807:190:14","statements":[{"AST":{"nodeType":"YulBlock","src":"13893:86:14","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13930:2:14","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"13934:6:14"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13926:3:14"},"nodeType":"YulFunctionCall","src":"13926:15:14"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"13949:6:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13943:5:14"},"nodeType":"YulFunctionCall","src":"13943:13:14"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13919:6:14"},"nodeType":"YulFunctionCall","src":"13919:38:14"},"nodeType":"YulExpressionStatement","src":"13919:38:14"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":3120,"isOffset":false,"isSlot":false,"src":"13934:6:14","valueSize":1},{"declaration":3120,"isOffset":false,"isSlot":false,"src":"13949:6:14","valueSize":1}],"id":3131,"nodeType":"InlineAssembly","src":"13884:95:14"}]},"id":3133,"nodeType":"IfStatement","src":"13676:321:14","trueBody":{"id":3130,"nodeType":"Block","src":"13700:101:14","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":3127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13729:52:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":3126,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"13722:6:14","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":3128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13722:60:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3129,"nodeType":"ExpressionStatement","src":"13722:60:14"}]}}]},"errorName":"","id":3135,"nodeType":"TryCatchClause","parameters":{"id":3121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3120,"mutability":"mutable","name":"reason","nameLocation":"13650:6:14","nodeType":"VariableDeclaration","scope":3135,"src":"13637:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3119,"name":"bytes","nodeType":"ElementaryTypeName","src":"13637:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13636:21:14"},"src":"13630:381:14"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3102,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"13479:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13479:12:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3104,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3082,"src":"13493:4:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3105,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3086,"src":"13499:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3106,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3088,"src":"13508:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":3099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"13458:2:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3098,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"13442:15:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$246_$","typeString":"type(contract IERC721Receiver)"}},"id":3100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13442:19:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$246","typeString":"contract IERC721Receiver"}},"id":3101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":245,"src":"13442:36:14","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":3107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13442:71:14","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3136,"nodeType":"TryStatement","src":"13438:573:14"}]}}]},"documentation":{"id":3080,"nodeType":"StructuredDocumentation","src":"12689:541:14","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":3143,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"13244:22:14","nodeType":"FunctionDefinition","parameters":{"id":3089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3082,"mutability":"mutable","name":"from","nameLocation":"13284:4:14","nodeType":"VariableDeclaration","scope":3143,"src":"13276:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3081,"name":"address","nodeType":"ElementaryTypeName","src":"13276:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3084,"mutability":"mutable","name":"to","nameLocation":"13306:2:14","nodeType":"VariableDeclaration","scope":3143,"src":"13298:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3083,"name":"address","nodeType":"ElementaryTypeName","src":"13298:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3086,"mutability":"mutable","name":"tokenId","nameLocation":"13326:7:14","nodeType":"VariableDeclaration","scope":3143,"src":"13318:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3085,"name":"uint256","nodeType":"ElementaryTypeName","src":"13318:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3088,"mutability":"mutable","name":"data","nameLocation":"13356:4:14","nodeType":"VariableDeclaration","scope":3143,"src":"13343:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3087,"name":"bytes","nodeType":"ElementaryTypeName","src":"13343:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13266:100:14"},"returnParameters":{"id":3092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3143,"src":"13384:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3090,"name":"bool","nodeType":"ElementaryTypeName","src":"13384:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13383:6:14"},"scope":3166,"src":"13235:834:14","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":3153,"nodeType":"Block","src":"14745:2:14","statements":[]},"documentation":{"id":3144,"nodeType":"StructuredDocumentation","src":"14075:545:14","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":3154,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"14634:20:14","nodeType":"FunctionDefinition","parameters":{"id":3151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3146,"mutability":"mutable","name":"from","nameLocation":"14672:4:14","nodeType":"VariableDeclaration","scope":3154,"src":"14664:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3145,"name":"address","nodeType":"ElementaryTypeName","src":"14664:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3148,"mutability":"mutable","name":"to","nameLocation":"14694:2:14","nodeType":"VariableDeclaration","scope":3154,"src":"14686:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3147,"name":"address","nodeType":"ElementaryTypeName","src":"14686:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3150,"mutability":"mutable","name":"tokenId","nameLocation":"14714:7:14","nodeType":"VariableDeclaration","scope":3154,"src":"14706:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3149,"name":"uint256","nodeType":"ElementaryTypeName","src":"14706:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14654:73:14"},"returnParameters":{"id":3152,"nodeType":"ParameterList","parameters":[],"src":"14745:0:14"},"scope":3166,"src":"14625:122:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3164,"nodeType":"Block","src":"15238:2:14","statements":[]},"documentation":{"id":3155,"nodeType":"StructuredDocumentation","src":"14753:361:14","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":3165,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"15128:19:14","nodeType":"FunctionDefinition","parameters":{"id":3162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3157,"mutability":"mutable","name":"from","nameLocation":"15165:4:14","nodeType":"VariableDeclaration","scope":3165,"src":"15157:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3156,"name":"address","nodeType":"ElementaryTypeName","src":"15157:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3159,"mutability":"mutable","name":"to","nameLocation":"15187:2:14","nodeType":"VariableDeclaration","scope":3165,"src":"15179:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3158,"name":"address","nodeType":"ElementaryTypeName","src":"15179:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3161,"mutability":"mutable","name":"tokenId","nameLocation":"15207:7:14","nodeType":"VariableDeclaration","scope":3165,"src":"15199:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3160,"name":"uint256","nodeType":"ElementaryTypeName","src":"15199:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15147:73:14"},"returnParameters":{"id":3163,"nodeType":"ParameterList","parameters":[],"src":"15238:0:14"},"scope":3166,"src":"15119:121:14","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3167,"src":"1382:13860:14","usedErrors":[]}],"src":"302:14941:14"},"id":14},"contracts/lib/ERC721iEnumerable.sol":{"ast":{"absolutePath":"contracts/lib/ERC721iEnumerable.sol","exportedSymbols":{"Address":[634],"Context":[656],"ERC165":[909],"ERC721":[3166],"ERC721iEnumerable":[3525],"IERC165":[921],"IERC721":[228],"IERC721Enumerable":[277],"IERC721Metadata":[304],"IERC721Receiver":[246],"Math":[1787],"SignedMath":[1892],"Strings":[885]},"id":3526,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3168,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"309:23:15"},{"absolutePath":"contracts/lib/ERC721.sol","file":"./ERC721.sol","id":3169,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3526,"sourceUnit":3167,"src":"334:22:15","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","id":3170,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3526,"sourceUnit":278,"src":"357:79:15","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3172,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":3166,"src":"1104:6:15"},"id":3173,"nodeType":"InheritanceSpecifier","src":"1104:6:15"},{"baseName":{"id":3174,"name":"IERC721Enumerable","nodeType":"IdentifierPath","referencedDeclaration":277,"src":"1112:17:15"},"id":3175,"nodeType":"InheritanceSpecifier","src":"1112:17:15"}],"canonicalName":"ERC721iEnumerable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3171,"nodeType":"StructuredDocumentation","src":"438:626:15","text":" @dev This implements an optional extension of {ERC721} defined in the EIP that adds\n enumerability of all the token ids in the contract as well as all token ids owned by each\n account.\n @dev This implementation also includes support for pre-minting a max-supply of tokens up-front.\n Note on pre-mint:\n Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs.\n For this reason, the \"allTokens\" state vars are unneccesary and have been removed.\n Also defines 2 light-weight state vars: \"_preMintReceiver\" & \"_maxSupply\"\n Overrides \"ownerOf\" & \"_exists\""},"fullyImplemented":false,"id":3525,"linearizedBaseContracts":[3525,277,3166,304,228,909,921,656],"name":"ERC721iEnumerable","nameLocation":"1083:17:15","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3181,"mutability":"mutable","name":"_ownedTokens","nameLocation":"1241:12:15","nodeType":"VariableDeclaration","scope":3525,"src":"1185:68:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":3180,"keyType":{"id":3176,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:47:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueType":{"id":3179,"keyType":{"id":3177,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1204:27:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":3178,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":3185,"mutability":"mutable","name":"_ownedTokensIndex","nameLocation":"1355:17:15","nodeType":"VariableDeclaration","scope":3525,"src":"1319:53:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":3184,"keyType":{"id":3182,"name":"uint256","nodeType":"ElementaryTypeName","src":"1327:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1319:27:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":3183,"name":"uint256","nodeType":"ElementaryTypeName","src":"1338:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":3187,"mutability":"mutable","name":"_preMintReceiver","nameLocation":"1434:16:15","nodeType":"VariableDeclaration","scope":3525,"src":"1417:33:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3186,"name":"address","nodeType":"ElementaryTypeName","src":"1417:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3189,"mutability":"mutable","name":"_maxSupply","nameLocation":"1501:10:15","nodeType":"VariableDeclaration","scope":3525,"src":"1484:27:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3188,"name":"uint256","nodeType":"ElementaryTypeName","src":"1484:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"baseFunctions":[920,2395],"body":{"id":3212,"nodeType":"Block","src":"1788:108:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3200,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"1801:11:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3202,"name":"IERC721Enumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":277,"src":"1821:17:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Enumerable_$277_$","typeString":"type(contract IERC721Enumerable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Enumerable_$277_$","typeString":"type(contract IERC721Enumerable)"}],"id":3201,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1816:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1816:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Enumerable_$277","typeString":"type(contract IERC721Enumerable)"}},"id":3204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"1816:35:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1801:50:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":3208,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3192,"src":"1879:11:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":3206,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1855:5:15","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721iEnumerable_$3525_$","typeString":"type(contract super ERC721iEnumerable)"}},"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2395,"src":"1855:23:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":3209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1855:36:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1801:90:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3199,"id":3211,"nodeType":"Return","src":"1794:97:15"}]},"documentation":{"id":3190,"nodeType":"StructuredDocumentation","src":"1516:161:15","text":" @dev See {IERC165-supportsInterface}.\n Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable"},"functionSelector":"01ffc9a7","id":3213,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1689:17:15","nodeType":"FunctionDefinition","overrides":{"id":3196,"nodeType":"OverrideSpecifier","overrides":[{"id":3194,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":921,"src":"1756:7:15"},{"id":3195,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":3166,"src":"1765:6:15"}],"src":"1747:25:15"},"parameters":{"id":3193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3192,"mutability":"mutable","name":"interfaceId","nameLocation":"1714:11:15","nodeType":"VariableDeclaration","scope":3213,"src":"1707:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3191,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1707:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1706:20:15"},"returnParameters":{"id":3199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3198,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3213,"src":"1782:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3197,"name":"bool","nodeType":"ElementaryTypeName","src":"1782:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1781:6:15"},"scope":3525,"src":"1680:216:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[268],"body":{"id":3292,"nodeType":"Block","src":"2115:468:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3225,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"2129:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"id":3228,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"2154:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3226,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"2137:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$3166_$","typeString":"type(contract ERC721)"}},"id":3227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2419,"src":"2137:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2137:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2129:31:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e6473","id":3231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2162:45:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","typeString":"literal_string \"ERC721Enumerable: owner index out of bounds\""},"value":"ERC721Enumerable: owner index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","typeString":"literal_string \"ERC721Enumerable: owner index out of bounds\""}],"id":3224,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2121:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2121:87:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3233,"nodeType":"ExpressionStatement","src":"2121:87:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3234,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"2218:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3237,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3187,"src":"2235:16:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2227:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3235,"name":"address","nodeType":"ElementaryTypeName","src":"2227:7:15","typeDescriptions":{}}},"id":3238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2227:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2218:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3285,"nodeType":"IfStatement","src":"2214:326:15","trueBody":{"id":3284,"nodeType":"Block","src":"2254:286:15","statements":[{"assignments":[3241],"declarations":[{"constant":false,"id":3241,"mutability":"mutable","name":"supply","nameLocation":"2270:6:15","nodeType":"VariableDeclaration","scope":3284,"src":"2262:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3240,"name":"uint256","nodeType":"ElementaryTypeName","src":"2262:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3244,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3242,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3303,"src":"2279:11:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":3243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2279:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2262:30:15"},{"assignments":[3246],"declarations":[{"constant":false,"id":3246,"mutability":"mutable","name":"matched","nameLocation":"2308:7:15","nodeType":"VariableDeclaration","scope":3284,"src":"2300:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3245,"name":"uint256","nodeType":"ElementaryTypeName","src":"2300:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3248,"initialValue":{"hexValue":"30","id":3247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2318:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2300:19:15"},{"body":{"id":3282,"nodeType":"Block","src":"2364:170:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3260,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"2386:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3259,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[3366],"referencedDeclaration":3366,"src":"2378:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":3261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2378:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3264,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3187,"src":"2400:16:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2392:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3262,"name":"address","nodeType":"ElementaryTypeName","src":"2392:7:15","typeDescriptions":{}}},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2392:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2378:39:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3281,"nodeType":"IfStatement","src":"2374:152:15","trueBody":{"id":3280,"nodeType":"Block","src":"2419:107:15","statements":[{"expression":{"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3267,"name":"matched","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"2431:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2442:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2431:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3270,"nodeType":"ExpressionStatement","src":"2431:12:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3271,"name":"matched","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"2459:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2469:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2459:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3274,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"2474:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2459:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3279,"nodeType":"IfStatement","src":"2455:61:15","trueBody":{"id":3278,"nodeType":"Block","src":"2481:35:15","statements":[{"expression":{"id":3276,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"2502:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3223,"id":3277,"nodeType":"Return","src":"2495:8:15"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3253,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"2347:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3254,"name":"supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"2351:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2347:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3283,"initializationExpression":{"assignments":[3250],"declarations":[{"constant":false,"id":3250,"mutability":"mutable","name":"i","nameLocation":"2340:1:15","nodeType":"VariableDeclaration","scope":3283,"src":"2332:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3249,"name":"uint256","nodeType":"ElementaryTypeName","src":"2332:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3252,"initialValue":{"hexValue":"31","id":3251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2344:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"2332:13:15"},"loopExpression":{"expression":{"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2359:3:15","subExpression":{"id":3256,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"2359:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3258,"nodeType":"ExpressionStatement","src":"2359:3:15"},"nodeType":"ForStatement","src":"2327:207:15"}]}},{"expression":{"baseExpression":{"baseExpression":{"id":3286,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"2552:12:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":3288,"indexExpression":{"id":3287,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3216,"src":"2565:5:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2552:19:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3290,"indexExpression":{"id":3289,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3218,"src":"2572:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2552:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3223,"id":3291,"nodeType":"Return","src":"2545:33:15"}]},"documentation":{"id":3214,"nodeType":"StructuredDocumentation","src":"1900:106:15","text":" @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n note: Fix contributed by surfer77"},"functionSelector":"2f745c59","id":3293,"implemented":true,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"2018:19:15","nodeType":"FunctionDefinition","overrides":{"id":3220,"nodeType":"OverrideSpecifier","overrides":[],"src":"2088:8:15"},"parameters":{"id":3219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3216,"mutability":"mutable","name":"owner","nameLocation":"2046:5:15","nodeType":"VariableDeclaration","scope":3293,"src":"2038:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3215,"name":"address","nodeType":"ElementaryTypeName","src":"2038:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3218,"mutability":"mutable","name":"index","nameLocation":"2061:5:15","nodeType":"VariableDeclaration","scope":3293,"src":"2053:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3217,"name":"uint256","nodeType":"ElementaryTypeName","src":"2053:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2037:30:15"},"returnParameters":{"id":3223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3293,"src":"2106:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3221,"name":"uint256","nodeType":"ElementaryTypeName","src":"2106:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2105:9:15"},"scope":3525,"src":"2009:574:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[258],"body":{"id":3302,"nodeType":"Block","src":"2718:77:15","statements":[{"expression":{"id":3300,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3189,"src":"2780:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3299,"id":3301,"nodeType":"Return","src":"2773:17:15"}]},"documentation":{"id":3294,"nodeType":"StructuredDocumentation","src":"2587:58:15","text":" @dev See {IERC721Enumerable-totalSupply}."},"functionSelector":"18160ddd","id":3303,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2657:11:15","nodeType":"FunctionDefinition","overrides":{"id":3296,"nodeType":"OverrideSpecifier","overrides":[],"src":"2691:8:15"},"parameters":{"id":3295,"nodeType":"ParameterList","parameters":[],"src":"2668:2:15"},"returnParameters":{"id":3299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3303,"src":"2709:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3297,"name":"uint256","nodeType":"ElementaryTypeName","src":"2709:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2708:9:15"},"scope":3525,"src":"2648:147:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[276],"body":{"id":3323,"nodeType":"Block","src":"2945:181:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3313,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3306,"src":"2959:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3314,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3189,"src":"2967:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2959:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473","id":3316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2979:46:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","typeString":"literal_string \"ERC721Enumerable: global index out of bounds\""},"value":"ERC721Enumerable: global index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","typeString":"literal_string \"ERC721Enumerable: global index out of bounds\""}],"id":3312,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2951:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2951:75:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3318,"nodeType":"ExpressionStatement","src":"2951:75:15"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3319,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3306,"src":"3112:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3120:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3112:9:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3311,"id":3322,"nodeType":"Return","src":"3105:16:15"}]},"documentation":{"id":3304,"nodeType":"StructuredDocumentation","src":"2799:59:15","text":" @dev See {IERC721Enumerable-tokenByIndex}."},"functionSelector":"4f6ccce7","id":3324,"implemented":true,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"2870:12:15","nodeType":"FunctionDefinition","overrides":{"id":3308,"nodeType":"OverrideSpecifier","overrides":[],"src":"2918:8:15"},"parameters":{"id":3307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3306,"mutability":"mutable","name":"index","nameLocation":"2891:5:15","nodeType":"VariableDeclaration","scope":3324,"src":"2883:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3305,"name":"uint256","nodeType":"ElementaryTypeName","src":"2883:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2882:15:15"},"returnParameters":{"id":3311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3310,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3324,"src":"2936:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3309,"name":"uint256","nodeType":"ElementaryTypeName","src":"2936:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2935:9:15"},"scope":3525,"src":"2861:265:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[161,2447],"body":{"id":3365,"nodeType":"Block","src":"3329:576:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3335,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"3416:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3336,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3189,"src":"3426:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3416:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3344,"nodeType":"IfStatement","src":"3412:70:15","trueBody":{"id":3343,"nodeType":"Block","src":"3438:44:15","statements":[{"expression":{"arguments":[{"id":3340,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"3467:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3338,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3453:5:15","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721iEnumerable_$3525_$","typeString":"type(contract super ERC721iEnumerable)"}},"id":3339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":2447,"src":"3453:13:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":3341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3453:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3334,"id":3342,"nodeType":"Return","src":"3446:29:15"}]}},{"assignments":[3346],"declarations":[{"constant":false,"id":3346,"mutability":"mutable","name":"owner_","nameLocation":"3785:6:15","nodeType":"VariableDeclaration","scope":3365,"src":"3777:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3345,"name":"address","nodeType":"ElementaryTypeName","src":"3777:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3350,"initialValue":{"baseExpression":{"id":3347,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"3794:7:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":3349,"indexExpression":{"id":3348,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"3802:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3794:16:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3777:33:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3351,"name":"owner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"3820:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3838:1:15","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":3353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3830:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3352,"name":"address","nodeType":"ElementaryTypeName","src":"3830:7:15","typeDescriptions":{}}},"id":3355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3830:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3820:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3362,"nodeType":"IfStatement","src":"3816:66:15","trueBody":{"id":3361,"nodeType":"Block","src":"3842:40:15","statements":[{"expression":{"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3357,"name":"owner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"3850:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3358,"name":"_preMintReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3187,"src":"3859:16:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3850:25:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3360,"nodeType":"ExpressionStatement","src":"3850:25:15"}]}},{"expression":{"id":3363,"name":"owner_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"3894:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3334,"id":3364,"nodeType":"Return","src":"3887:13:15"}]},"documentation":{"id":3325,"nodeType":"StructuredDocumentation","src":"3130:98:15","text":" @dev Override the ERC721 \"ownerOf\" function to account for the Pre-Mint Receiver."},"functionSelector":"6352211e","id":3366,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"3240:7:15","nodeType":"FunctionDefinition","overrides":{"id":3331,"nodeType":"OverrideSpecifier","overrides":[{"id":3329,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":228,"src":"3294:7:15"},{"id":3330,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":3166,"src":"3303:6:15"}],"src":"3285:25:15"},"parameters":{"id":3328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3327,"mutability":"mutable","name":"tokenId","nameLocation":"3256:7:15","nodeType":"VariableDeclaration","scope":3366,"src":"3248:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3326,"name":"uint256","nodeType":"ElementaryTypeName","src":"3248:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3247:17:15"},"returnParameters":{"id":3334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3366,"src":"3320:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3332,"name":"address","nodeType":"ElementaryTypeName","src":"3320:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3319:9:15"},"scope":3525,"src":"3231:674:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2733],"body":{"id":3395,"nodeType":"Block","src":"4102:285:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3376,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3369,"src":"4189:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3377,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3189,"src":"4199:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4189:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3385,"nodeType":"IfStatement","src":"4185:70:15","trueBody":{"id":3384,"nodeType":"Block","src":"4211:44:15","statements":[{"expression":{"arguments":[{"id":3381,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3369,"src":"4240:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3379,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4226:5:15","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721iEnumerable_$3525_$","typeString":"type(contract super ERC721iEnumerable)"}},"id":3380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_exists","nodeType":"MemberAccess","referencedDeclaration":2733,"src":"4226:13:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":3382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4226:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3375,"id":3383,"nodeType":"Return","src":"4219:29:15"}]}},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3386,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3369,"src":"4345:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4355:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4345:11:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3389,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3369,"src":"4360:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3390,"name":"_maxSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3189,"src":"4371:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4360:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4345:36:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3393,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4344:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3375,"id":3394,"nodeType":"Return","src":"4337:45:15"}]},"documentation":{"id":3367,"nodeType":"StructuredDocumentation","src":"3909:102:15","text":" @dev Override the ERC721 \"_exists\" function to account for the Pre-Minted Max-Supply."},"id":3396,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"4023:7:15","nodeType":"FunctionDefinition","overrides":{"id":3372,"nodeType":"OverrideSpecifier","overrides":[{"id":3371,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":3166,"src":"4079:6:15"}],"src":"4070:16:15"},"parameters":{"id":3370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3369,"mutability":"mutable","name":"tokenId","nameLocation":"4039:7:15","nodeType":"VariableDeclaration","scope":3396,"src":"4031:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3368,"name":"uint256","nodeType":"ElementaryTypeName","src":"4031:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4030:17:15"},"returnParameters":{"id":3375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3396,"src":"4096:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3373,"name":"bool","nodeType":"ElementaryTypeName","src":"4096:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4095:6:15"},"scope":3525,"src":"4014:373:15","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[3154],"body":{"id":3430,"nodeType":"Block","src":"4576:188:15","statements":[{"expression":{"arguments":[{"id":3410,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"4609:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3411,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"4615:2:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3412,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3403,"src":"4619:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3407,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4582:5:15","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721iEnumerable_$3525_$","typeString":"type(contract super ERC721iEnumerable)"}},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_beforeTokenTransfer","nodeType":"MemberAccess","referencedDeclaration":3154,"src":"4582:26:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4582:45:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3414,"nodeType":"ExpressionStatement","src":"4582:45:15"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3415,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"4638:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3416,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"4646:2:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4638:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3429,"nodeType":"IfStatement","src":"4634:126:15","trueBody":{"id":3428,"nodeType":"Block","src":"4650:110:15","statements":[{"expression":{"arguments":[{"id":3419,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"4691:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3420,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3403,"src":"4697:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3418,"name":"_removeTokenFromOwnerEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"4658:32:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4658:47:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3422,"nodeType":"ExpressionStatement","src":"4658:47:15"},{"expression":{"arguments":[{"id":3424,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"4741:2:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3425,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3403,"src":"4745:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3423,"name":"_addTokenToOwnerEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"4713:27:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4713:40:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3427,"nodeType":"ExpressionStatement","src":"4713:40:15"}]}}]},"documentation":{"id":3397,"nodeType":"StructuredDocumentation","src":"4391:67:15","text":" @dev See {IERC721Enumerable-_beforeTokenTransfer}."},"id":3431,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"4470:20:15","nodeType":"FunctionDefinition","overrides":{"id":3405,"nodeType":"OverrideSpecifier","overrides":[],"src":"4567:8:15"},"parameters":{"id":3404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3399,"mutability":"mutable","name":"from","nameLocation":"4504:4:15","nodeType":"VariableDeclaration","scope":3431,"src":"4496:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3398,"name":"address","nodeType":"ElementaryTypeName","src":"4496:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3401,"mutability":"mutable","name":"to","nameLocation":"4522:2:15","nodeType":"VariableDeclaration","scope":3431,"src":"4514:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3400,"name":"address","nodeType":"ElementaryTypeName","src":"4514:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3403,"mutability":"mutable","name":"tokenId","nameLocation":"4538:7:15","nodeType":"VariableDeclaration","scope":3431,"src":"4530:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3402,"name":"uint256","nodeType":"ElementaryTypeName","src":"4530:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4490:59:15"},"returnParameters":{"id":3406,"nodeType":"ParameterList","parameters":[],"src":"4576:0:15"},"scope":3525,"src":"4461:303:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3460,"nodeType":"Block","src":"4919:129:15","statements":[{"assignments":[3440],"declarations":[{"constant":false,"id":3440,"mutability":"mutable","name":"length","nameLocation":"4933:6:15","nodeType":"VariableDeclaration","scope":3460,"src":"4925:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3439,"name":"uint256","nodeType":"ElementaryTypeName","src":"4925:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3445,"initialValue":{"arguments":[{"id":3443,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"4959:2:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3441,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"4942:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$3166_$","typeString":"type(contract ERC721)"}},"id":3442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2419,"src":"4942:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4942:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4925:37:15"},{"expression":{"id":3452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":3446,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"4968:12:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":3449,"indexExpression":{"id":3447,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"4981:2:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4968:16:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3450,"indexExpression":{"id":3448,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3440,"src":"4985:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4968:24:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3451,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3436,"src":"4995:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4968:34:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3453,"nodeType":"ExpressionStatement","src":"4968:34:15"},{"expression":{"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3454,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"5008:17:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3456,"indexExpression":{"id":3455,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3436,"src":"5026:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5008:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3457,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3440,"src":"5037:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5008:35:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3459,"nodeType":"ExpressionStatement","src":"5008:35:15"}]},"documentation":{"id":3432,"nodeType":"StructuredDocumentation","src":"4768:74:15","text":" @dev See {IERC721Enumerable-_addTokenToOwnerEnumeration}."},"id":3461,"implemented":true,"kind":"function","modifiers":[],"name":"_addTokenToOwnerEnumeration","nameLocation":"4854:27:15","nodeType":"FunctionDefinition","parameters":{"id":3437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3434,"mutability":"mutable","name":"to","nameLocation":"4890:2:15","nodeType":"VariableDeclaration","scope":3461,"src":"4882:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3433,"name":"address","nodeType":"ElementaryTypeName","src":"4882:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3436,"mutability":"mutable","name":"tokenId","nameLocation":"4902:7:15","nodeType":"VariableDeclaration","scope":3461,"src":"4894:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3435,"name":"uint256","nodeType":"ElementaryTypeName","src":"4894:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4881:29:15"},"returnParameters":{"id":3438,"nodeType":"ParameterList","parameters":[],"src":"4919:0:15"},"scope":3525,"src":"4845:203:15","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":3523,"nodeType":"Block","src":"5215:829:15","statements":[{"assignments":[3470],"declarations":[{"constant":false,"id":3470,"mutability":"mutable","name":"lastTokenIndex","nameLocation":"5392:14:15","nodeType":"VariableDeclaration","scope":3523,"src":"5384:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3469,"name":"uint256","nodeType":"ElementaryTypeName","src":"5384:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3477,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3473,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"5426:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3471,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"5409:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$3166_$","typeString":"type(contract ERC721)"}},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2419,"src":"5409:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5409:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5434:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5409:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5384:51:15"},{"assignments":[3479],"declarations":[{"constant":false,"id":3479,"mutability":"mutable","name":"tokenIndex","nameLocation":"5449:10:15","nodeType":"VariableDeclaration","scope":3523,"src":"5441:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3478,"name":"uint256","nodeType":"ElementaryTypeName","src":"5441:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3483,"initialValue":{"baseExpression":{"id":3480,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"5462:17:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3482,"indexExpression":{"id":3481,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3466,"src":"5480:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5462:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5441:47:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3484,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3479,"src":"5584:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3485,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3470,"src":"5598:14:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5584:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3510,"nodeType":"IfStatement","src":"5580:301:15","trueBody":{"id":3509,"nodeType":"Block","src":"5614:267:15","statements":[{"assignments":[3488],"declarations":[{"constant":false,"id":3488,"mutability":"mutable","name":"lastTokenId","nameLocation":"5630:11:15","nodeType":"VariableDeclaration","scope":3509,"src":"5622:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3487,"name":"uint256","nodeType":"ElementaryTypeName","src":"5622:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3494,"initialValue":{"baseExpression":{"baseExpression":{"id":3489,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"5644:12:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":3491,"indexExpression":{"id":3490,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"5657:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5644:18:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3493,"indexExpression":{"id":3492,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3470,"src":"5663:14:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5644:34:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5622:56:15"},{"expression":{"id":3501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":3495,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"5687:12:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":3498,"indexExpression":{"id":3496,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"5700:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5687:18:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3499,"indexExpression":{"id":3497,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3479,"src":"5706:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5687:30:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3500,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3488,"src":"5720:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5687:44:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3502,"nodeType":"ExpressionStatement","src":"5687:44:15"},{"expression":{"id":3507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3503,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"5797:17:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3505,"indexExpression":{"id":3504,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3488,"src":"5815:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5797:30:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3506,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3479,"src":"5830:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5797:43:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3508,"nodeType":"ExpressionStatement","src":"5797:43:15"}]}},{"expression":{"id":3514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5959:33:15","subExpression":{"baseExpression":{"id":3511,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3185,"src":"5966:17:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3513,"indexExpression":{"id":3512,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3466,"src":"5984:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5966:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3515,"nodeType":"ExpressionStatement","src":"5959:33:15"},{"expression":{"id":3521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5998:41:15","subExpression":{"baseExpression":{"baseExpression":{"id":3516,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"6005:12:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":3518,"indexExpression":{"id":3517,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3464,"src":"6018:4:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6005:18:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":3520,"indexExpression":{"id":3519,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3470,"src":"6024:14:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6005:34:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3522,"nodeType":"ExpressionStatement","src":"5998:41:15"}]},"documentation":{"id":3462,"nodeType":"StructuredDocumentation","src":"5052:79:15","text":" @dev See {IERC721Enumerable-_removeTokenFromOwnerEnumeration}."},"id":3524,"implemented":true,"kind":"function","modifiers":[],"name":"_removeTokenFromOwnerEnumeration","nameLocation":"5143:32:15","nodeType":"FunctionDefinition","parameters":{"id":3467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3464,"mutability":"mutable","name":"from","nameLocation":"5184:4:15","nodeType":"VariableDeclaration","scope":3524,"src":"5176:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3463,"name":"address","nodeType":"ElementaryTypeName","src":"5176:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3466,"mutability":"mutable","name":"tokenId","nameLocation":"5198:7:15","nodeType":"VariableDeclaration","scope":3524,"src":"5190:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3465,"name":"uint256","nodeType":"ElementaryTypeName","src":"5190:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5175:31:15"},"returnParameters":{"id":3468,"nodeType":"ParameterList","parameters":[],"src":"5215:0:15"},"scope":3525,"src":"5134:910:15","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":3526,"src":"1065:4981:15","usedErrors":[]}],"src":"309:5738:15"},"id":15}},"contracts":{"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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.13+commit.abaa5c0e\"},\"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC721 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":"ERC721 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.13+commit.abaa5c0e\"},\"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 ERC721 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\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"IERC721Enumerable":{"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":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"See https://eips.ethereum.org/EIPS/eip-721","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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"tokenByIndex(uint256)":{"details":"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens."},"tokenOfOwnerByIndex(address,uint256)":{"details":"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"totalSupply()":{"details":"Returns the total amount of tokens stored by the contract."},"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 ERC721 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."}},"title":"ERC-721 Non-Fungible Token Standard, optional enumeration extension","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","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"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 ERC721 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.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Enumerable is IERC721 {\\n /**\\n * @dev Returns the total amount of tokens stored by the contract.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\\n * Use along with {totalSupply} to enumerate all tokens.\\n */\\n function tokenByIndex(uint256 index) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"See https://eips.ethereum.org/EIPS/eip-721","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}"},"name()":{"details":"Returns the token collection name."},"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"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 ERC721 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."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","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","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"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}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"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 ERC721 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.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c69445eab20c1bbbd8e32607b6ee96f65377d4a7f653dc7f3367b5ce711236e64736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 0x2C PUSH10 0x445EAB20C1BBBD8E3260 PUSH28 0x6EE96F65377D4A7F653DC7F3367B5CE711236E64736F6C634300080D STOP CALLER ","sourceMap":"194:9169:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c69445eab20c1bbbd8e32607b6ee96f65377d4a7f653dc7f3367b5ce711236e64736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C PUSH10 0x445EAB20C1BBBD8E3260 PUSH28 0x6EE96F65377D4A7F653DC7F3367B5CE711236E64736F6C634300080D STOP CALLER ","sourceMap":"194:9169:5:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fe33877dc3b543331045a7fad8df6528ca3a558fa500af760ddfe6556fe4a6764736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 0xF 0xE3 CODESIZE PUSH24 0xDC3B543331045A7FAD8DF6528CA3A558FA500AF760DDFE65 JUMP INVALID 0x4A PUSH8 0x64736F6C63430008 0xD STOP CALLER ","sourceMap":"220:2559:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fe33877dc3b543331045a7fad8df6528ca3a558fa500af760ddfe6556fe4a6764736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF 0xE3 CODESIZE PUSH24 0xDC3B543331045A7FAD8DF6528CA3A558FA500AF760DDFE65 JUMP INVALID 0x4A PUSH8 0x64736F6C63430008 0xD STOP CALLER ","sourceMap":"220:2559:7:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"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.13+commit.abaa5c0e\"},\"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\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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.13+commit.abaa5c0e\"},\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ff279c248c865934fc9794769239e1a6a591e89789ec518f51e46031f69ab92a64736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 SELFDESTRUCT 0x27 SWAP13 0x24 DUP13 DUP7 MSIZE CALLVALUE 0xFC SWAP8 SWAP5 PUSH23 0x9239E1A6A591E89789EC518F51E46031F69AB92A64736F PUSH13 0x634300080D0033000000000000 ","sourceMap":"202:12582:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ff279c248c865934fc9794769239e1a6a591e89789ec518f51e46031f69ab92a64736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFDESTRUCT 0x27 SWAP13 0x24 DUP13 DUP7 MSIZE CALLVALUE 0xFC SWAP8 SWAP5 PUSH23 0x9239E1A6A591E89789EC518F51E46031F69AB92A64736F PUSH13 0x634300080D0033000000000000 ","sourceMap":"202:12582:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum Math.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum Math.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum Math.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum Math.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum Math.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c616ba86b545d147d95d377117c30fcfaac32d4ba4752e6193d0b63fc60cd3d764736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 0xC6 AND 0xBA DUP7 0xB5 GASLIMIT 0xD1 SELFBALANCE 0xD9 0x5D CALLDATACOPY PUSH18 0x17C30FCFAAC32D4BA4752E6193D0B63FC60C 0xD3 0xD7 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"215:1047:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c616ba86b545d147d95d377117c30fcfaac32d4ba4752e6193d0b63fc60cd3d764736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 AND 0xBA DUP7 0xB5 GASLIMIT 0xD1 SELFBALANCE 0xD9 0x5D CALLDATACOPY PUSH18 0x17C30FCFAAC32D4BA4752E6193D0B63FC60C 0xD3 0xD7 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"215:1047:11:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ERC721All.sol":{"ERC721All":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"todo...","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"Overrides {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"owner()":{"details":"Returns the address of the current owner."},"ownerOf(uint256)":{"details":"Overrides {IERC721-ownerOf}."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_1919":{"entryPoint":null,"id":1919,"parameterSlots":2,"returnSlots":0},"@_23":{"entryPoint":null,"id":23,"parameterSlots":0,"returnSlots":0},"@_2364":{"entryPoint":null,"id":2364,"parameterSlots":2,"returnSlots":0},"@_msgSender_646":{"entryPoint":149,"id":646,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_111":{"entryPoint":157,"id":111,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr_fromMemory":{"entryPoint":816,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_string_memory_ptr_fromMemory":{"entryPoint":891,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":942,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_memory":{"entryPoint":677,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":529,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":708,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":762,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1122,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":623,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x22":{"entryPoint":1075,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":576,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":549,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":554,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":544,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":539,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":559,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4093:16","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:16","statements":[{"nodeType":"YulAssignment","src":"57:19:16","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:16","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:16"},"nodeType":"YulFunctionCall","src":"67:9:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:16"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:16","type":""}],"src":"7:75:16"},{"body":{"nodeType":"YulBlock","src":"177:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:16"},"nodeType":"YulFunctionCall","src":"187:12:16"},"nodeType":"YulExpressionStatement","src":"187:12:16"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:16"},{"body":{"nodeType":"YulBlock","src":"300:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:16"},"nodeType":"YulFunctionCall","src":"310:12:16"},"nodeType":"YulExpressionStatement","src":"310:12:16"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:16"},{"body":{"nodeType":"YulBlock","src":"423:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"440:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"443:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"433:6:16"},"nodeType":"YulFunctionCall","src":"433:12:16"},"nodeType":"YulExpressionStatement","src":"433:12:16"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"334:117:16"},{"body":{"nodeType":"YulBlock","src":"546:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:16"},"nodeType":"YulFunctionCall","src":"556:12:16"},"nodeType":"YulExpressionStatement","src":"556:12:16"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"457:117:16"},{"body":{"nodeType":"YulBlock","src":"628:54:16","statements":[{"nodeType":"YulAssignment","src":"638:38:16","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"656:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"663:2:16","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"652:3:16"},"nodeType":"YulFunctionCall","src":"652:14:16"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:16","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"668:3:16"},"nodeType":"YulFunctionCall","src":"668:7:16"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"648:3:16"},"nodeType":"YulFunctionCall","src":"648:28:16"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"638:6:16"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"611:5:16","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"621:6:16","type":""}],"src":"580:102:16"},{"body":{"nodeType":"YulBlock","src":"716:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"733:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"736:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"726:6:16"},"nodeType":"YulFunctionCall","src":"726:88:16"},"nodeType":"YulExpressionStatement","src":"726:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"830:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"833:4:16","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"823:6:16"},"nodeType":"YulFunctionCall","src":"823:15:16"},"nodeType":"YulExpressionStatement","src":"823:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"854:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"857:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"847:6:16"},"nodeType":"YulFunctionCall","src":"847:15:16"},"nodeType":"YulExpressionStatement","src":"847:15:16"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"688:180:16"},{"body":{"nodeType":"YulBlock","src":"917:238:16","statements":[{"nodeType":"YulVariableDeclaration","src":"927:58:16","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"949:6:16"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"979:4:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"957:21:16"},"nodeType":"YulFunctionCall","src":"957:27:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"945:3:16"},"nodeType":"YulFunctionCall","src":"945:40:16"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"931:10:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"1096:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1098:16:16"},"nodeType":"YulFunctionCall","src":"1098:18:16"},"nodeType":"YulExpressionStatement","src":"1098:18:16"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1039:10:16"},{"kind":"number","nodeType":"YulLiteral","src":"1051:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1036:2:16"},"nodeType":"YulFunctionCall","src":"1036:34:16"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1075:10:16"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1087:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:16"},"nodeType":"YulFunctionCall","src":"1072:22:16"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1033:2:16"},"nodeType":"YulFunctionCall","src":"1033:62:16"},"nodeType":"YulIf","src":"1030:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1134:2:16","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1138:10:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1127:6:16"},"nodeType":"YulFunctionCall","src":"1127:22:16"},"nodeType":"YulExpressionStatement","src":"1127:22:16"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"903:6:16","type":""},{"name":"size","nodeType":"YulTypedName","src":"911:4:16","type":""}],"src":"874:281:16"},{"body":{"nodeType":"YulBlock","src":"1202:88:16","statements":[{"nodeType":"YulAssignment","src":"1212:30:16","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1222:18:16"},"nodeType":"YulFunctionCall","src":"1222:20:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1212:6:16"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1271:6:16"},{"name":"size","nodeType":"YulIdentifier","src":"1279:4:16"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1251:19:16"},"nodeType":"YulFunctionCall","src":"1251:33:16"},"nodeType":"YulExpressionStatement","src":"1251:33:16"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1186:4:16","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1195:6:16","type":""}],"src":"1161:129:16"},{"body":{"nodeType":"YulBlock","src":"1363:241:16","statements":[{"body":{"nodeType":"YulBlock","src":"1468:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1470:16:16"},"nodeType":"YulFunctionCall","src":"1470:18:16"},"nodeType":"YulExpressionStatement","src":"1470:18:16"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1440:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"1448:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1437:2:16"},"nodeType":"YulFunctionCall","src":"1437:30:16"},"nodeType":"YulIf","src":"1434:56:16"},{"nodeType":"YulAssignment","src":"1500:37:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1530:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1508:21:16"},"nodeType":"YulFunctionCall","src":"1508:29:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1500:4:16"}]},{"nodeType":"YulAssignment","src":"1574:23:16","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1586:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"1592:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1582:3:16"},"nodeType":"YulFunctionCall","src":"1582:15:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1574:4:16"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1347:6:16","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1358:4:16","type":""}],"src":"1296:308:16"},{"body":{"nodeType":"YulBlock","src":"1659:258:16","statements":[{"nodeType":"YulVariableDeclaration","src":"1669:10:16","value":{"kind":"number","nodeType":"YulLiteral","src":"1678:1:16","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1673:1:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"1738:63:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1763:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1768:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1759:3:16"},"nodeType":"YulFunctionCall","src":"1759:11:16"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1782:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1787:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1778:3:16"},"nodeType":"YulFunctionCall","src":"1778:11:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1772:5:16"},"nodeType":"YulFunctionCall","src":"1772:18:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:16"},"nodeType":"YulFunctionCall","src":"1752:39:16"},"nodeType":"YulExpressionStatement","src":"1752:39:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1699:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"1702:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1696:2:16"},"nodeType":"YulFunctionCall","src":"1696:13:16"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1710:19:16","statements":[{"nodeType":"YulAssignment","src":"1712:15:16","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1721:1:16"},{"kind":"number","nodeType":"YulLiteral","src":"1724:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1717:3:16"},"nodeType":"YulFunctionCall","src":"1717:10:16"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1712:1:16"}]}]},"pre":{"nodeType":"YulBlock","src":"1692:3:16","statements":[]},"src":"1688:113:16"},{"body":{"nodeType":"YulBlock","src":"1835:76:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1885:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1881:3:16"},"nodeType":"YulFunctionCall","src":"1881:16:16"},{"kind":"number","nodeType":"YulLiteral","src":"1899:1:16","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1874:6:16"},"nodeType":"YulFunctionCall","src":"1874:27:16"},"nodeType":"YulExpressionStatement","src":"1874:27:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1816:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"1819:6:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1813:2:16"},"nodeType":"YulFunctionCall","src":"1813:13:16"},"nodeType":"YulIf","src":"1810:101:16"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1641:3:16","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1646:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1651:6:16","type":""}],"src":"1610:307:16"},{"body":{"nodeType":"YulBlock","src":"2018:326:16","statements":[{"nodeType":"YulAssignment","src":"2028:75:16","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2095:6:16"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2053:41:16"},"nodeType":"YulFunctionCall","src":"2053:49:16"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2037:15:16"},"nodeType":"YulFunctionCall","src":"2037:66:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2028:5:16"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2119:5:16"},{"name":"length","nodeType":"YulIdentifier","src":"2126:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2112:6:16"},"nodeType":"YulFunctionCall","src":"2112:21:16"},"nodeType":"YulExpressionStatement","src":"2112:21:16"},{"nodeType":"YulVariableDeclaration","src":"2142:27:16","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2157:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"2164:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2153:3:16"},"nodeType":"YulFunctionCall","src":"2153:16:16"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2146:3:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"2207:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"2209:77:16"},"nodeType":"YulFunctionCall","src":"2209:79:16"},"nodeType":"YulExpressionStatement","src":"2209:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2188:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2193:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:16"},"nodeType":"YulFunctionCall","src":"2184:16:16"},{"name":"end","nodeType":"YulIdentifier","src":"2202:3:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2181:2:16"},"nodeType":"YulFunctionCall","src":"2181:25:16"},"nodeType":"YulIf","src":"2178:112:16"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2321:3:16"},{"name":"dst","nodeType":"YulIdentifier","src":"2326:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2331:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2299:21:16"},"nodeType":"YulFunctionCall","src":"2299:39:16"},"nodeType":"YulExpressionStatement","src":"2299:39:16"}]},"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1991:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1996:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"2004:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2012:5:16","type":""}],"src":"1923:421:16"},{"body":{"nodeType":"YulBlock","src":"2437:282:16","statements":[{"body":{"nodeType":"YulBlock","src":"2486:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"2488:77:16"},"nodeType":"YulFunctionCall","src":"2488:79:16"},"nodeType":"YulExpressionStatement","src":"2488:79:16"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2465:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"2473:4:16","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2461:3:16"},"nodeType":"YulFunctionCall","src":"2461:17:16"},{"name":"end","nodeType":"YulIdentifier","src":"2480:3:16"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2457:3:16"},"nodeType":"YulFunctionCall","src":"2457:27:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2450:6:16"},"nodeType":"YulFunctionCall","src":"2450:35:16"},"nodeType":"YulIf","src":"2447:122:16"},{"nodeType":"YulVariableDeclaration","src":"2578:27:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2598:6:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2592:5:16"},"nodeType":"YulFunctionCall","src":"2592:13:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2582:6:16","type":""}]},{"nodeType":"YulAssignment","src":"2614:99:16","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2686:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"2694:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2682:3:16"},"nodeType":"YulFunctionCall","src":"2682:17:16"},{"name":"length","nodeType":"YulIdentifier","src":"2701:6:16"},{"name":"end","nodeType":"YulIdentifier","src":"2709:3:16"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"2623:58:16"},"nodeType":"YulFunctionCall","src":"2623:90:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2614:5:16"}]}]},"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2415:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"2423:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2431:5:16","type":""}],"src":"2364:355:16"},{"body":{"nodeType":"YulBlock","src":"2839:739:16","statements":[{"body":{"nodeType":"YulBlock","src":"2885:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2887:77:16"},"nodeType":"YulFunctionCall","src":"2887:79:16"},"nodeType":"YulExpressionStatement","src":"2887:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2860:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"2869:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2856:3:16"},"nodeType":"YulFunctionCall","src":"2856:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"2881:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2852:3:16"},"nodeType":"YulFunctionCall","src":"2852:32:16"},"nodeType":"YulIf","src":"2849:119:16"},{"nodeType":"YulBlock","src":"2978:291:16","statements":[{"nodeType":"YulVariableDeclaration","src":"2993:38:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3017:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"3028:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3013:3:16"},"nodeType":"YulFunctionCall","src":"3013:17:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3007:5:16"},"nodeType":"YulFunctionCall","src":"3007:24:16"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2997:6:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"3078:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3080:77:16"},"nodeType":"YulFunctionCall","src":"3080:79:16"},"nodeType":"YulExpressionStatement","src":"3080:79:16"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3050:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"3058:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3047:2:16"},"nodeType":"YulFunctionCall","src":"3047:30:16"},"nodeType":"YulIf","src":"3044:117:16"},{"nodeType":"YulAssignment","src":"3175:84:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3231:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"3242:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3227:3:16"},"nodeType":"YulFunctionCall","src":"3227:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3251:7:16"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3185:41:16"},"nodeType":"YulFunctionCall","src":"3185:74:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3175:6:16"}]}]},{"nodeType":"YulBlock","src":"3279:292:16","statements":[{"nodeType":"YulVariableDeclaration","src":"3294:39:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3318:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"3329:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3314:3:16"},"nodeType":"YulFunctionCall","src":"3314:18:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3308:5:16"},"nodeType":"YulFunctionCall","src":"3308:25:16"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3298:6:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"3380:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3382:77:16"},"nodeType":"YulFunctionCall","src":"3382:79:16"},"nodeType":"YulExpressionStatement","src":"3382:79:16"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3352:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"3360:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3349:2:16"},"nodeType":"YulFunctionCall","src":"3349:30:16"},"nodeType":"YulIf","src":"3346:117:16"},{"nodeType":"YulAssignment","src":"3477:84:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3533:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"3544:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3529:3:16"},"nodeType":"YulFunctionCall","src":"3529:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3553:7:16"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3487:41:16"},"nodeType":"YulFunctionCall","src":"3487:74:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3477:6:16"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2801:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2812:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2824:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2832:6:16","type":""}],"src":"2725:853:16"},{"body":{"nodeType":"YulBlock","src":"3612:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3629:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3632:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:16"},"nodeType":"YulFunctionCall","src":"3622:88:16"},"nodeType":"YulExpressionStatement","src":"3622:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3726:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3729:4:16","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3719:6:16"},"nodeType":"YulFunctionCall","src":"3719:15:16"},"nodeType":"YulExpressionStatement","src":"3719:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3750:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3753:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3743:6:16"},"nodeType":"YulFunctionCall","src":"3743:15:16"},"nodeType":"YulExpressionStatement","src":"3743:15:16"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"3584:180:16"},{"body":{"nodeType":"YulBlock","src":"3821:269:16","statements":[{"nodeType":"YulAssignment","src":"3831:22:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3845:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"3851:1:16","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3841:3:16"},"nodeType":"YulFunctionCall","src":"3841:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3831:6:16"}]},{"nodeType":"YulVariableDeclaration","src":"3862:38:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3892:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"3898:1:16","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3888:3:16"},"nodeType":"YulFunctionCall","src":"3888:12:16"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"3866:18:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"3939:51:16","statements":[{"nodeType":"YulAssignment","src":"3953:27:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3967:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"3975:4:16","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3963:3:16"},"nodeType":"YulFunctionCall","src":"3963:17:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3953:6:16"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3919:18:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3912:6:16"},"nodeType":"YulFunctionCall","src":"3912:26:16"},"nodeType":"YulIf","src":"3909:81:16"},{"body":{"nodeType":"YulBlock","src":"4042:42:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"4056:16:16"},"nodeType":"YulFunctionCall","src":"4056:18:16"},"nodeType":"YulExpressionStatement","src":"4056:18:16"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4006:18:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4029:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"4037:2:16","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4026:2:16"},"nodeType":"YulFunctionCall","src":"4026:14:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4003:2:16"},"nodeType":"YulFunctionCall","src":"4003:38:16"},"nodeType":"YulIf","src":"4000:84:16"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"3805:4:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3814:6:16","type":""}],"src":"3770:320:16"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n}\n","id":16,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162002e0038038062002e008339818101604052810190620000379190620003ae565b8181620000596200004d6200009560201b60201c565b6200009d60201b60201c565b81600190805190602001906200007192919062000161565b5080600290805190602001906200008a92919062000161565b505050505062000497565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200016f9062000462565b90600052602060002090601f016020900481019282620001935760008555620001df565b82601f10620001ae57805160ff1916838001178555620001df565b82800160010185558215620001df579182015b82811115620001de578251825591602001919060010190620001c1565b5b509050620001ee9190620001f2565b5090565b5b808211156200020d576000816000905550600101620001f3565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200027a826200022f565b810181811067ffffffffffffffff821117156200029c576200029b62000240565b5b80604052505050565b6000620002b162000211565b9050620002bf82826200026f565b919050565b600067ffffffffffffffff821115620002e257620002e162000240565b5b620002ed826200022f565b9050602081019050919050565b60005b838110156200031a578082015181840152602081019050620002fd565b838111156200032a576000848401525b50505050565b6000620003476200034184620002c4565b620002a5565b9050828152602081018484840111156200036657620003656200022a565b5b62000373848285620002fa565b509392505050565b600082601f83011262000393576200039262000225565b5b8151620003a584826020860162000330565b91505092915050565b60008060408385031215620003c857620003c76200021b565b5b600083015167ffffffffffffffff811115620003e957620003e862000220565b5b620003f7858286016200037b565b925050602083015167ffffffffffffffff8111156200041b576200041a62000220565b5b62000429858286016200037b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200047b57607f821691505b60208210810362000491576200049062000433565b5b50919050565b61295980620004a76000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a22cb46511610071578063a22cb46514610292578063b88d4fde146102ae578063c87b56dd146102ca578063e985e9c5146102fa578063f2fde38b1461032a5761010b565b806370a082311461021c578063715018a61461024c5780638da5cb5b1461025657806395d89b41146102745761010b565b80631249c58b116100de5780631249c58b146101aa57806323b872dd146101b457806342842e0e146101d05780636352211e146101ec5761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611a95565b610346565b6040516101379190611add565b60405180910390f35b610148610428565b6040516101559190611b91565b60405180910390f35b61017860048036038101906101739190611be9565b6104ba565b6040516101859190611c57565b60405180910390f35b6101a860048036038101906101a39190611c9e565b610500565b005b6101b2610617565b005b6101ce60048036038101906101c99190611cde565b610629565b005b6101ea60048036038101906101e59190611cde565b610689565b005b61020660048036038101906102019190611be9565b6106a9565b6040516102139190611c57565b60405180910390f35b61023660048036038101906102319190611d31565b61076c565b6040516102439190611d6d565b60405180910390f35b610254610886565b005b61025e61089a565b60405161026b9190611c57565b60405180910390f35b61027c6108c3565b6040516102899190611b91565b60405180910390f35b6102ac60048036038101906102a79190611db4565b610955565b005b6102c860048036038101906102c39190611f29565b61096b565b005b6102e460048036038101906102df9190611be9565b6109cd565b6040516102f19190611b91565b60405180910390f35b610314600480360381019061030f9190611fac565b610a35565b6040516103219190611add565b60405180910390f35b610344600480360381019061033f9190611d31565b610ac9565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061041157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610421575061042082610b4c565b5b9050919050565b6060600180546104379061201b565b80601f01602080910402602001604051908101604052809291908181526020018280546104639061201b565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b60006104c582610bb6565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061050b826106a9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361057b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610572906120be565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661059a610c01565b73ffffffffffffffffffffffffffffffffffffffff1614806105c957506105c8816105c3610c01565b610a35565b5b610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90612150565b60405180910390fd5b6106128383610c09565b505050565b610627610622610c01565b610cc2565b565b61063a610634610c01565b82610e21565b610679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610670906121e2565b60405180910390fd5b610684838383610eb6565b505050565b6106a48383836040518060200160405280600081525061096b565b505050565b60006106b482611184565b6106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea9061224e565b60405180910390fd5b60006003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610763578290505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d3906122e0565b60405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148015610830575061082f8261121b565b5b1561083e5760019050610881565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b61088e6112ef565b610898600061136d565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546108d29061201b565b80601f01602080910402602001604051908101604052809291908181526020018280546108fe9061201b565b801561094b5780601f106109205761010080835404028352916020019161094b565b820191906000526020600020905b81548152906001019060200180831161092e57829003601f168201915b5050505050905090565b610967610960610c01565b8383611431565b5050565b61097c610976610c01565b83610e21565b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b2906121e2565b60405180910390fd5b6109c78484848461159d565b50505050565b60606109d882610bb6565b60006109e26115f9565b90506000815111610a025760405180602001604052806000815250610a2d565b80610a0c84611610565b604051602001610a1d92919061233c565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610ad16112ef565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b37906123d2565b60405180910390fd5b610b498161136d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610bbf816116de565b610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf59061224e565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610c7c836106a9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008173ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d439061243e565b60405180910390fd5b610d5581611184565b15610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c906124aa565b60405180910390fd5b60016007600083815260200190815260200160002060006101000a81548160ff021916908315150217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080610e2d836106a9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e6f5750610e6e8185610a35565b5b80610ead57508373ffffffffffffffffffffffffffffffffffffffff16610e95846104ba565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ed6826106a9565b73ffffffffffffffffffffffffffffffffffffffff1614610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f239061253c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f92906125ce565b60405180910390fd5b610fa683838361174a565b610fb1600082610c09565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611068919061261d565b925050819055505b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110c09190612651565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461117f83838361174f565b505050565b60006007600083815260200190815260200160002060009054906101000a900460ff168015611214575061dead73ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff16905060006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061127882611184565b80156112e657508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806112e55750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b5b92505050919050565b6112f7610c01565b73ffffffffffffffffffffffffffffffffffffffff1661131561089a565b73ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611362906126f3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361149f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114969061275f565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115909190611add565b60405180910390a3505050565b6115a8848484610eb6565b6115b484848484611754565b6115f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ea906127f1565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000600161161f846118d6565b01905060008167ffffffffffffffff81111561163e5761163d611dfe565b5b6040519080825280601f01601f1916602001820160405280156116705781602001600182028036833780820191505090505b509050600082602001820190505b6001156116d3578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816116c7576116c6612811565b5b0494506000850361167e575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b11156118c9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611799610c01565b8786866040518563ffffffff1660e01b81526004016117bb9493929190612895565b6020604051808303816000875af19250505080156117f757506040513d601f19601f820116820180604052508101906117f491906128f6565b60015b611879573d8060008114611827576040519150601f19603f3d011682016040523d82523d6000602084013e61182c565b606091505b506000815103611871576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611868906127f1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506118ce565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611934577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161192a57611929612811565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611971576d04ee2d6d415b85acef8100000000838161196757611966612811565b5b0492506020810190505b662386f26fc1000083106119a057662386f26fc10000838161199657611995612811565b5b0492506010810190505b6305f5e10083106119c9576305f5e10083816119bf576119be612811565b5b0492506008810190505b61271083106119ee5761271083816119e4576119e3612811565b5b0492506004810190505b60648310611a115760648381611a0757611a06612811565b5b0492506002810190505b600a8310611a20576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a7281611a3d565b8114611a7d57600080fd5b50565b600081359050611a8f81611a69565b92915050565b600060208284031215611aab57611aaa611a33565b5b6000611ab984828501611a80565b91505092915050565b60008115159050919050565b611ad781611ac2565b82525050565b6000602082019050611af26000830184611ace565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b32578082015181840152602081019050611b17565b83811115611b41576000848401525b50505050565b6000601f19601f8301169050919050565b6000611b6382611af8565b611b6d8185611b03565b9350611b7d818560208601611b14565b611b8681611b47565b840191505092915050565b60006020820190508181036000830152611bab8184611b58565b905092915050565b6000819050919050565b611bc681611bb3565b8114611bd157600080fd5b50565b600081359050611be381611bbd565b92915050565b600060208284031215611bff57611bfe611a33565b5b6000611c0d84828501611bd4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c4182611c16565b9050919050565b611c5181611c36565b82525050565b6000602082019050611c6c6000830184611c48565b92915050565b611c7b81611c36565b8114611c8657600080fd5b50565b600081359050611c9881611c72565b92915050565b60008060408385031215611cb557611cb4611a33565b5b6000611cc385828601611c89565b9250506020611cd485828601611bd4565b9150509250929050565b600080600060608486031215611cf757611cf6611a33565b5b6000611d0586828701611c89565b9350506020611d1686828701611c89565b9250506040611d2786828701611bd4565b9150509250925092565b600060208284031215611d4757611d46611a33565b5b6000611d5584828501611c89565b91505092915050565b611d6781611bb3565b82525050565b6000602082019050611d826000830184611d5e565b92915050565b611d9181611ac2565b8114611d9c57600080fd5b50565b600081359050611dae81611d88565b92915050565b60008060408385031215611dcb57611dca611a33565b5b6000611dd985828601611c89565b9250506020611dea85828601611d9f565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e3682611b47565b810181811067ffffffffffffffff82111715611e5557611e54611dfe565b5b80604052505050565b6000611e68611a29565b9050611e748282611e2d565b919050565b600067ffffffffffffffff821115611e9457611e93611dfe565b5b611e9d82611b47565b9050602081019050919050565b82818337600083830152505050565b6000611ecc611ec784611e79565b611e5e565b905082815260208101848484011115611ee857611ee7611df9565b5b611ef3848285611eaa565b509392505050565b600082601f830112611f1057611f0f611df4565b5b8135611f20848260208601611eb9565b91505092915050565b60008060008060808587031215611f4357611f42611a33565b5b6000611f5187828801611c89565b9450506020611f6287828801611c89565b9350506040611f7387828801611bd4565b925050606085013567ffffffffffffffff811115611f9457611f93611a38565b5b611fa087828801611efb565b91505092959194509250565b60008060408385031215611fc357611fc2611a33565b5b6000611fd185828601611c89565b9250506020611fe285828601611c89565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061203357607f821691505b60208210810361204657612045611fec565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006120a8602183611b03565b91506120b38261204c565b604082019050919050565b600060208201905081810360008301526120d78161209b565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b600061213a603e83611b03565b9150612145826120de565b604082019050919050565b600060208201905081810360008301526121698161212d565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b60006121cc602e83611b03565b91506121d782612170565b604082019050919050565b600060208201905081810360008301526121fb816121bf565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612238601883611b03565b915061224382612202565b602082019050919050565b600060208201905081810360008301526122678161222b565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006122ca602983611b03565b91506122d58261226e565b604082019050919050565b600060208201905081810360008301526122f9816122bd565b9050919050565b600081905092915050565b600061231682611af8565b6123208185612300565b9350612330818560208601611b14565b80840191505092915050565b6000612348828561230b565b9150612354828461230b565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006123bc602683611b03565b91506123c782612360565b604082019050919050565b600060208201905081810360008301526123eb816123af565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612428602083611b03565b9150612433826123f2565b602082019050919050565b600060208201905081810360008301526124578161241b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000612494601c83611b03565b915061249f8261245e565b602082019050919050565b600060208201905081810360008301526124c381612487565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612526602583611b03565b9150612531826124ca565b604082019050919050565b6000602082019050818103600083015261255581612519565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125b8602483611b03565b91506125c38261255c565b604082019050919050565b600060208201905081810360008301526125e7816125ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061262882611bb3565b915061263383611bb3565b925082821015612646576126456125ee565b5b828203905092915050565b600061265c82611bb3565b915061266783611bb3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561269c5761269b6125ee565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126dd602083611b03565b91506126e8826126a7565b602082019050919050565b6000602082019050818103600083015261270c816126d0565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612749601983611b03565b915061275482612713565b602082019050919050565b600060208201905081810360008301526127788161273c565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006127db603283611b03565b91506127e68261277f565b604082019050919050565b6000602082019050818103600083015261280a816127ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061286782612840565b612871818561284b565b9350612881818560208601611b14565b61288a81611b47565b840191505092915050565b60006080820190506128aa6000830187611c48565b6128b76020830186611c48565b6128c46040830185611d5e565b81810360608301526128d6818461285c565b905095945050505050565b6000815190506128f081611a69565b92915050565b60006020828403121561290c5761290b611a33565b5b600061291a848285016128e1565b9150509291505056fea264697066735822122085c7d608a0fb21c4e9f5bd82509de0ddc1df85607191f40e67d6d8caf3978ded64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2E00 CODESIZE SUB DUP1 PUSH3 0x2E00 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x3AE JUMP JUMPDEST DUP2 DUP2 PUSH3 0x59 PUSH3 0x4D PUSH3 0x95 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x9D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x71 SWAP3 SWAP2 SWAP1 PUSH3 0x161 JUMP JUMPDEST POP DUP1 PUSH1 0x2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x8A SWAP3 SWAP2 SWAP1 PUSH3 0x161 JUMP JUMPDEST POP POP POP POP POP PUSH3 0x497 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x16F SWAP1 PUSH3 0x462 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x193 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x1DF JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x1AE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x1DF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x1DF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x1DE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1C1 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x1EE SWAP2 SWAP1 PUSH3 0x1F2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x20D JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x1F3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH3 0x27A DUP3 PUSH3 0x22F JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x29C JUMPI PUSH3 0x29B PUSH3 0x240 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2B1 PUSH3 0x211 JUMP JUMPDEST SWAP1 POP PUSH3 0x2BF DUP3 DUP3 PUSH3 0x26F JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x2E2 JUMPI PUSH3 0x2E1 PUSH3 0x240 JUMP JUMPDEST JUMPDEST PUSH3 0x2ED DUP3 PUSH3 0x22F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x31A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x2FD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x32A JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x347 PUSH3 0x341 DUP5 PUSH3 0x2C4 JUMP JUMPDEST PUSH3 0x2A5 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x366 JUMPI PUSH3 0x365 PUSH3 0x22A JUMP JUMPDEST JUMPDEST PUSH3 0x373 DUP5 DUP3 DUP6 PUSH3 0x2FA JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x393 JUMPI PUSH3 0x392 PUSH3 0x225 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0x3A5 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x330 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x3C8 JUMPI PUSH3 0x3C7 PUSH3 0x21B JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x3E9 JUMPI PUSH3 0x3E8 PUSH3 0x220 JUMP JUMPDEST JUMPDEST PUSH3 0x3F7 DUP6 DUP3 DUP7 ADD PUSH3 0x37B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x41B JUMPI PUSH3 0x41A PUSH3 0x220 JUMP JUMPDEST JUMPDEST PUSH3 0x429 DUP6 DUP3 DUP7 ADD PUSH3 0x37B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x47B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x491 JUMPI PUSH3 0x490 PUSH3 0x433 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2959 DUP1 PUSH3 0x4A7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x32A JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x274 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1249C58B GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x1EC JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x140 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x18E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x1A95 JUMP JUMPDEST PUSH2 0x346 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x137 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x148 PUSH2 0x428 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x155 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x173 SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x185 SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1A3 SWAP2 SWAP1 PUSH2 0x1C9E JUMP JUMPDEST PUSH2 0x500 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B2 PUSH2 0x617 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C9 SWAP2 SWAP1 PUSH2 0x1CDE JUMP JUMPDEST PUSH2 0x629 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x1CDE JUMP JUMPDEST PUSH2 0x689 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x201 SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x6A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x213 SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x231 SWAP2 SWAP1 PUSH2 0x1D31 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x243 SWAP2 SWAP1 PUSH2 0x1D6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x254 PUSH2 0x886 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25E PUSH2 0x89A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27C PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x289 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x1DB4 JUMP JUMPDEST PUSH2 0x955 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C3 SWAP2 SWAP1 PUSH2 0x1F29 JUMP JUMPDEST PUSH2 0x96B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x9CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F1 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x314 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30F SWAP2 SWAP1 PUSH2 0x1FAC JUMP JUMPDEST PUSH2 0xA35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x321 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x344 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x1D31 JUMP JUMPDEST PUSH2 0xAC9 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x411 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x421 JUMPI POP PUSH2 0x420 DUP3 PUSH2 0xB4C JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x437 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x463 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4B0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x485 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x493 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5 DUP3 PUSH2 0xBB6 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50B DUP3 PUSH2 0x6A9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x57B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x572 SWAP1 PUSH2 0x20BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x59A PUSH2 0xC01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x5C9 JUMPI POP PUSH2 0x5C8 DUP2 PUSH2 0x5C3 PUSH2 0xC01 JUMP JUMPDEST PUSH2 0xA35 JUMP JUMPDEST JUMPDEST PUSH2 0x608 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5FF SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x612 DUP4 DUP4 PUSH2 0xC09 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x627 PUSH2 0x622 PUSH2 0xC01 JUMP JUMPDEST PUSH2 0xCC2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x63A PUSH2 0x634 PUSH2 0xC01 JUMP JUMPDEST DUP3 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x679 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x670 SWAP1 PUSH2 0x21E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x684 DUP4 DUP4 DUP4 PUSH2 0xEB6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6A4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x96B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B4 DUP3 PUSH2 0x1184 JUMP JUMPDEST PUSH2 0x6F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6EA SWAP1 PUSH2 0x224E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x763 JUMPI DUP3 SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D3 SWAP1 PUSH2 0x22E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ DUP1 ISZERO PUSH2 0x830 JUMPI POP PUSH2 0x82F DUP3 PUSH2 0x121B JUMP JUMPDEST JUMPDEST ISZERO PUSH2 0x83E JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x881 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x88E PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x898 PUSH1 0x0 PUSH2 0x136D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x8D2 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x8FE SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x94B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x920 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x94B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x92E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x967 PUSH2 0x960 PUSH2 0xC01 JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1431 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x97C PUSH2 0x976 PUSH2 0xC01 JUMP JUMPDEST DUP4 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x9BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B2 SWAP1 PUSH2 0x21E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9C7 DUP5 DUP5 DUP5 DUP5 PUSH2 0x159D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9D8 DUP3 PUSH2 0xBB6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E2 PUSH2 0x15F9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xA02 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xA2D JUMP JUMPDEST DUP1 PUSH2 0xA0C DUP5 PUSH2 0x1610 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA1D SWAP3 SWAP2 SWAP1 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAD1 PUSH2 0x12EF JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB37 SWAP1 PUSH2 0x23D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB49 DUP2 PUSH2 0x136D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBBF DUP2 PUSH2 0x16DE JUMP JUMPDEST PUSH2 0xBFE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF5 SWAP1 PUSH2 0x224E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC7C DUP4 PUSH2 0x6A9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD43 SWAP1 PUSH2 0x243E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD55 DUP2 PUSH2 0x1184 JUMP JUMPDEST ISZERO PUSH2 0xD95 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD8C SWAP1 PUSH2 0x24AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x7 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE2D DUP4 PUSH2 0x6A9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xE6F JUMPI POP PUSH2 0xE6E DUP2 DUP6 PUSH2 0xA35 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xEAD JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE95 DUP5 PUSH2 0x4BA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xED6 DUP3 PUSH2 0x6A9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xF2C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF23 SWAP1 PUSH2 0x253C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xF9B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP1 PUSH2 0x25CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFA6 DUP4 DUP4 DUP4 PUSH2 0x174A JUMP JUMPDEST PUSH2 0xFB1 PUSH1 0x0 DUP3 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1070 JUMPI PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1068 SWAP2 SWAP1 PUSH2 0x261D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x10C0 SWAP2 SWAP1 PUSH2 0x2651 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x117F DUP4 DUP4 DUP4 PUSH2 0x174F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1214 JUMPI POP PUSH2 0xDEAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x1278 DUP3 PUSH2 0x1184 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x12E6 JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x12E5 JUMPI POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST JUMPDEST SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x12F7 PUSH2 0xC01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1315 PUSH2 0x89A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x136B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1362 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x149F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1496 SWAP1 PUSH2 0x275F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1590 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x15A8 DUP5 DUP5 DUP5 PUSH2 0xEB6 JUMP JUMPDEST PUSH2 0x15B4 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1754 JUMP JUMPDEST PUSH2 0x15F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15EA SWAP1 PUSH2 0x27F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0x161F DUP5 PUSH2 0x18D6 JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x163E JUMPI PUSH2 0x163D PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1670 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x16D3 JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x16C7 JUMPI PUSH2 0x16C6 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x167E JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x18C9 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x1799 PUSH2 0xC01 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17BB SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2895 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x17F7 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17F4 SWAP2 SWAP1 PUSH2 0x28F6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1879 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1827 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 0x182C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x1871 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1868 SWAP1 PUSH2 0x27F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1934 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x192A JUMPI PUSH2 0x1929 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1971 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1967 JUMPI PUSH2 0x1966 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x19A0 JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1996 JUMPI PUSH2 0x1995 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x19C9 JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x19BF JUMPI PUSH2 0x19BE PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x19EE JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x19E4 JUMPI PUSH2 0x19E3 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1A11 JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x1A07 JUMPI PUSH2 0x1A06 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x1A20 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1A72 DUP2 PUSH2 0x1A3D JUMP JUMPDEST DUP2 EQ PUSH2 0x1A7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1A8F DUP2 PUSH2 0x1A69 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AAB JUMPI PUSH2 0x1AAA PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1AB9 DUP5 DUP3 DUP6 ADD PUSH2 0x1A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1AD7 DUP2 PUSH2 0x1AC2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1AF2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1ACE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B32 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1B17 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1B41 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP3 PUSH2 0x1AF8 JUMP JUMPDEST PUSH2 0x1B6D DUP2 DUP6 PUSH2 0x1B03 JUMP JUMPDEST SWAP4 POP PUSH2 0x1B7D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x1B86 DUP2 PUSH2 0x1B47 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BAB DUP2 DUP5 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BC6 DUP2 PUSH2 0x1BB3 JUMP JUMPDEST DUP2 EQ PUSH2 0x1BD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1BE3 DUP2 PUSH2 0x1BBD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BFF JUMPI PUSH2 0x1BFE PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1C0D DUP5 DUP3 DUP6 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C41 DUP3 PUSH2 0x1C16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1C51 DUP2 PUSH2 0x1C36 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1C6C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1C48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1C7B DUP2 PUSH2 0x1C36 JUMP JUMPDEST DUP2 EQ PUSH2 0x1C86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1C98 DUP2 PUSH2 0x1C72 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CB5 JUMPI PUSH2 0x1CB4 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1CC3 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1CD4 DUP6 DUP3 DUP7 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1CF7 JUMPI PUSH2 0x1CF6 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1D05 DUP7 DUP3 DUP8 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1D16 DUP7 DUP3 DUP8 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1D27 DUP7 DUP3 DUP8 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D47 JUMPI PUSH2 0x1D46 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1D55 DUP5 DUP3 DUP6 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D67 DUP2 PUSH2 0x1BB3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1D82 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1D5E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D91 DUP2 PUSH2 0x1AC2 JUMP JUMPDEST DUP2 EQ PUSH2 0x1D9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1DAE DUP2 PUSH2 0x1D88 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DCB JUMPI PUSH2 0x1DCA PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1DD9 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1DEA DUP6 DUP3 DUP7 ADD PUSH2 0x1D9F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E36 DUP3 PUSH2 0x1B47 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1E55 JUMPI PUSH2 0x1E54 PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E68 PUSH2 0x1A29 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E74 DUP3 DUP3 PUSH2 0x1E2D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1E94 JUMPI PUSH2 0x1E93 PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST PUSH2 0x1E9D DUP3 PUSH2 0x1B47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ECC PUSH2 0x1EC7 DUP5 PUSH2 0x1E79 JUMP JUMPDEST PUSH2 0x1E5E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x1EE8 JUMPI PUSH2 0x1EE7 PUSH2 0x1DF9 JUMP JUMPDEST JUMPDEST PUSH2 0x1EF3 DUP5 DUP3 DUP6 PUSH2 0x1EAA JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1F10 JUMPI PUSH2 0x1F0F PUSH2 0x1DF4 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F20 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1EB9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1F43 JUMPI PUSH2 0x1F42 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1F51 DUP8 DUP3 DUP9 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x1F62 DUP8 DUP3 DUP9 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x1F73 DUP8 DUP3 DUP9 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F94 JUMPI PUSH2 0x1F93 PUSH2 0x1A38 JUMP JUMPDEST JUMPDEST PUSH2 0x1FA0 DUP8 DUP3 DUP9 ADD PUSH2 0x1EFB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1FC3 JUMPI PUSH2 0x1FC2 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1FD1 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1FE2 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2033 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2046 JUMPI PUSH2 0x2045 PUSH2 0x1FEC JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20A8 PUSH1 0x21 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x20B3 DUP3 PUSH2 0x204C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x20D7 DUP2 PUSH2 0x209B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x213A PUSH1 0x3E DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2145 DUP3 PUSH2 0x20DE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2169 DUP2 PUSH2 0x212D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21CC PUSH1 0x2E DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x21D7 DUP3 PUSH2 0x2170 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x21FB DUP2 PUSH2 0x21BF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2238 PUSH1 0x18 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2243 DUP3 PUSH2 0x2202 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2267 DUP2 PUSH2 0x222B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22CA PUSH1 0x29 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x22D5 DUP3 PUSH2 0x226E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x22F9 DUP2 PUSH2 0x22BD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2316 DUP3 PUSH2 0x1AF8 JUMP JUMPDEST PUSH2 0x2320 DUP2 DUP6 PUSH2 0x2300 JUMP JUMPDEST SWAP4 POP PUSH2 0x2330 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2348 DUP3 DUP6 PUSH2 0x230B JUMP JUMPDEST SWAP2 POP PUSH2 0x2354 DUP3 DUP5 PUSH2 0x230B JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23BC PUSH1 0x26 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x23C7 DUP3 PUSH2 0x2360 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x23EB DUP2 PUSH2 0x23AF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2428 PUSH1 0x20 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2433 DUP3 PUSH2 0x23F2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2457 DUP2 PUSH2 0x241B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2494 PUSH1 0x1C DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x249F DUP3 PUSH2 0x245E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x24C3 DUP2 PUSH2 0x2487 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2526 PUSH1 0x25 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2531 DUP3 PUSH2 0x24CA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2555 DUP2 PUSH2 0x2519 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25B8 PUSH1 0x24 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x25C3 DUP3 PUSH2 0x255C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x25E7 DUP2 PUSH2 0x25AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2628 DUP3 PUSH2 0x1BB3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2633 DUP4 PUSH2 0x1BB3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x2646 JUMPI PUSH2 0x2645 PUSH2 0x25EE JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265C DUP3 PUSH2 0x1BB3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2667 DUP4 PUSH2 0x1BB3 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x269C JUMPI PUSH2 0x269B PUSH2 0x25EE JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26DD PUSH1 0x20 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x26E8 DUP3 PUSH2 0x26A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x270C DUP2 PUSH2 0x26D0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2749 PUSH1 0x19 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2754 DUP3 PUSH2 0x2713 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2778 DUP2 PUSH2 0x273C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27DB PUSH1 0x32 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x27E6 DUP3 PUSH2 0x277F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x280A DUP2 PUSH2 0x27CE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2867 DUP3 PUSH2 0x2840 JUMP JUMPDEST PUSH2 0x2871 DUP2 DUP6 PUSH2 0x284B JUMP JUMPDEST SWAP4 POP PUSH2 0x2881 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x288A DUP2 PUSH2 0x1B47 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x28AA PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1C48 JUMP JUMPDEST PUSH2 0x28B7 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH2 0x28C4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1D5E JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x28D6 DUP2 DUP5 PUSH2 0x285C JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x28F0 DUP2 PUSH2 0x1A69 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x290C JUMPI PUSH2 0x290B PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x291A DUP5 DUP3 DUP6 ADD PUSH2 0x28E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 0xC7 0xD6 ADDMOD LOG0 0xFB 0x21 0xC4 0xE9 CREATE2 0xBD DUP3 POP SWAP14 0xE0 0xDD 0xC1 0xDF DUP6 PUSH1 0x71 SWAP2 DELEGATECALL 0xE PUSH8 0xD6D8CAF3978DED64 PUSH20 0x6F6C634300080D00330000000000000000000000 ","sourceMap":"344:2581:12:-:0;;;438:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;499:4;505:6;936:32:0;955:12;:10;;;:12;;:::i;:::-;936:18;;;:32;;:::i;:::-;2311:5:14;2303;:13;;;;;;;;;;;;:::i;:::-;;2336:7;2326;:17;;;;;;;;;;;;:::i;:::-;;2237:113;;438:87:12;;344:2581;;640:96:6;693:7;719:10;712:17;;640:96;:::o;2426:187:0:-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;344:2581:12:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:16:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:853::-;2824:6;2832;2881:2;2869:9;2860:7;2856:23;2852:32;2849:119;;;2887:79;;:::i;:::-;2849:119;3028:1;3017:9;3013:17;3007:24;3058:18;3050:6;3047:30;3044:117;;;3080:79;;:::i;:::-;3044:117;3185:74;3251:7;3242:6;3231:9;3227:22;3185:74;:::i;:::-;3175:84;;2978:291;3329:2;3318:9;3314:18;3308:25;3360:18;3352:6;3349:30;3346:117;;;3382:79;;:::i;:::-;3346:117;3487:74;3553:7;3544:6;3533:9;3529:22;3487:74;:::i;:::-;3477:84;;3279:292;2725:853;;;;;:::o;3584:180::-;3632:77;3629:1;3622:88;3729:4;3726:1;3719:15;3753:4;3750:1;3743:15;3770:320;3814:6;3851:1;3845:4;3841:12;3831:22;;3898:1;3892:4;3888:12;3919:18;3909:81;;3975:4;3967:6;3963:17;3953:27;;3909:81;4037:2;4029:6;4026:14;4006:18;4003:38;4000:84;;4056:18;;:::i;:::-;4000:84;3821:269;3770:320;;;:::o;344:2581:12:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_3165":{"entryPoint":5967,"id":3165,"parameterSlots":3,"returnSlots":0},"@_approve_3033":{"entryPoint":3081,"id":3033,"parameterSlots":2,"returnSlots":0},"@_baseURI_2515":{"entryPoint":5625,"id":2515,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_3154":{"entryPoint":5962,"id":3154,"parameterSlots":3,"returnSlots":0},"@_checkOnERC721Received_3143":{"entryPoint":5972,"id":3143,"parameterSlots":4,"returnSlots":1},"@_checkOwner_54":{"entryPoint":4847,"id":54,"parameterSlots":0,"returnSlots":0},"@_exists_2733":{"entryPoint":5854,"id":2733,"parameterSlots":1,"returnSlots":1},"@_hasOwnToken_2182":{"entryPoint":4635,"id":2182,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_2766":{"entryPoint":3617,"id":2766,"parameterSlots":2,"returnSlots":1},"@_isTokenActive_2201":{"entryPoint":4484,"id":2201,"parameterSlots":1,"returnSlots":1},"@_mint_2057":{"entryPoint":3266,"id":2057,"parameterSlots":1,"returnSlots":0},"@_msgSender_646":{"entryPoint":3073,"id":646,"parameterSlots":0,"returnSlots":1},"@_requireMinted_3079":{"entryPoint":2998,"id":3079,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_2715":{"entryPoint":5533,"id":2715,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_3065":{"entryPoint":5169,"id":3065,"parameterSlots":3,"returnSlots":0},"@_transferOwnership_111":{"entryPoint":4973,"id":111,"parameterSlots":1,"returnSlots":0},"@_transfer_2141":{"entryPoint":3766,"id":2141,"parameterSlots":3,"returnSlots":0},"@approve_2557":{"entryPoint":1280,"id":2557,"parameterSlots":2,"returnSlots":0},"@balanceOf_1956":{"entryPoint":1900,"id":1956,"parameterSlots":1,"returnSlots":1},"@getApproved_2575":{"entryPoint":1210,"id":2575,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_2610":{"entryPoint":2613,"id":2610,"parameterSlots":2,"returnSlots":1},"@log10_1624":{"entryPoint":6358,"id":1624,"parameterSlots":1,"returnSlots":1},"@mint_2008":{"entryPoint":1559,"id":2008,"parameterSlots":0,"returnSlots":0},"@name_2457":{"entryPoint":1064,"id":2457,"parameterSlots":0,"returnSlots":1},"@ownerOf_1999":{"entryPoint":1705,"id":1999,"parameterSlots":1,"returnSlots":1},"@owner_40":{"entryPoint":2202,"id":40,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_68":{"entryPoint":2182,"id":68,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_2656":{"entryPoint":1673,"id":2656,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_2686":{"entryPoint":2411,"id":2686,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_2592":{"entryPoint":2389,"id":2592,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2395":{"entryPoint":838,"id":2395,"parameterSlots":1,"returnSlots":1},"@supportsInterface_908":{"entryPoint":2892,"id":908,"parameterSlots":1,"returnSlots":1},"@symbol_2467":{"entryPoint":2243,"id":2467,"parameterSlots":0,"returnSlots":1},"@toString_715":{"entryPoint":5648,"id":715,"parameterSlots":1,"returnSlots":1},"@tokenURI_2506":{"entryPoint":2509,"id":2506,"parameterSlots":1,"returnSlots":1},"@transferFrom_2637":{"entryPoint":1577,"id":2637,"parameterSlots":3,"returnSlots":0},"@transferOwnership_91":{"entryPoint":2761,"id":91,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_bytes_memory_ptr":{"entryPoint":7865,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":7305,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":7583,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4":{"entryPoint":6784,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4_fromMemory":{"entryPoint":10465,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr":{"entryPoint":7931,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":7124,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":7473,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":8108,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":7390,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":7977,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":7604,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":7326,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":6805,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":10486,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":7145,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":7240,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":6862,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":10332,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":7000,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":8971,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack":{"entryPoint":10190,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":9135,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack":{"entryPoint":9497,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack":{"entryPoint":9351,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack":{"entryPoint":9643,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack":{"entryPoint":10044,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack":{"entryPoint":8893,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack":{"entryPoint":8493,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack":{"entryPoint":9243,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":9936,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack":{"entryPoint":8747,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack":{"entryPoint":8347,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack":{"entryPoint":8639,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":7518,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":9020,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":7255,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":10389,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":6877,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7057,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10225,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9170,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9532,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9386,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9678,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10079,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8928,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8528,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9278,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9971,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8782,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8382,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8674,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":7533,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":7774,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":6697,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":7801,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":10304,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":6904,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":10315,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":6915,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":8960,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":9809,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":9757,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":7222,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":6850,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":6717,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":7190,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":7091,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory":{"entryPoint":7850,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory":{"entryPoint":6932,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":8219,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":7725,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":9710,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":10257,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":8172,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":7678,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":7668,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":7673,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":6712,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":6707,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":6983,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e":{"entryPoint":10111,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":9056,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48":{"entryPoint":9418,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57":{"entryPoint":9310,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4":{"entryPoint":9564,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05":{"entryPoint":10003,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159":{"entryPoint":8814,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304":{"entryPoint":8414,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6":{"entryPoint":9202,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":9895,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f":{"entryPoint":8706,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942":{"entryPoint":8268,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b":{"entryPoint":8560,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":7282,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":7560,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes4":{"entryPoint":6761,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":7101,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:27842:16","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:16","statements":[{"nodeType":"YulAssignment","src":"57:19:16","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:16","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:16"},"nodeType":"YulFunctionCall","src":"67:9:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:16"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:16","type":""}],"src":"7:75:16"},{"body":{"nodeType":"YulBlock","src":"177:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:16"},"nodeType":"YulFunctionCall","src":"187:12:16"},"nodeType":"YulExpressionStatement","src":"187:12:16"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:16"},{"body":{"nodeType":"YulBlock","src":"300:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:16"},"nodeType":"YulFunctionCall","src":"310:12:16"},"nodeType":"YulExpressionStatement","src":"310:12:16"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:16"},{"body":{"nodeType":"YulBlock","src":"378:105:16","statements":[{"nodeType":"YulAssignment","src":"388:89:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"410:66:16","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"399:3:16"},"nodeType":"YulFunctionCall","src":"399:78:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"388:7:16"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"360:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"370:7:16","type":""}],"src":"334:149:16"},{"body":{"nodeType":"YulBlock","src":"531:78:16","statements":[{"body":{"nodeType":"YulBlock","src":"587:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"596:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"599:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"589:6:16"},"nodeType":"YulFunctionCall","src":"589:12:16"},"nodeType":"YulExpressionStatement","src":"589:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"554:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"578:5:16"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"561:16:16"},"nodeType":"YulFunctionCall","src":"561:23:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"551:2:16"},"nodeType":"YulFunctionCall","src":"551:34:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"544:6:16"},"nodeType":"YulFunctionCall","src":"544:42:16"},"nodeType":"YulIf","src":"541:62:16"}]},"name":"validator_revert_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"524:5:16","type":""}],"src":"489:120:16"},{"body":{"nodeType":"YulBlock","src":"666:86:16","statements":[{"nodeType":"YulAssignment","src":"676:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"698:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:16"},"nodeType":"YulFunctionCall","src":"685:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"676:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"740:5:16"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"714:25:16"},"nodeType":"YulFunctionCall","src":"714:32:16"},"nodeType":"YulExpressionStatement","src":"714:32:16"}]},"name":"abi_decode_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"644:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"652:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"660:5:16","type":""}],"src":"615:137:16"},{"body":{"nodeType":"YulBlock","src":"823:262:16","statements":[{"body":{"nodeType":"YulBlock","src":"869:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"871:77:16"},"nodeType":"YulFunctionCall","src":"871:79:16"},"nodeType":"YulExpressionStatement","src":"871:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"844:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"853:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"840:3:16"},"nodeType":"YulFunctionCall","src":"840:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"865:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"836:3:16"},"nodeType":"YulFunctionCall","src":"836:32:16"},"nodeType":"YulIf","src":"833:119:16"},{"nodeType":"YulBlock","src":"962:116:16","statements":[{"nodeType":"YulVariableDeclaration","src":"977:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"991:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"981:6:16","type":""}]},{"nodeType":"YulAssignment","src":"1006:62:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1040:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"1051:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1036:3:16"},"nodeType":"YulFunctionCall","src":"1036:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1060:7:16"}],"functionName":{"name":"abi_decode_t_bytes4","nodeType":"YulIdentifier","src":"1016:19:16"},"nodeType":"YulFunctionCall","src":"1016:52:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1006:6:16"}]}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"793:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"804:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"816:6:16","type":""}],"src":"758:327:16"},{"body":{"nodeType":"YulBlock","src":"1133:48:16","statements":[{"nodeType":"YulAssignment","src":"1143:32:16","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1161:6:16"},"nodeType":"YulFunctionCall","src":"1161:13:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1154:6:16"},"nodeType":"YulFunctionCall","src":"1154:21:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1143:7:16"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1115:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1125:7:16","type":""}],"src":"1091:90:16"},{"body":{"nodeType":"YulBlock","src":"1246:50:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1283:5:16"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"1268:14:16"},"nodeType":"YulFunctionCall","src":"1268:21:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1256:6:16"},"nodeType":"YulFunctionCall","src":"1256:34:16"},"nodeType":"YulExpressionStatement","src":"1256:34:16"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1234:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1241:3:16","type":""}],"src":"1187:109:16"},{"body":{"nodeType":"YulBlock","src":"1394:118:16","statements":[{"nodeType":"YulAssignment","src":"1404:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:16"},"nodeType":"YulFunctionCall","src":"1412:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1404:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1478:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1491:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"1502:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1487:3:16"},"nodeType":"YulFunctionCall","src":"1487:17:16"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"1440:37:16"},"nodeType":"YulFunctionCall","src":"1440:65:16"},"nodeType":"YulExpressionStatement","src":"1440:65:16"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1366:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1378:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1389:4:16","type":""}],"src":"1302:210:16"},{"body":{"nodeType":"YulBlock","src":"1577:40:16","statements":[{"nodeType":"YulAssignment","src":"1588:22:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1604:5:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1598:5:16"},"nodeType":"YulFunctionCall","src":"1598:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1588:6:16"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1560:5:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1570:6:16","type":""}],"src":"1518:99:16"},{"body":{"nodeType":"YulBlock","src":"1719:73:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1736:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"1741:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1729:6:16"},"nodeType":"YulFunctionCall","src":"1729:19:16"},"nodeType":"YulExpressionStatement","src":"1729:19:16"},{"nodeType":"YulAssignment","src":"1757:29:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1776:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"1781:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1772:3:16"},"nodeType":"YulFunctionCall","src":"1772:14:16"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1757:11:16"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1691:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1696:6:16","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1707:11:16","type":""}],"src":"1623:169:16"},{"body":{"nodeType":"YulBlock","src":"1847:258:16","statements":[{"nodeType":"YulVariableDeclaration","src":"1857:10:16","value":{"kind":"number","nodeType":"YulLiteral","src":"1866:1:16","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1861:1:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"1926:63:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1951:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1956:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1947:3:16"},"nodeType":"YulFunctionCall","src":"1947:11:16"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1970:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1975:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:16"},"nodeType":"YulFunctionCall","src":"1966:11:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1960:5:16"},"nodeType":"YulFunctionCall","src":"1960:18:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1940:6:16"},"nodeType":"YulFunctionCall","src":"1940:39:16"},"nodeType":"YulExpressionStatement","src":"1940:39:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1887:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1884:2:16"},"nodeType":"YulFunctionCall","src":"1884:13:16"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1898:19:16","statements":[{"nodeType":"YulAssignment","src":"1900:15:16","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1909:1:16"},{"kind":"number","nodeType":"YulLiteral","src":"1912:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1905:3:16"},"nodeType":"YulFunctionCall","src":"1905:10:16"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1900:1:16"}]}]},"pre":{"nodeType":"YulBlock","src":"1880:3:16","statements":[]},"src":"1876:113:16"},{"body":{"nodeType":"YulBlock","src":"2023:76:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2073:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2078:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2069:3:16"},"nodeType":"YulFunctionCall","src":"2069:16:16"},{"kind":"number","nodeType":"YulLiteral","src":"2087:1:16","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2062:6:16"},"nodeType":"YulFunctionCall","src":"2062:27:16"},"nodeType":"YulExpressionStatement","src":"2062:27:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2004:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"2007:6:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2001:2:16"},"nodeType":"YulFunctionCall","src":"2001:13:16"},"nodeType":"YulIf","src":"1998:101:16"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1829:3:16","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1834:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1839:6:16","type":""}],"src":"1798:307:16"},{"body":{"nodeType":"YulBlock","src":"2159:54:16","statements":[{"nodeType":"YulAssignment","src":"2169:38:16","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2187:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"2194:2:16","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2183:3:16"},"nodeType":"YulFunctionCall","src":"2183:14:16"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2203:2:16","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2199:3:16"},"nodeType":"YulFunctionCall","src":"2199:7:16"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2179:3:16"},"nodeType":"YulFunctionCall","src":"2179:28:16"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2169:6:16"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2142:5:16","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"2152:6:16","type":""}],"src":"2111:102:16"},{"body":{"nodeType":"YulBlock","src":"2311:272:16","statements":[{"nodeType":"YulVariableDeclaration","src":"2321:53:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2368:5:16"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2335:32:16"},"nodeType":"YulFunctionCall","src":"2335:39:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2325:6:16","type":""}]},{"nodeType":"YulAssignment","src":"2383:78:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2449:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2454:6:16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2390:58:16"},"nodeType":"YulFunctionCall","src":"2390:71:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2383:3:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2496:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"2503:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:16"},"nodeType":"YulFunctionCall","src":"2492:16:16"},{"name":"pos","nodeType":"YulIdentifier","src":"2510:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2515:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2470:21:16"},"nodeType":"YulFunctionCall","src":"2470:52:16"},"nodeType":"YulExpressionStatement","src":"2470:52:16"},{"nodeType":"YulAssignment","src":"2531:46:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2542:3:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2569:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2547:21:16"},"nodeType":"YulFunctionCall","src":"2547:29:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2538:3:16"},"nodeType":"YulFunctionCall","src":"2538:39:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2531:3:16"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2292:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2299:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2307:3:16","type":""}],"src":"2219:364:16"},{"body":{"nodeType":"YulBlock","src":"2707:195:16","statements":[{"nodeType":"YulAssignment","src":"2717:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2729:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"2740:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2725:3:16"},"nodeType":"YulFunctionCall","src":"2725:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2717:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2764:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"2775:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2760:3:16"},"nodeType":"YulFunctionCall","src":"2760:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2783:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"2789:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2779:3:16"},"nodeType":"YulFunctionCall","src":"2779:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2753:6:16"},"nodeType":"YulFunctionCall","src":"2753:47:16"},"nodeType":"YulExpressionStatement","src":"2753:47:16"},{"nodeType":"YulAssignment","src":"2809:86:16","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2881:6:16"},{"name":"tail","nodeType":"YulIdentifier","src":"2890:4:16"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2817:63:16"},"nodeType":"YulFunctionCall","src":"2817:78:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2809:4:16"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2679:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2691:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2702:4:16","type":""}],"src":"2589:313:16"},{"body":{"nodeType":"YulBlock","src":"2953:32:16","statements":[{"nodeType":"YulAssignment","src":"2963:16:16","value":{"name":"value","nodeType":"YulIdentifier","src":"2974:5:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2963:7:16"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2935:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2945:7:16","type":""}],"src":"2908:77:16"},{"body":{"nodeType":"YulBlock","src":"3034:79:16","statements":[{"body":{"nodeType":"YulBlock","src":"3091:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3100:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3103:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3093:6:16"},"nodeType":"YulFunctionCall","src":"3093:12:16"},"nodeType":"YulExpressionStatement","src":"3093:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3057:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3082:5:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3064:17:16"},"nodeType":"YulFunctionCall","src":"3064:24:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3054:2:16"},"nodeType":"YulFunctionCall","src":"3054:35:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3047:6:16"},"nodeType":"YulFunctionCall","src":"3047:43:16"},"nodeType":"YulIf","src":"3044:63:16"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3027:5:16","type":""}],"src":"2991:122:16"},{"body":{"nodeType":"YulBlock","src":"3171:87:16","statements":[{"nodeType":"YulAssignment","src":"3181:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3203:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3190:12:16"},"nodeType":"YulFunctionCall","src":"3190:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3181:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3246:5:16"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"3219:26:16"},"nodeType":"YulFunctionCall","src":"3219:33:16"},"nodeType":"YulExpressionStatement","src":"3219:33:16"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3149:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"3157:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3165:5:16","type":""}],"src":"3119:139:16"},{"body":{"nodeType":"YulBlock","src":"3330:263:16","statements":[{"body":{"nodeType":"YulBlock","src":"3376:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3378:77:16"},"nodeType":"YulFunctionCall","src":"3378:79:16"},"nodeType":"YulExpressionStatement","src":"3378:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3351:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"3360:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3347:3:16"},"nodeType":"YulFunctionCall","src":"3347:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"3372:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3343:3:16"},"nodeType":"YulFunctionCall","src":"3343:32:16"},"nodeType":"YulIf","src":"3340:119:16"},{"nodeType":"YulBlock","src":"3469:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"3484:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"3498:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3488:6:16","type":""}]},{"nodeType":"YulAssignment","src":"3513:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"3559:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3544:3:16"},"nodeType":"YulFunctionCall","src":"3544:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3568:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3523:20:16"},"nodeType":"YulFunctionCall","src":"3523:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3513:6:16"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3300:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3311:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3323:6:16","type":""}],"src":"3264:329:16"},{"body":{"nodeType":"YulBlock","src":"3644:81:16","statements":[{"nodeType":"YulAssignment","src":"3654:65:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3669:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"3676:42:16","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3665:3:16"},"nodeType":"YulFunctionCall","src":"3665:54:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3654:7:16"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3626:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3636:7:16","type":""}],"src":"3599:126:16"},{"body":{"nodeType":"YulBlock","src":"3776:51:16","statements":[{"nodeType":"YulAssignment","src":"3786:35:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3815:5:16"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"3797:17:16"},"nodeType":"YulFunctionCall","src":"3797:24:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3786:7:16"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3758:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3768:7:16","type":""}],"src":"3731:96:16"},{"body":{"nodeType":"YulBlock","src":"3898:53:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3915:3:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3938:5:16"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"3920:17:16"},"nodeType":"YulFunctionCall","src":"3920:24:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3908:6:16"},"nodeType":"YulFunctionCall","src":"3908:37:16"},"nodeType":"YulExpressionStatement","src":"3908:37:16"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3886:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3893:3:16","type":""}],"src":"3833:118:16"},{"body":{"nodeType":"YulBlock","src":"4055:124:16","statements":[{"nodeType":"YulAssignment","src":"4065:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4077:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"4088:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4073:3:16"},"nodeType":"YulFunctionCall","src":"4073:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4065:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4145:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4158:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"4169:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4154:3:16"},"nodeType":"YulFunctionCall","src":"4154:17:16"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"4101:43:16"},"nodeType":"YulFunctionCall","src":"4101:71:16"},"nodeType":"YulExpressionStatement","src":"4101:71:16"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4027:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4039:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4050:4:16","type":""}],"src":"3957:222:16"},{"body":{"nodeType":"YulBlock","src":"4228:79:16","statements":[{"body":{"nodeType":"YulBlock","src":"4285:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4294:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4297:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4287:6:16"},"nodeType":"YulFunctionCall","src":"4287:12:16"},"nodeType":"YulExpressionStatement","src":"4287:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4251:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4276:5:16"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"4258:17:16"},"nodeType":"YulFunctionCall","src":"4258:24:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4248:2:16"},"nodeType":"YulFunctionCall","src":"4248:35:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4241:6:16"},"nodeType":"YulFunctionCall","src":"4241:43:16"},"nodeType":"YulIf","src":"4238:63:16"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4221:5:16","type":""}],"src":"4185:122:16"},{"body":{"nodeType":"YulBlock","src":"4365:87:16","statements":[{"nodeType":"YulAssignment","src":"4375:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4397:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4384:12:16"},"nodeType":"YulFunctionCall","src":"4384:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4375:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4440:5:16"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4413:26:16"},"nodeType":"YulFunctionCall","src":"4413:33:16"},"nodeType":"YulExpressionStatement","src":"4413:33:16"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4343:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"4351:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4359:5:16","type":""}],"src":"4313:139:16"},{"body":{"nodeType":"YulBlock","src":"4541:391:16","statements":[{"body":{"nodeType":"YulBlock","src":"4587:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4589:77:16"},"nodeType":"YulFunctionCall","src":"4589:79:16"},"nodeType":"YulExpressionStatement","src":"4589:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4562:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4558:3:16"},"nodeType":"YulFunctionCall","src":"4558:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"4583:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4554:3:16"},"nodeType":"YulFunctionCall","src":"4554:32:16"},"nodeType":"YulIf","src":"4551:119:16"},{"nodeType":"YulBlock","src":"4680:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4695:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"4709:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4699:6:16","type":""}]},{"nodeType":"YulAssignment","src":"4724:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4759:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"4770:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4755:3:16"},"nodeType":"YulFunctionCall","src":"4755:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4779:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4734:20:16"},"nodeType":"YulFunctionCall","src":"4734:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4724:6:16"}]}]},{"nodeType":"YulBlock","src":"4807:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4822:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"4836:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4826:6:16","type":""}]},{"nodeType":"YulAssignment","src":"4852:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"4898:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4883:3:16"},"nodeType":"YulFunctionCall","src":"4883:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4907:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4862:20:16"},"nodeType":"YulFunctionCall","src":"4862:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4852:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4503:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4514:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4526:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4534:6:16","type":""}],"src":"4458:474:16"},{"body":{"nodeType":"YulBlock","src":"5038:519:16","statements":[{"body":{"nodeType":"YulBlock","src":"5084:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5086:77:16"},"nodeType":"YulFunctionCall","src":"5086:79:16"},"nodeType":"YulExpressionStatement","src":"5086:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5059:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"5068:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5055:3:16"},"nodeType":"YulFunctionCall","src":"5055:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"5080:2:16","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5051:3:16"},"nodeType":"YulFunctionCall","src":"5051:32:16"},"nodeType":"YulIf","src":"5048:119:16"},{"nodeType":"YulBlock","src":"5177:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5192:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5206:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5196:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5221:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5256:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5267:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5252:3:16"},"nodeType":"YulFunctionCall","src":"5252:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5276:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5231:20:16"},"nodeType":"YulFunctionCall","src":"5231:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5221:6:16"}]}]},{"nodeType":"YulBlock","src":"5304:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5319:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5333:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5323:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5349:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5384:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5395:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5380:3:16"},"nodeType":"YulFunctionCall","src":"5380:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5404:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5359:20:16"},"nodeType":"YulFunctionCall","src":"5359:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5349:6:16"}]}]},{"nodeType":"YulBlock","src":"5432:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5447:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5461:2:16","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5451:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5477:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5512:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5523:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5508:3:16"},"nodeType":"YulFunctionCall","src":"5508:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5532:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5487:20:16"},"nodeType":"YulFunctionCall","src":"5487:53:16"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5477:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4992:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5003:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5015:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5023:6:16","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5031:6:16","type":""}],"src":"4938:619:16"},{"body":{"nodeType":"YulBlock","src":"5629:263:16","statements":[{"body":{"nodeType":"YulBlock","src":"5675:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5677:77:16"},"nodeType":"YulFunctionCall","src":"5677:79:16"},"nodeType":"YulExpressionStatement","src":"5677:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5650:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"5659:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5646:3:16"},"nodeType":"YulFunctionCall","src":"5646:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"5671:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5642:3:16"},"nodeType":"YulFunctionCall","src":"5642:32:16"},"nodeType":"YulIf","src":"5639:119:16"},{"nodeType":"YulBlock","src":"5768:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5783:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5797:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5787:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5812:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5847:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5858:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5843:3:16"},"nodeType":"YulFunctionCall","src":"5843:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5867:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5822:20:16"},"nodeType":"YulFunctionCall","src":"5822:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5812:6:16"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5599:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5610:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5622:6:16","type":""}],"src":"5563:329:16"},{"body":{"nodeType":"YulBlock","src":"5963:53:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5980:3:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6003:5:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5985:17:16"},"nodeType":"YulFunctionCall","src":"5985:24:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5973:6:16"},"nodeType":"YulFunctionCall","src":"5973:37:16"},"nodeType":"YulExpressionStatement","src":"5973:37:16"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5951:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5958:3:16","type":""}],"src":"5898:118:16"},{"body":{"nodeType":"YulBlock","src":"6120:124:16","statements":[{"nodeType":"YulAssignment","src":"6130:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6142:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"6153:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6138:3:16"},"nodeType":"YulFunctionCall","src":"6138:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6130:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6210:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6223:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"6234:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6219:3:16"},"nodeType":"YulFunctionCall","src":"6219:17:16"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6166:43:16"},"nodeType":"YulFunctionCall","src":"6166:71:16"},"nodeType":"YulExpressionStatement","src":"6166:71:16"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6092:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6104:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6115:4:16","type":""}],"src":"6022:222:16"},{"body":{"nodeType":"YulBlock","src":"6290:76:16","statements":[{"body":{"nodeType":"YulBlock","src":"6344:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6353:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6356:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6346:6:16"},"nodeType":"YulFunctionCall","src":"6346:12:16"},"nodeType":"YulExpressionStatement","src":"6346:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6313:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6335:5:16"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6320:14:16"},"nodeType":"YulFunctionCall","src":"6320:21:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6310:2:16"},"nodeType":"YulFunctionCall","src":"6310:32:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6303:6:16"},"nodeType":"YulFunctionCall","src":"6303:40:16"},"nodeType":"YulIf","src":"6300:60:16"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6283:5:16","type":""}],"src":"6250:116:16"},{"body":{"nodeType":"YulBlock","src":"6421:84:16","statements":[{"nodeType":"YulAssignment","src":"6431:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6453:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6440:12:16"},"nodeType":"YulFunctionCall","src":"6440:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6431:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6493:5:16"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6469:23:16"},"nodeType":"YulFunctionCall","src":"6469:30:16"},"nodeType":"YulExpressionStatement","src":"6469:30:16"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6399:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"6407:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6415:5:16","type":""}],"src":"6372:133:16"},{"body":{"nodeType":"YulBlock","src":"6591:388:16","statements":[{"body":{"nodeType":"YulBlock","src":"6637:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6639:77:16"},"nodeType":"YulFunctionCall","src":"6639:79:16"},"nodeType":"YulExpressionStatement","src":"6639:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6612:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"6621:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6608:3:16"},"nodeType":"YulFunctionCall","src":"6608:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"6633:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6604:3:16"},"nodeType":"YulFunctionCall","src":"6604:32:16"},"nodeType":"YulIf","src":"6601:119:16"},{"nodeType":"YulBlock","src":"6730:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"6745:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"6759:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6749:6:16","type":""}]},{"nodeType":"YulAssignment","src":"6774:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6809:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"6820:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6805:3:16"},"nodeType":"YulFunctionCall","src":"6805:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6829:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6784:20:16"},"nodeType":"YulFunctionCall","src":"6784:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6774:6:16"}]}]},{"nodeType":"YulBlock","src":"6857:115:16","statements":[{"nodeType":"YulVariableDeclaration","src":"6872:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"6886:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6876:6:16","type":""}]},{"nodeType":"YulAssignment","src":"6902:60:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6934:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"6945:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6930:3:16"},"nodeType":"YulFunctionCall","src":"6930:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6954:7:16"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"6912:17:16"},"nodeType":"YulFunctionCall","src":"6912:50:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6902:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6553:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6564:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6576:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6584:6:16","type":""}],"src":"6511:468:16"},{"body":{"nodeType":"YulBlock","src":"7074:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7091:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7094:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7084:6:16"},"nodeType":"YulFunctionCall","src":"7084:12:16"},"nodeType":"YulExpressionStatement","src":"7084:12:16"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"6985:117:16"},{"body":{"nodeType":"YulBlock","src":"7197:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7214:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7217:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7207:6:16"},"nodeType":"YulFunctionCall","src":"7207:12:16"},"nodeType":"YulExpressionStatement","src":"7207:12:16"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"7108:117:16"},{"body":{"nodeType":"YulBlock","src":"7259:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7276:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7279:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7269:6:16"},"nodeType":"YulFunctionCall","src":"7269:88:16"},"nodeType":"YulExpressionStatement","src":"7269:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7373:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7376:4:16","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7366:6:16"},"nodeType":"YulFunctionCall","src":"7366:15:16"},"nodeType":"YulExpressionStatement","src":"7366:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7397:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7400:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7390:6:16"},"nodeType":"YulFunctionCall","src":"7390:15:16"},"nodeType":"YulExpressionStatement","src":"7390:15:16"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7231:180:16"},{"body":{"nodeType":"YulBlock","src":"7460:238:16","statements":[{"nodeType":"YulVariableDeclaration","src":"7470:58:16","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7492:6:16"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7522:4:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7500:21:16"},"nodeType":"YulFunctionCall","src":"7500:27:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7488:3:16"},"nodeType":"YulFunctionCall","src":"7488:40:16"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7474:10:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"7639:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7641:16:16"},"nodeType":"YulFunctionCall","src":"7641:18:16"},"nodeType":"YulExpressionStatement","src":"7641:18:16"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7582:10:16"},{"kind":"number","nodeType":"YulLiteral","src":"7594:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7579:2:16"},"nodeType":"YulFunctionCall","src":"7579:34:16"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7618:10:16"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7630:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7615:2:16"},"nodeType":"YulFunctionCall","src":"7615:22:16"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7576:2:16"},"nodeType":"YulFunctionCall","src":"7576:62:16"},"nodeType":"YulIf","src":"7573:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7677:2:16","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7681:10:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7670:6:16"},"nodeType":"YulFunctionCall","src":"7670:22:16"},"nodeType":"YulExpressionStatement","src":"7670:22:16"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7446:6:16","type":""},{"name":"size","nodeType":"YulTypedName","src":"7454:4:16","type":""}],"src":"7417:281:16"},{"body":{"nodeType":"YulBlock","src":"7745:88:16","statements":[{"nodeType":"YulAssignment","src":"7755:30:16","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7765:18:16"},"nodeType":"YulFunctionCall","src":"7765:20:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7755:6:16"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7814:6:16"},{"name":"size","nodeType":"YulIdentifier","src":"7822:4:16"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7794:19:16"},"nodeType":"YulFunctionCall","src":"7794:33:16"},"nodeType":"YulExpressionStatement","src":"7794:33:16"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7729:4:16","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7738:6:16","type":""}],"src":"7704:129:16"},{"body":{"nodeType":"YulBlock","src":"7905:241:16","statements":[{"body":{"nodeType":"YulBlock","src":"8010:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"8012:16:16"},"nodeType":"YulFunctionCall","src":"8012:18:16"},"nodeType":"YulExpressionStatement","src":"8012:18:16"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7982:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"7990:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7979:2:16"},"nodeType":"YulFunctionCall","src":"7979:30:16"},"nodeType":"YulIf","src":"7976:56:16"},{"nodeType":"YulAssignment","src":"8042:37:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8072:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8050:21:16"},"nodeType":"YulFunctionCall","src":"8050:29:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8042:4:16"}]},{"nodeType":"YulAssignment","src":"8116:23:16","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"8128:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"8134:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8124:3:16"},"nodeType":"YulFunctionCall","src":"8124:15:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8116:4:16"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7889:6:16","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7900:4:16","type":""}],"src":"7839:307:16"},{"body":{"nodeType":"YulBlock","src":"8203:103:16","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8226:3:16"},{"name":"src","nodeType":"YulIdentifier","src":"8231:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8236:6:16"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8213:12:16"},"nodeType":"YulFunctionCall","src":"8213:30:16"},"nodeType":"YulExpressionStatement","src":"8213:30:16"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8284:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8289:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8280:3:16"},"nodeType":"YulFunctionCall","src":"8280:16:16"},{"kind":"number","nodeType":"YulLiteral","src":"8298:1:16","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8273:6:16"},"nodeType":"YulFunctionCall","src":"8273:27:16"},"nodeType":"YulExpressionStatement","src":"8273:27:16"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8185:3:16","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8190:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"8195:6:16","type":""}],"src":"8152:154:16"},{"body":{"nodeType":"YulBlock","src":"8395:327:16","statements":[{"nodeType":"YulAssignment","src":"8405:74:16","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8471:6:16"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8430:40:16"},"nodeType":"YulFunctionCall","src":"8430:48:16"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8414:15:16"},"nodeType":"YulFunctionCall","src":"8414:65:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8405:5:16"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8495:5:16"},{"name":"length","nodeType":"YulIdentifier","src":"8502:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8488:6:16"},"nodeType":"YulFunctionCall","src":"8488:21:16"},"nodeType":"YulExpressionStatement","src":"8488:21:16"},{"nodeType":"YulVariableDeclaration","src":"8518:27:16","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8533:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"8540:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8529:3:16"},"nodeType":"YulFunctionCall","src":"8529:16:16"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8522:3:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"8583:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"8585:77:16"},"nodeType":"YulFunctionCall","src":"8585:79:16"},"nodeType":"YulExpressionStatement","src":"8585:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8564:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8569:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8560:3:16"},"nodeType":"YulFunctionCall","src":"8560:16:16"},{"name":"end","nodeType":"YulIdentifier","src":"8578:3:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8557:2:16"},"nodeType":"YulFunctionCall","src":"8557:25:16"},"nodeType":"YulIf","src":"8554:112:16"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8699:3:16"},{"name":"dst","nodeType":"YulIdentifier","src":"8704:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8709:6:16"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"8675:23:16"},"nodeType":"YulFunctionCall","src":"8675:41:16"},"nodeType":"YulExpressionStatement","src":"8675:41:16"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8368:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"8373:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"8381:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8389:5:16","type":""}],"src":"8312:410:16"},{"body":{"nodeType":"YulBlock","src":"8802:277:16","statements":[{"body":{"nodeType":"YulBlock","src":"8851:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"8853:77:16"},"nodeType":"YulFunctionCall","src":"8853:79:16"},"nodeType":"YulExpressionStatement","src":"8853:79:16"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8830:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"8838:4:16","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8826:3:16"},"nodeType":"YulFunctionCall","src":"8826:17:16"},{"name":"end","nodeType":"YulIdentifier","src":"8845:3:16"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8822:3:16"},"nodeType":"YulFunctionCall","src":"8822:27:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8815:6:16"},"nodeType":"YulFunctionCall","src":"8815:35:16"},"nodeType":"YulIf","src":"8812:122:16"},{"nodeType":"YulVariableDeclaration","src":"8943:34:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8970:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8957:12:16"},"nodeType":"YulFunctionCall","src":"8957:20:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8947:6:16","type":""}]},{"nodeType":"YulAssignment","src":"8986:87:16","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9046:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"9054:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9042:3:16"},"nodeType":"YulFunctionCall","src":"9042:17:16"},{"name":"length","nodeType":"YulIdentifier","src":"9061:6:16"},{"name":"end","nodeType":"YulIdentifier","src":"9069:3:16"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8995:46:16"},"nodeType":"YulFunctionCall","src":"8995:78:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8986:5:16"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8780:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"8788:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8796:5:16","type":""}],"src":"8741:338:16"},{"body":{"nodeType":"YulBlock","src":"9211:817:16","statements":[{"body":{"nodeType":"YulBlock","src":"9258:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9260:77:16"},"nodeType":"YulFunctionCall","src":"9260:79:16"},"nodeType":"YulExpressionStatement","src":"9260:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9232:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"9241:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9228:3:16"},"nodeType":"YulFunctionCall","src":"9228:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"9253:3:16","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9224:3:16"},"nodeType":"YulFunctionCall","src":"9224:33:16"},"nodeType":"YulIf","src":"9221:120:16"},{"nodeType":"YulBlock","src":"9351:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9366:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"9380:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9370:6:16","type":""}]},{"nodeType":"YulAssignment","src":"9395:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9430:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9441:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9426:3:16"},"nodeType":"YulFunctionCall","src":"9426:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9450:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9405:20:16"},"nodeType":"YulFunctionCall","src":"9405:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9395:6:16"}]}]},{"nodeType":"YulBlock","src":"9478:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9493:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"9507:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9497:6:16","type":""}]},{"nodeType":"YulAssignment","src":"9523:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9558:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9569:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9554:3:16"},"nodeType":"YulFunctionCall","src":"9554:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9578:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9533:20:16"},"nodeType":"YulFunctionCall","src":"9533:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9523:6:16"}]}]},{"nodeType":"YulBlock","src":"9606:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9621:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"9635:2:16","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9625:6:16","type":""}]},{"nodeType":"YulAssignment","src":"9651:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9686:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9697:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9682:3:16"},"nodeType":"YulFunctionCall","src":"9682:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9706:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"9661:20:16"},"nodeType":"YulFunctionCall","src":"9661:53:16"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9651:6:16"}]}]},{"nodeType":"YulBlock","src":"9734:287:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9749:46:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9780:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"9791:2:16","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9776:3:16"},"nodeType":"YulFunctionCall","src":"9776:18:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9763:12:16"},"nodeType":"YulFunctionCall","src":"9763:32:16"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9753:6:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"9842:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9844:77:16"},"nodeType":"YulFunctionCall","src":"9844:79:16"},"nodeType":"YulExpressionStatement","src":"9844:79:16"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9814:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"9822:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9811:2:16"},"nodeType":"YulFunctionCall","src":"9811:30:16"},"nodeType":"YulIf","src":"9808:117:16"},{"nodeType":"YulAssignment","src":"9939:72:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9983:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9994:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:16"},"nodeType":"YulFunctionCall","src":"9979:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10003:7:16"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"9949:29:16"},"nodeType":"YulFunctionCall","src":"9949:62:16"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9939:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9157:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9168:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9180:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9188:6:16","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9196:6:16","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9204:6:16","type":""}],"src":"9085:943:16"},{"body":{"nodeType":"YulBlock","src":"10117:391:16","statements":[{"body":{"nodeType":"YulBlock","src":"10163:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10165:77:16"},"nodeType":"YulFunctionCall","src":"10165:79:16"},"nodeType":"YulExpressionStatement","src":"10165:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10138:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"10147:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10134:3:16"},"nodeType":"YulFunctionCall","src":"10134:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"10159:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10130:3:16"},"nodeType":"YulFunctionCall","src":"10130:32:16"},"nodeType":"YulIf","src":"10127:119:16"},{"nodeType":"YulBlock","src":"10256:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"10271:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"10285:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10275:6:16","type":""}]},{"nodeType":"YulAssignment","src":"10300:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10335:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"10346:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10331:3:16"},"nodeType":"YulFunctionCall","src":"10331:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10355:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10310:20:16"},"nodeType":"YulFunctionCall","src":"10310:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10300:6:16"}]}]},{"nodeType":"YulBlock","src":"10383:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"10398:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"10412:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10402:6:16","type":""}]},{"nodeType":"YulAssignment","src":"10428:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10463:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"10474:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10459:3:16"},"nodeType":"YulFunctionCall","src":"10459:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10483:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10438:20:16"},"nodeType":"YulFunctionCall","src":"10438:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10428:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10079:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10090:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10102:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10110:6:16","type":""}],"src":"10034:474:16"},{"body":{"nodeType":"YulBlock","src":"10542:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10559:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10562:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10552:6:16"},"nodeType":"YulFunctionCall","src":"10552:88:16"},"nodeType":"YulExpressionStatement","src":"10552:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10656:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10659:4:16","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10649:6:16"},"nodeType":"YulFunctionCall","src":"10649:15:16"},"nodeType":"YulExpressionStatement","src":"10649:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10680:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10683:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10673:6:16"},"nodeType":"YulFunctionCall","src":"10673:15:16"},"nodeType":"YulExpressionStatement","src":"10673:15:16"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"10514:180:16"},{"body":{"nodeType":"YulBlock","src":"10751:269:16","statements":[{"nodeType":"YulAssignment","src":"10761:22:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10775:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"10781:1:16","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10771:3:16"},"nodeType":"YulFunctionCall","src":"10771:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10761:6:16"}]},{"nodeType":"YulVariableDeclaration","src":"10792:38:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10822:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"10828:1:16","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10818:3:16"},"nodeType":"YulFunctionCall","src":"10818:12:16"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"10796:18:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"10869:51:16","statements":[{"nodeType":"YulAssignment","src":"10883:27:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10897:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"10905:4:16","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10893:3:16"},"nodeType":"YulFunctionCall","src":"10893:17:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10883:6:16"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10849:18:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10842:6:16"},"nodeType":"YulFunctionCall","src":"10842:26:16"},"nodeType":"YulIf","src":"10839:81:16"},{"body":{"nodeType":"YulBlock","src":"10972:42:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"10986:16:16"},"nodeType":"YulFunctionCall","src":"10986:18:16"},"nodeType":"YulExpressionStatement","src":"10986:18:16"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10936:18:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10959:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"10967:2:16","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10956:2:16"},"nodeType":"YulFunctionCall","src":"10956:14:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10933:2:16"},"nodeType":"YulFunctionCall","src":"10933:38:16"},"nodeType":"YulIf","src":"10930:84:16"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"10735:4:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"10744:6:16","type":""}],"src":"10700:320:16"},{"body":{"nodeType":"YulBlock","src":"11132:114:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11154:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"11162:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11150:3:16"},"nodeType":"YulFunctionCall","src":"11150:14:16"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"11166:34:16","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11143:6:16"},"nodeType":"YulFunctionCall","src":"11143:58:16"},"nodeType":"YulExpressionStatement","src":"11143:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11222:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"11230:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11218:3:16"},"nodeType":"YulFunctionCall","src":"11218:15:16"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"11235:3:16","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11211:6:16"},"nodeType":"YulFunctionCall","src":"11211:28:16"},"nodeType":"YulExpressionStatement","src":"11211:28:16"}]},"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11124:6:16","type":""}],"src":"11026:220:16"},{"body":{"nodeType":"YulBlock","src":"11398:220:16","statements":[{"nodeType":"YulAssignment","src":"11408:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11474:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"11479:2:16","type":"","value":"33"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11415:58:16"},"nodeType":"YulFunctionCall","src":"11415:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11408:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11580:3:16"}],"functionName":{"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulIdentifier","src":"11491:88:16"},"nodeType":"YulFunctionCall","src":"11491:93:16"},"nodeType":"YulExpressionStatement","src":"11491:93:16"},{"nodeType":"YulAssignment","src":"11593:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11604:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"11609:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11600:3:16"},"nodeType":"YulFunctionCall","src":"11600:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11593:3:16"}]}]},"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11386:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11394:3:16","type":""}],"src":"11252:366:16"},{"body":{"nodeType":"YulBlock","src":"11795:248:16","statements":[{"nodeType":"YulAssignment","src":"11805:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11817:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"11828:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11813:3:16"},"nodeType":"YulFunctionCall","src":"11813:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11805:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11852:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"11863:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11848:3:16"},"nodeType":"YulFunctionCall","src":"11848:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11871:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"11877:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11867:3:16"},"nodeType":"YulFunctionCall","src":"11867:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11841:6:16"},"nodeType":"YulFunctionCall","src":"11841:47:16"},"nodeType":"YulExpressionStatement","src":"11841:47:16"},{"nodeType":"YulAssignment","src":"11897:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12031:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11905:124:16"},"nodeType":"YulFunctionCall","src":"11905:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11897:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11775:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11790:4:16","type":""}],"src":"11624:419:16"},{"body":{"nodeType":"YulBlock","src":"12155:143:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12177:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"12185:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12173:3:16"},"nodeType":"YulFunctionCall","src":"12173:14:16"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"12189:34:16","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12166:6:16"},"nodeType":"YulFunctionCall","src":"12166:58:16"},"nodeType":"YulExpressionStatement","src":"12166:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12245:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"12253:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12241:3:16"},"nodeType":"YulFunctionCall","src":"12241:15:16"},{"hexValue":"6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"12258:32:16","type":"","value":"ken owner nor approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12234:6:16"},"nodeType":"YulFunctionCall","src":"12234:57:16"},"nodeType":"YulExpressionStatement","src":"12234:57:16"}]},"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12147:6:16","type":""}],"src":"12049:249:16"},{"body":{"nodeType":"YulBlock","src":"12450:220:16","statements":[{"nodeType":"YulAssignment","src":"12460:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12526:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"12531:2:16","type":"","value":"62"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12467:58:16"},"nodeType":"YulFunctionCall","src":"12467:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12460:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12632:3:16"}],"functionName":{"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulIdentifier","src":"12543:88:16"},"nodeType":"YulFunctionCall","src":"12543:93:16"},"nodeType":"YulExpressionStatement","src":"12543:93:16"},{"nodeType":"YulAssignment","src":"12645:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12656:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"12661:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12652:3:16"},"nodeType":"YulFunctionCall","src":"12652:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12645:3:16"}]}]},"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12438:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12446:3:16","type":""}],"src":"12304:366:16"},{"body":{"nodeType":"YulBlock","src":"12847:248:16","statements":[{"nodeType":"YulAssignment","src":"12857:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12869:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"12880:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12865:3:16"},"nodeType":"YulFunctionCall","src":"12865:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12857:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12904:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"12915:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12900:3:16"},"nodeType":"YulFunctionCall","src":"12900:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12923:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"12929:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12919:3:16"},"nodeType":"YulFunctionCall","src":"12919:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12893:6:16"},"nodeType":"YulFunctionCall","src":"12893:47:16"},"nodeType":"YulExpressionStatement","src":"12893:47:16"},{"nodeType":"YulAssignment","src":"12949:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13083:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12957:124:16"},"nodeType":"YulFunctionCall","src":"12957:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12949:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12827:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12842:4:16","type":""}],"src":"12676:419:16"},{"body":{"nodeType":"YulBlock","src":"13207:127:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13229:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"13237:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13225:3:16"},"nodeType":"YulFunctionCall","src":"13225:14:16"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"13241:34:16","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13218:6:16"},"nodeType":"YulFunctionCall","src":"13218:58:16"},"nodeType":"YulExpressionStatement","src":"13218:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13297:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"13305:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13293:3:16"},"nodeType":"YulFunctionCall","src":"13293:15:16"},{"hexValue":"72206e6f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"13310:16:16","type":"","value":"r nor approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13286:6:16"},"nodeType":"YulFunctionCall","src":"13286:41:16"},"nodeType":"YulExpressionStatement","src":"13286:41:16"}]},"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"13199:6:16","type":""}],"src":"13101:233:16"},{"body":{"nodeType":"YulBlock","src":"13486:220:16","statements":[{"nodeType":"YulAssignment","src":"13496:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13562:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"13567:2:16","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13503:58:16"},"nodeType":"YulFunctionCall","src":"13503:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13496:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13668:3:16"}],"functionName":{"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulIdentifier","src":"13579:88:16"},"nodeType":"YulFunctionCall","src":"13579:93:16"},"nodeType":"YulExpressionStatement","src":"13579:93:16"},{"nodeType":"YulAssignment","src":"13681:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13692:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"13697:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13688:3:16"},"nodeType":"YulFunctionCall","src":"13688:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13681:3:16"}]}]},"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13474:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13482:3:16","type":""}],"src":"13340:366:16"},{"body":{"nodeType":"YulBlock","src":"13883:248:16","statements":[{"nodeType":"YulAssignment","src":"13893:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13905:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"13916:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13901:3:16"},"nodeType":"YulFunctionCall","src":"13901:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13893:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13940:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"13951:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13936:3:16"},"nodeType":"YulFunctionCall","src":"13936:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13959:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"13965:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13955:3:16"},"nodeType":"YulFunctionCall","src":"13955:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13929:6:16"},"nodeType":"YulFunctionCall","src":"13929:47:16"},"nodeType":"YulExpressionStatement","src":"13929:47:16"},{"nodeType":"YulAssignment","src":"13985:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14119:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13993:124:16"},"nodeType":"YulFunctionCall","src":"13993:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13985:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13863:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13878:4:16","type":""}],"src":"13712:419:16"},{"body":{"nodeType":"YulBlock","src":"14243:68:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14265:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"14273:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14261:3:16"},"nodeType":"YulFunctionCall","src":"14261:14:16"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"14277:26:16","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14254:6:16"},"nodeType":"YulFunctionCall","src":"14254:50:16"},"nodeType":"YulExpressionStatement","src":"14254:50:16"}]},"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14235:6:16","type":""}],"src":"14137:174:16"},{"body":{"nodeType":"YulBlock","src":"14463:220:16","statements":[{"nodeType":"YulAssignment","src":"14473:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14539:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"14544:2:16","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14480:58:16"},"nodeType":"YulFunctionCall","src":"14480:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14473:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14645:3:16"}],"functionName":{"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulIdentifier","src":"14556:88:16"},"nodeType":"YulFunctionCall","src":"14556:93:16"},"nodeType":"YulExpressionStatement","src":"14556:93:16"},{"nodeType":"YulAssignment","src":"14658:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14669:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"14674:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14665:3:16"},"nodeType":"YulFunctionCall","src":"14665:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14658:3:16"}]}]},"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14451:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14459:3:16","type":""}],"src":"14317:366:16"},{"body":{"nodeType":"YulBlock","src":"14860:248:16","statements":[{"nodeType":"YulAssignment","src":"14870:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14882:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"14893:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14878:3:16"},"nodeType":"YulFunctionCall","src":"14878:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14870:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14917:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"14928:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14913:3:16"},"nodeType":"YulFunctionCall","src":"14913:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14936:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"14942:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14932:3:16"},"nodeType":"YulFunctionCall","src":"14932:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14906:6:16"},"nodeType":"YulFunctionCall","src":"14906:47:16"},"nodeType":"YulExpressionStatement","src":"14906:47:16"},{"nodeType":"YulAssignment","src":"14962:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15096:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14970:124:16"},"nodeType":"YulFunctionCall","src":"14970:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14962:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14840:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14855:4:16","type":""}],"src":"14689:419:16"},{"body":{"nodeType":"YulBlock","src":"15220:122:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15242:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"15250:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15238:3:16"},"nodeType":"YulFunctionCall","src":"15238:14:16"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"15254:34:16","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15231:6:16"},"nodeType":"YulFunctionCall","src":"15231:58:16"},"nodeType":"YulExpressionStatement","src":"15231:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15310:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"15318:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15306:3:16"},"nodeType":"YulFunctionCall","src":"15306:15:16"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"15323:11:16","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15299:6:16"},"nodeType":"YulFunctionCall","src":"15299:36:16"},"nodeType":"YulExpressionStatement","src":"15299:36:16"}]},"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"15212:6:16","type":""}],"src":"15114:228:16"},{"body":{"nodeType":"YulBlock","src":"15494:220:16","statements":[{"nodeType":"YulAssignment","src":"15504:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15570:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"15575:2:16","type":"","value":"41"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15511:58:16"},"nodeType":"YulFunctionCall","src":"15511:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15504:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15676:3:16"}],"functionName":{"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulIdentifier","src":"15587:88:16"},"nodeType":"YulFunctionCall","src":"15587:93:16"},"nodeType":"YulExpressionStatement","src":"15587:93:16"},{"nodeType":"YulAssignment","src":"15689:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15700:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"15705:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15696:3:16"},"nodeType":"YulFunctionCall","src":"15696:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15689:3:16"}]}]},"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15482:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15490:3:16","type":""}],"src":"15348:366:16"},{"body":{"nodeType":"YulBlock","src":"15891:248:16","statements":[{"nodeType":"YulAssignment","src":"15901:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15913:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"15924:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15909:3:16"},"nodeType":"YulFunctionCall","src":"15909:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15901:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15948:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"15959:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15944:3:16"},"nodeType":"YulFunctionCall","src":"15944:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15967:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"15973:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15963:3:16"},"nodeType":"YulFunctionCall","src":"15963:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15937:6:16"},"nodeType":"YulFunctionCall","src":"15937:47:16"},"nodeType":"YulExpressionStatement","src":"15937:47:16"},{"nodeType":"YulAssignment","src":"15993:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16127:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16001:124:16"},"nodeType":"YulFunctionCall","src":"16001:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15993:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15871:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15886:4:16","type":""}],"src":"15720:419:16"},{"body":{"nodeType":"YulBlock","src":"16259:34:16","statements":[{"nodeType":"YulAssignment","src":"16269:18:16","value":{"name":"pos","nodeType":"YulIdentifier","src":"16284:3:16"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16269:11:16"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16231:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"16236:6:16","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16247:11:16","type":""}],"src":"16145:148:16"},{"body":{"nodeType":"YulBlock","src":"16409:267:16","statements":[{"nodeType":"YulVariableDeclaration","src":"16419:53:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16466:5:16"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"16433:32:16"},"nodeType":"YulFunctionCall","src":"16433:39:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16423:6:16","type":""}]},{"nodeType":"YulAssignment","src":"16481:96:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16565:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"16570:6:16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16488:76:16"},"nodeType":"YulFunctionCall","src":"16488:89:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16481:3:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16612:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"16619:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16608:3:16"},"nodeType":"YulFunctionCall","src":"16608:16:16"},{"name":"pos","nodeType":"YulIdentifier","src":"16626:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"16631:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"16586:21:16"},"nodeType":"YulFunctionCall","src":"16586:52:16"},"nodeType":"YulExpressionStatement","src":"16586:52:16"},{"nodeType":"YulAssignment","src":"16647:23:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16658:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"16663:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16654:3:16"},"nodeType":"YulFunctionCall","src":"16654:16:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16647:3:16"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16390:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16397:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16405:3:16","type":""}],"src":"16299:377:16"},{"body":{"nodeType":"YulBlock","src":"16866:251:16","statements":[{"nodeType":"YulAssignment","src":"16877:102:16","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16966:6:16"},{"name":"pos","nodeType":"YulIdentifier","src":"16975:3:16"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16884:81:16"},"nodeType":"YulFunctionCall","src":"16884:95:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16877:3:16"}]},{"nodeType":"YulAssignment","src":"16989:102:16","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"17078:6:16"},{"name":"pos","nodeType":"YulIdentifier","src":"17087:3:16"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16996:81:16"},"nodeType":"YulFunctionCall","src":"16996:95:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16989:3:16"}]},{"nodeType":"YulAssignment","src":"17101:10:16","value":{"name":"pos","nodeType":"YulIdentifier","src":"17108:3:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17101:3:16"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16837:3:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16843:6:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16851:6:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16862:3:16","type":""}],"src":"16682:435:16"},{"body":{"nodeType":"YulBlock","src":"17229:119:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17251:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"17259:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17247:3:16"},"nodeType":"YulFunctionCall","src":"17247:14:16"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"17263:34:16","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17240:6:16"},"nodeType":"YulFunctionCall","src":"17240:58:16"},"nodeType":"YulExpressionStatement","src":"17240:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17319:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"17327:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17315:3:16"},"nodeType":"YulFunctionCall","src":"17315:15:16"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"17332:8:16","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17308:6:16"},"nodeType":"YulFunctionCall","src":"17308:33:16"},"nodeType":"YulExpressionStatement","src":"17308:33:16"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17221:6:16","type":""}],"src":"17123:225:16"},{"body":{"nodeType":"YulBlock","src":"17500:220:16","statements":[{"nodeType":"YulAssignment","src":"17510:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17576:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"17581:2:16","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17517:58:16"},"nodeType":"YulFunctionCall","src":"17517:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17510:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17682:3:16"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"17593:88:16"},"nodeType":"YulFunctionCall","src":"17593:93:16"},"nodeType":"YulExpressionStatement","src":"17593:93:16"},{"nodeType":"YulAssignment","src":"17695:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17706:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"17711:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17702:3:16"},"nodeType":"YulFunctionCall","src":"17702:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17695:3:16"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17488:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17496:3:16","type":""}],"src":"17354:366:16"},{"body":{"nodeType":"YulBlock","src":"17897:248:16","statements":[{"nodeType":"YulAssignment","src":"17907:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17919:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"17930:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17915:3:16"},"nodeType":"YulFunctionCall","src":"17915:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17907:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17954:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"17965:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17950:3:16"},"nodeType":"YulFunctionCall","src":"17950:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17973:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"17979:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17969:3:16"},"nodeType":"YulFunctionCall","src":"17969:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17943:6:16"},"nodeType":"YulFunctionCall","src":"17943:47:16"},"nodeType":"YulExpressionStatement","src":"17943:47:16"},{"nodeType":"YulAssignment","src":"17999:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18133:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18007:124:16"},"nodeType":"YulFunctionCall","src":"18007:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17999:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17877:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17892:4:16","type":""}],"src":"17726:419:16"},{"body":{"nodeType":"YulBlock","src":"18257:76:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18279:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"18287:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18275:3:16"},"nodeType":"YulFunctionCall","src":"18275:14:16"},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"18291:34:16","type":"","value":"ERC721: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18268:6:16"},"nodeType":"YulFunctionCall","src":"18268:58:16"},"nodeType":"YulExpressionStatement","src":"18268:58:16"}]},"name":"store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18249:6:16","type":""}],"src":"18151:182:16"},{"body":{"nodeType":"YulBlock","src":"18485:220:16","statements":[{"nodeType":"YulAssignment","src":"18495:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18561:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"18566:2:16","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18502:58:16"},"nodeType":"YulFunctionCall","src":"18502:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18495:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18667:3:16"}],"functionName":{"name":"store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","nodeType":"YulIdentifier","src":"18578:88:16"},"nodeType":"YulFunctionCall","src":"18578:93:16"},"nodeType":"YulExpressionStatement","src":"18578:93:16"},{"nodeType":"YulAssignment","src":"18680:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18691:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"18696:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18687:3:16"},"nodeType":"YulFunctionCall","src":"18687:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18680:3:16"}]}]},"name":"abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18473:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18481:3:16","type":""}],"src":"18339:366:16"},{"body":{"nodeType":"YulBlock","src":"18882:248:16","statements":[{"nodeType":"YulAssignment","src":"18892:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18904:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"18915:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18900:3:16"},"nodeType":"YulFunctionCall","src":"18900:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18892:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18939:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"18950:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18935:3:16"},"nodeType":"YulFunctionCall","src":"18935:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18958:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"18964:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18954:3:16"},"nodeType":"YulFunctionCall","src":"18954:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18928:6:16"},"nodeType":"YulFunctionCall","src":"18928:47:16"},"nodeType":"YulExpressionStatement","src":"18928:47:16"},{"nodeType":"YulAssignment","src":"18984:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19118:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18992:124:16"},"nodeType":"YulFunctionCall","src":"18992:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18984:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18862:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18877:4:16","type":""}],"src":"18711:419:16"},{"body":{"nodeType":"YulBlock","src":"19242:72:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19264:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"19272:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19260:3:16"},"nodeType":"YulFunctionCall","src":"19260:14:16"},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","kind":"string","nodeType":"YulLiteral","src":"19276:30:16","type":"","value":"ERC721: token already minted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19253:6:16"},"nodeType":"YulFunctionCall","src":"19253:54:16"},"nodeType":"YulExpressionStatement","src":"19253:54:16"}]},"name":"store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19234:6:16","type":""}],"src":"19136:178:16"},{"body":{"nodeType":"YulBlock","src":"19466:220:16","statements":[{"nodeType":"YulAssignment","src":"19476:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19542:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"19547:2:16","type":"","value":"28"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19483:58:16"},"nodeType":"YulFunctionCall","src":"19483:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19476:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19648:3:16"}],"functionName":{"name":"store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","nodeType":"YulIdentifier","src":"19559:88:16"},"nodeType":"YulFunctionCall","src":"19559:93:16"},"nodeType":"YulExpressionStatement","src":"19559:93:16"},{"nodeType":"YulAssignment","src":"19661:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19672:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"19677:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19668:3:16"},"nodeType":"YulFunctionCall","src":"19668:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19661:3:16"}]}]},"name":"abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"19454:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"19462:3:16","type":""}],"src":"19320:366:16"},{"body":{"nodeType":"YulBlock","src":"19863:248:16","statements":[{"nodeType":"YulAssignment","src":"19873:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19885:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"19896:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19881:3:16"},"nodeType":"YulFunctionCall","src":"19881:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19873:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19920:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"19931:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19916:3:16"},"nodeType":"YulFunctionCall","src":"19916:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19939:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"19945:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19935:3:16"},"nodeType":"YulFunctionCall","src":"19935:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19909:6:16"},"nodeType":"YulFunctionCall","src":"19909:47:16"},"nodeType":"YulExpressionStatement","src":"19909:47:16"},{"nodeType":"YulAssignment","src":"19965:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20099:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19973:124:16"},"nodeType":"YulFunctionCall","src":"19973:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19965:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19843:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19858:4:16","type":""}],"src":"19692:419:16"},{"body":{"nodeType":"YulBlock","src":"20223:118:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20245:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"20253:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20241:3:16"},"nodeType":"YulFunctionCall","src":"20241:14:16"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"20257:34:16","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20234:6:16"},"nodeType":"YulFunctionCall","src":"20234:58:16"},"nodeType":"YulExpressionStatement","src":"20234:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20313:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"20321:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20309:3:16"},"nodeType":"YulFunctionCall","src":"20309:15:16"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"20326:7:16","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20302:6:16"},"nodeType":"YulFunctionCall","src":"20302:32:16"},"nodeType":"YulExpressionStatement","src":"20302:32:16"}]},"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"20215:6:16","type":""}],"src":"20117:224:16"},{"body":{"nodeType":"YulBlock","src":"20493:220:16","statements":[{"nodeType":"YulAssignment","src":"20503:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20569:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"20574:2:16","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20510:58:16"},"nodeType":"YulFunctionCall","src":"20510:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"20503:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20675:3:16"}],"functionName":{"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulIdentifier","src":"20586:88:16"},"nodeType":"YulFunctionCall","src":"20586:93:16"},"nodeType":"YulExpressionStatement","src":"20586:93:16"},{"nodeType":"YulAssignment","src":"20688:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20699:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"20704:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20695:3:16"},"nodeType":"YulFunctionCall","src":"20695:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"20688:3:16"}]}]},"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"20481:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"20489:3:16","type":""}],"src":"20347:366:16"},{"body":{"nodeType":"YulBlock","src":"20890:248:16","statements":[{"nodeType":"YulAssignment","src":"20900:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20912:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"20923:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20908:3:16"},"nodeType":"YulFunctionCall","src":"20908:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20900:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20947:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"20958:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20943:3:16"},"nodeType":"YulFunctionCall","src":"20943:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20966:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"20972:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20962:3:16"},"nodeType":"YulFunctionCall","src":"20962:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20936:6:16"},"nodeType":"YulFunctionCall","src":"20936:47:16"},"nodeType":"YulExpressionStatement","src":"20936:47:16"},{"nodeType":"YulAssignment","src":"20992:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21126:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21000:124:16"},"nodeType":"YulFunctionCall","src":"21000:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20992:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20870:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20885:4:16","type":""}],"src":"20719:419:16"},{"body":{"nodeType":"YulBlock","src":"21250:117:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21272:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"21280:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21268:3:16"},"nodeType":"YulFunctionCall","src":"21268:14:16"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"21284:34:16","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21261:6:16"},"nodeType":"YulFunctionCall","src":"21261:58:16"},"nodeType":"YulExpressionStatement","src":"21261:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21340:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"21348:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21336:3:16"},"nodeType":"YulFunctionCall","src":"21336:15:16"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"21353:6:16","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21329:6:16"},"nodeType":"YulFunctionCall","src":"21329:31:16"},"nodeType":"YulExpressionStatement","src":"21329:31:16"}]},"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"21242:6:16","type":""}],"src":"21144:223:16"},{"body":{"nodeType":"YulBlock","src":"21519:220:16","statements":[{"nodeType":"YulAssignment","src":"21529:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21595:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"21600:2:16","type":"","value":"36"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21536:58:16"},"nodeType":"YulFunctionCall","src":"21536:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"21529:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21701:3:16"}],"functionName":{"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulIdentifier","src":"21612:88:16"},"nodeType":"YulFunctionCall","src":"21612:93:16"},"nodeType":"YulExpressionStatement","src":"21612:93:16"},{"nodeType":"YulAssignment","src":"21714:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21725:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"21730:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21721:3:16"},"nodeType":"YulFunctionCall","src":"21721:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21714:3:16"}]}]},"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21507:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21515:3:16","type":""}],"src":"21373:366:16"},{"body":{"nodeType":"YulBlock","src":"21916:248:16","statements":[{"nodeType":"YulAssignment","src":"21926:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21938:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"21949:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21934:3:16"},"nodeType":"YulFunctionCall","src":"21934:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21926:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21973:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"21984:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21969:3:16"},"nodeType":"YulFunctionCall","src":"21969:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21992:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"21998:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21988:3:16"},"nodeType":"YulFunctionCall","src":"21988:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21962:6:16"},"nodeType":"YulFunctionCall","src":"21962:47:16"},"nodeType":"YulExpressionStatement","src":"21962:47:16"},{"nodeType":"YulAssignment","src":"22018:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22152:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22026:124:16"},"nodeType":"YulFunctionCall","src":"22026:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22018:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21896:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21911:4:16","type":""}],"src":"21745:419:16"},{"body":{"nodeType":"YulBlock","src":"22198:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22215:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22218:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22208:6:16"},"nodeType":"YulFunctionCall","src":"22208:88:16"},"nodeType":"YulExpressionStatement","src":"22208:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22312:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"22315:4:16","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22305:6:16"},"nodeType":"YulFunctionCall","src":"22305:15:16"},"nodeType":"YulExpressionStatement","src":"22305:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22336:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22339:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"22329:6:16"},"nodeType":"YulFunctionCall","src":"22329:15:16"},"nodeType":"YulExpressionStatement","src":"22329:15:16"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"22170:180:16"},{"body":{"nodeType":"YulBlock","src":"22401:146:16","statements":[{"nodeType":"YulAssignment","src":"22411:25:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22434:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22416:17:16"},"nodeType":"YulFunctionCall","src":"22416:20:16"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"22411:1:16"}]},{"nodeType":"YulAssignment","src":"22445:25:16","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"22468:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22450:17:16"},"nodeType":"YulFunctionCall","src":"22450:20:16"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"22445:1:16"}]},{"body":{"nodeType":"YulBlock","src":"22492:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"22494:16:16"},"nodeType":"YulFunctionCall","src":"22494:18:16"},"nodeType":"YulExpressionStatement","src":"22494:18:16"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22486:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"22489:1:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"22483:2:16"},"nodeType":"YulFunctionCall","src":"22483:8:16"},"nodeType":"YulIf","src":"22480:34:16"},{"nodeType":"YulAssignment","src":"22524:17:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22536:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"22539:1:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22532:3:16"},"nodeType":"YulFunctionCall","src":"22532:9:16"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"22524:4:16"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"22387:1:16","type":""},{"name":"y","nodeType":"YulTypedName","src":"22390:1:16","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"22396:4:16","type":""}],"src":"22356:191:16"},{"body":{"nodeType":"YulBlock","src":"22597:261:16","statements":[{"nodeType":"YulAssignment","src":"22607:25:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22630:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22612:17:16"},"nodeType":"YulFunctionCall","src":"22612:20:16"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"22607:1:16"}]},{"nodeType":"YulAssignment","src":"22641:25:16","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"22664:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22646:17:16"},"nodeType":"YulFunctionCall","src":"22646:20:16"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"22641:1:16"}]},{"body":{"nodeType":"YulBlock","src":"22804:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"22806:16:16"},"nodeType":"YulFunctionCall","src":"22806:18:16"},"nodeType":"YulExpressionStatement","src":"22806:18:16"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22725:1:16"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22732:66:16","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"22800:1:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22728:3:16"},"nodeType":"YulFunctionCall","src":"22728:74:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"22722:2:16"},"nodeType":"YulFunctionCall","src":"22722:81:16"},"nodeType":"YulIf","src":"22719:107:16"},{"nodeType":"YulAssignment","src":"22836:16:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22847:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"22850:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22843:3:16"},"nodeType":"YulFunctionCall","src":"22843:9:16"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"22836:3:16"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"22584:1:16","type":""},{"name":"y","nodeType":"YulTypedName","src":"22587:1:16","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"22593:3:16","type":""}],"src":"22553:305:16"},{"body":{"nodeType":"YulBlock","src":"22970:76:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"22992:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"23000:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22988:3:16"},"nodeType":"YulFunctionCall","src":"22988:14:16"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"23004:34:16","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22981:6:16"},"nodeType":"YulFunctionCall","src":"22981:58:16"},"nodeType":"YulExpressionStatement","src":"22981:58:16"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"22962:6:16","type":""}],"src":"22864:182:16"},{"body":{"nodeType":"YulBlock","src":"23198:220:16","statements":[{"nodeType":"YulAssignment","src":"23208:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23274:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"23279:2:16","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23215:58:16"},"nodeType":"YulFunctionCall","src":"23215:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"23208:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23380:3:16"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"23291:88:16"},"nodeType":"YulFunctionCall","src":"23291:93:16"},"nodeType":"YulExpressionStatement","src":"23291:93:16"},{"nodeType":"YulAssignment","src":"23393:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23404:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"23409:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23400:3:16"},"nodeType":"YulFunctionCall","src":"23400:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"23393:3:16"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"23186:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"23194:3:16","type":""}],"src":"23052:366:16"},{"body":{"nodeType":"YulBlock","src":"23595:248:16","statements":[{"nodeType":"YulAssignment","src":"23605:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23617:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"23628:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23613:3:16"},"nodeType":"YulFunctionCall","src":"23613:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23605:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23652:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"23663:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23648:3:16"},"nodeType":"YulFunctionCall","src":"23648:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23671:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"23677:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23667:3:16"},"nodeType":"YulFunctionCall","src":"23667:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23641:6:16"},"nodeType":"YulFunctionCall","src":"23641:47:16"},"nodeType":"YulExpressionStatement","src":"23641:47:16"},{"nodeType":"YulAssignment","src":"23697:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23831:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23705:124:16"},"nodeType":"YulFunctionCall","src":"23705:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23697:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23575:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23590:4:16","type":""}],"src":"23424:419:16"},{"body":{"nodeType":"YulBlock","src":"23955:69:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23977:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"23985:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23973:3:16"},"nodeType":"YulFunctionCall","src":"23973:14:16"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"23989:27:16","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23966:6:16"},"nodeType":"YulFunctionCall","src":"23966:51:16"},"nodeType":"YulExpressionStatement","src":"23966:51:16"}]},"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"23947:6:16","type":""}],"src":"23849:175:16"},{"body":{"nodeType":"YulBlock","src":"24176:220:16","statements":[{"nodeType":"YulAssignment","src":"24186:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24252:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"24257:2:16","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24193:58:16"},"nodeType":"YulFunctionCall","src":"24193:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"24186:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24358:3:16"}],"functionName":{"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulIdentifier","src":"24269:88:16"},"nodeType":"YulFunctionCall","src":"24269:93:16"},"nodeType":"YulExpressionStatement","src":"24269:93:16"},{"nodeType":"YulAssignment","src":"24371:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24382:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"24387:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24378:3:16"},"nodeType":"YulFunctionCall","src":"24378:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"24371:3:16"}]}]},"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"24164:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"24172:3:16","type":""}],"src":"24030:366:16"},{"body":{"nodeType":"YulBlock","src":"24573:248:16","statements":[{"nodeType":"YulAssignment","src":"24583:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24595:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"24606:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24591:3:16"},"nodeType":"YulFunctionCall","src":"24591:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24583:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24630:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"24641:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24626:3:16"},"nodeType":"YulFunctionCall","src":"24626:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24649:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"24655:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24645:3:16"},"nodeType":"YulFunctionCall","src":"24645:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24619:6:16"},"nodeType":"YulFunctionCall","src":"24619:47:16"},"nodeType":"YulExpressionStatement","src":"24619:47:16"},{"nodeType":"YulAssignment","src":"24675:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24809:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24683:124:16"},"nodeType":"YulFunctionCall","src":"24683:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24675:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24553:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24568:4:16","type":""}],"src":"24402:419:16"},{"body":{"nodeType":"YulBlock","src":"24933:131:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24955:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"24963:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24951:3:16"},"nodeType":"YulFunctionCall","src":"24951:14:16"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"24967:34:16","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24944:6:16"},"nodeType":"YulFunctionCall","src":"24944:58:16"},"nodeType":"YulExpressionStatement","src":"24944:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"25023:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"25031:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25019:3:16"},"nodeType":"YulFunctionCall","src":"25019:15:16"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"25036:20:16","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25012:6:16"},"nodeType":"YulFunctionCall","src":"25012:45:16"},"nodeType":"YulExpressionStatement","src":"25012:45:16"}]},"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"24925:6:16","type":""}],"src":"24827:237:16"},{"body":{"nodeType":"YulBlock","src":"25216:220:16","statements":[{"nodeType":"YulAssignment","src":"25226:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25292:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"25297:2:16","type":"","value":"50"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"25233:58:16"},"nodeType":"YulFunctionCall","src":"25233:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25226:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25398:3:16"}],"functionName":{"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulIdentifier","src":"25309:88:16"},"nodeType":"YulFunctionCall","src":"25309:93:16"},"nodeType":"YulExpressionStatement","src":"25309:93:16"},{"nodeType":"YulAssignment","src":"25411:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25422:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"25427:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25418:3:16"},"nodeType":"YulFunctionCall","src":"25418:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"25411:3:16"}]}]},"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"25204:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"25212:3:16","type":""}],"src":"25070:366:16"},{"body":{"nodeType":"YulBlock","src":"25613:248:16","statements":[{"nodeType":"YulAssignment","src":"25623:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25635:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"25646:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25631:3:16"},"nodeType":"YulFunctionCall","src":"25631:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"25623:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25670:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"25681:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25666:3:16"},"nodeType":"YulFunctionCall","src":"25666:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"25689:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"25695:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25685:3:16"},"nodeType":"YulFunctionCall","src":"25685:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25659:6:16"},"nodeType":"YulFunctionCall","src":"25659:47:16"},"nodeType":"YulExpressionStatement","src":"25659:47:16"},{"nodeType":"YulAssignment","src":"25715:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"25849:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"25723:124:16"},"nodeType":"YulFunctionCall","src":"25723:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"25715:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25593:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"25608:4:16","type":""}],"src":"25442:419:16"},{"body":{"nodeType":"YulBlock","src":"25895:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25912:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25915:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25905:6:16"},"nodeType":"YulFunctionCall","src":"25905:88:16"},"nodeType":"YulExpressionStatement","src":"25905:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26009:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"26012:4:16","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26002:6:16"},"nodeType":"YulFunctionCall","src":"26002:15:16"},"nodeType":"YulExpressionStatement","src":"26002:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26033:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26036:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26026:6:16"},"nodeType":"YulFunctionCall","src":"26026:15:16"},"nodeType":"YulExpressionStatement","src":"26026:15:16"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"25867:180:16"},{"body":{"nodeType":"YulBlock","src":"26111:40:16","statements":[{"nodeType":"YulAssignment","src":"26122:22:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26138:5:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26132:5:16"},"nodeType":"YulFunctionCall","src":"26132:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"26122:6:16"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26094:5:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"26104:6:16","type":""}],"src":"26053:98:16"},{"body":{"nodeType":"YulBlock","src":"26252:73:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26269:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"26274:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26262:6:16"},"nodeType":"YulFunctionCall","src":"26262:19:16"},"nodeType":"YulExpressionStatement","src":"26262:19:16"},{"nodeType":"YulAssignment","src":"26290:29:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26309:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"26314:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26305:3:16"},"nodeType":"YulFunctionCall","src":"26305:14:16"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"26290:11:16"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"26224:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"26229:6:16","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"26240:11:16","type":""}],"src":"26157:168:16"},{"body":{"nodeType":"YulBlock","src":"26421:270:16","statements":[{"nodeType":"YulVariableDeclaration","src":"26431:52:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26477:5:16"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"26445:31:16"},"nodeType":"YulFunctionCall","src":"26445:38:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"26435:6:16","type":""}]},{"nodeType":"YulAssignment","src":"26492:77:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26557:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"26562:6:16"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26499:57:16"},"nodeType":"YulFunctionCall","src":"26499:70:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"26492:3:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26604:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"26611:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26600:3:16"},"nodeType":"YulFunctionCall","src":"26600:16:16"},{"name":"pos","nodeType":"YulIdentifier","src":"26618:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"26623:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"26578:21:16"},"nodeType":"YulFunctionCall","src":"26578:52:16"},"nodeType":"YulExpressionStatement","src":"26578:52:16"},{"nodeType":"YulAssignment","src":"26639:46:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26650:3:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"26677:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"26655:21:16"},"nodeType":"YulFunctionCall","src":"26655:29:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26646:3:16"},"nodeType":"YulFunctionCall","src":"26646:39:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"26639:3:16"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26402:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"26409:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"26417:3:16","type":""}],"src":"26331:360:16"},{"body":{"nodeType":"YulBlock","src":"26897:440:16","statements":[{"nodeType":"YulAssignment","src":"26907:27:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26919:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"26930:3:16","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26915:3:16"},"nodeType":"YulFunctionCall","src":"26915:19:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26907:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"26988:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27001:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"27012:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26997:3:16"},"nodeType":"YulFunctionCall","src":"26997:17:16"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"26944:43:16"},"nodeType":"YulFunctionCall","src":"26944:71:16"},"nodeType":"YulExpressionStatement","src":"26944:71:16"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"27069:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27082:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"27093:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27078:3:16"},"nodeType":"YulFunctionCall","src":"27078:18:16"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27025:43:16"},"nodeType":"YulFunctionCall","src":"27025:72:16"},"nodeType":"YulExpressionStatement","src":"27025:72:16"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"27151:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27164:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"27175:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27160:3:16"},"nodeType":"YulFunctionCall","src":"27160:18:16"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"27107:43:16"},"nodeType":"YulFunctionCall","src":"27107:72:16"},"nodeType":"YulExpressionStatement","src":"27107:72:16"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27200:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"27211:2:16","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27196:3:16"},"nodeType":"YulFunctionCall","src":"27196:18:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27220:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"27226:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27216:3:16"},"nodeType":"YulFunctionCall","src":"27216:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27189:6:16"},"nodeType":"YulFunctionCall","src":"27189:48:16"},"nodeType":"YulExpressionStatement","src":"27189:48:16"},{"nodeType":"YulAssignment","src":"27246:84:16","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"27316:6:16"},{"name":"tail","nodeType":"YulIdentifier","src":"27325:4:16"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27254:61:16"},"nodeType":"YulFunctionCall","src":"27254:76:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27246:4:16"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26845:9:16","type":""},{"name":"value3","nodeType":"YulTypedName","src":"26857:6:16","type":""},{"name":"value2","nodeType":"YulTypedName","src":"26865:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"26873:6:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"26881:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"26892:4:16","type":""}],"src":"26697:640:16"},{"body":{"nodeType":"YulBlock","src":"27405:79:16","statements":[{"nodeType":"YulAssignment","src":"27415:22:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"27430:6:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27424:5:16"},"nodeType":"YulFunctionCall","src":"27424:13:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"27415:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"27472:5:16"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"27446:25:16"},"nodeType":"YulFunctionCall","src":"27446:32:16"},"nodeType":"YulExpressionStatement","src":"27446:32:16"}]},"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"27383:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"27391:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"27399:5:16","type":""}],"src":"27343:141:16"},{"body":{"nodeType":"YulBlock","src":"27566:273:16","statements":[{"body":{"nodeType":"YulBlock","src":"27612:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"27614:77:16"},"nodeType":"YulFunctionCall","src":"27614:79:16"},"nodeType":"YulExpressionStatement","src":"27614:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"27587:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"27596:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27583:3:16"},"nodeType":"YulFunctionCall","src":"27583:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"27608:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"27579:3:16"},"nodeType":"YulFunctionCall","src":"27579:32:16"},"nodeType":"YulIf","src":"27576:119:16"},{"nodeType":"YulBlock","src":"27705:127:16","statements":[{"nodeType":"YulVariableDeclaration","src":"27720:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"27734:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"27724:6:16","type":""}]},{"nodeType":"YulAssignment","src":"27749:73:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27794:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"27805:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27790:3:16"},"nodeType":"YulFunctionCall","src":"27790:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"27814:7:16"}],"functionName":{"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulIdentifier","src":"27759:30:16"},"nodeType":"YulFunctionCall","src":"27759:63:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"27749:6:16"}]}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27536:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"27547:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"27559:6:16","type":""}],"src":"27490:349:16"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approval to current owne\")\n\n mstore(add(memPtr, 32), \"r\")\n\n }\n\n function abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve caller is not to\")\n\n mstore(add(memPtr, 32), \"ken owner nor approved for all\")\n\n }\n\n function abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 62)\n store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: caller is not token owne\")\n\n mstore(add(memPtr, 32), \"r nor approved\")\n\n }\n\n function abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: invalid token ID\")\n\n }\n\n function abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: address zero is not a va\")\n\n mstore(add(memPtr, 32), \"lid owner\")\n\n }\n\n function abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: mint to the zero address\")\n\n }\n\n function abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: token already minted\")\n\n }\n\n function abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer from incorrect \")\n\n mstore(add(memPtr, 32), \"owner\")\n\n }\n\n function abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve to caller\")\n\n }\n\n function abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to non ERC721Re\")\n\n mstore(add(memPtr, 32), \"ceiver implementer\")\n\n }\n\n function abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 50)\n store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_decode_t_bytes4_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":16,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a22cb46511610071578063a22cb46514610292578063b88d4fde146102ae578063c87b56dd146102ca578063e985e9c5146102fa578063f2fde38b1461032a5761010b565b806370a082311461021c578063715018a61461024c5780638da5cb5b1461025657806395d89b41146102745761010b565b80631249c58b116100de5780631249c58b146101aa57806323b872dd146101b457806342842e0e146101d05780636352211e146101ec5761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611a95565b610346565b6040516101379190611add565b60405180910390f35b610148610428565b6040516101559190611b91565b60405180910390f35b61017860048036038101906101739190611be9565b6104ba565b6040516101859190611c57565b60405180910390f35b6101a860048036038101906101a39190611c9e565b610500565b005b6101b2610617565b005b6101ce60048036038101906101c99190611cde565b610629565b005b6101ea60048036038101906101e59190611cde565b610689565b005b61020660048036038101906102019190611be9565b6106a9565b6040516102139190611c57565b60405180910390f35b61023660048036038101906102319190611d31565b61076c565b6040516102439190611d6d565b60405180910390f35b610254610886565b005b61025e61089a565b60405161026b9190611c57565b60405180910390f35b61027c6108c3565b6040516102899190611b91565b60405180910390f35b6102ac60048036038101906102a79190611db4565b610955565b005b6102c860048036038101906102c39190611f29565b61096b565b005b6102e460048036038101906102df9190611be9565b6109cd565b6040516102f19190611b91565b60405180910390f35b610314600480360381019061030f9190611fac565b610a35565b6040516103219190611add565b60405180910390f35b610344600480360381019061033f9190611d31565b610ac9565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061041157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610421575061042082610b4c565b5b9050919050565b6060600180546104379061201b565b80601f01602080910402602001604051908101604052809291908181526020018280546104639061201b565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b60006104c582610bb6565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061050b826106a9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361057b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610572906120be565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661059a610c01565b73ffffffffffffffffffffffffffffffffffffffff1614806105c957506105c8816105c3610c01565b610a35565b5b610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90612150565b60405180910390fd5b6106128383610c09565b505050565b610627610622610c01565b610cc2565b565b61063a610634610c01565b82610e21565b610679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610670906121e2565b60405180910390fd5b610684838383610eb6565b505050565b6106a48383836040518060200160405280600081525061096b565b505050565b60006106b482611184565b6106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea9061224e565b60405180910390fd5b60006003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610763578290505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d3906122e0565b60405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148015610830575061082f8261121b565b5b1561083e5760019050610881565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b61088e6112ef565b610898600061136d565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546108d29061201b565b80601f01602080910402602001604051908101604052809291908181526020018280546108fe9061201b565b801561094b5780601f106109205761010080835404028352916020019161094b565b820191906000526020600020905b81548152906001019060200180831161092e57829003601f168201915b5050505050905090565b610967610960610c01565b8383611431565b5050565b61097c610976610c01565b83610e21565b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b2906121e2565b60405180910390fd5b6109c78484848461159d565b50505050565b60606109d882610bb6565b60006109e26115f9565b90506000815111610a025760405180602001604052806000815250610a2d565b80610a0c84611610565b604051602001610a1d92919061233c565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610ad16112ef565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b37906123d2565b60405180910390fd5b610b498161136d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610bbf816116de565b610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf59061224e565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610c7c836106a9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008173ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d439061243e565b60405180910390fd5b610d5581611184565b15610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c906124aa565b60405180910390fd5b60016007600083815260200190815260200160002060006101000a81548160ff021916908315150217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080610e2d836106a9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e6f5750610e6e8185610a35565b5b80610ead57508373ffffffffffffffffffffffffffffffffffffffff16610e95846104ba565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ed6826106a9565b73ffffffffffffffffffffffffffffffffffffffff1614610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f239061253c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f92906125ce565b60405180910390fd5b610fa683838361174a565b610fb1600082610c09565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611068919061261d565b925050819055505b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110c09190612651565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461117f83838361174f565b505050565b60006007600083815260200190815260200160002060009054906101000a900460ff168015611214575061dead73ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff16905060006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061127882611184565b80156112e657508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806112e55750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b5b92505050919050565b6112f7610c01565b73ffffffffffffffffffffffffffffffffffffffff1661131561089a565b73ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611362906126f3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361149f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114969061275f565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115909190611add565b60405180910390a3505050565b6115a8848484610eb6565b6115b484848484611754565b6115f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ea906127f1565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000600161161f846118d6565b01905060008167ffffffffffffffff81111561163e5761163d611dfe565b5b6040519080825280601f01601f1916602001820160405280156116705781602001600182028036833780820191505090505b509050600082602001820190505b6001156116d3578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816116c7576116c6612811565b5b0494506000850361167e575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b11156118c9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611799610c01565b8786866040518563ffffffff1660e01b81526004016117bb9493929190612895565b6020604051808303816000875af19250505080156117f757506040513d601f19601f820116820180604052508101906117f491906128f6565b60015b611879573d8060008114611827576040519150601f19603f3d011682016040523d82523d6000602084013e61182c565b606091505b506000815103611871576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611868906127f1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506118ce565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611934577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161192a57611929612811565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611971576d04ee2d6d415b85acef8100000000838161196757611966612811565b5b0492506020810190505b662386f26fc1000083106119a057662386f26fc10000838161199657611995612811565b5b0492506010810190505b6305f5e10083106119c9576305f5e10083816119bf576119be612811565b5b0492506008810190505b61271083106119ee5761271083816119e4576119e3612811565b5b0492506004810190505b60648310611a115760648381611a0757611a06612811565b5b0492506002810190505b600a8310611a20576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a7281611a3d565b8114611a7d57600080fd5b50565b600081359050611a8f81611a69565b92915050565b600060208284031215611aab57611aaa611a33565b5b6000611ab984828501611a80565b91505092915050565b60008115159050919050565b611ad781611ac2565b82525050565b6000602082019050611af26000830184611ace565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b32578082015181840152602081019050611b17565b83811115611b41576000848401525b50505050565b6000601f19601f8301169050919050565b6000611b6382611af8565b611b6d8185611b03565b9350611b7d818560208601611b14565b611b8681611b47565b840191505092915050565b60006020820190508181036000830152611bab8184611b58565b905092915050565b6000819050919050565b611bc681611bb3565b8114611bd157600080fd5b50565b600081359050611be381611bbd565b92915050565b600060208284031215611bff57611bfe611a33565b5b6000611c0d84828501611bd4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c4182611c16565b9050919050565b611c5181611c36565b82525050565b6000602082019050611c6c6000830184611c48565b92915050565b611c7b81611c36565b8114611c8657600080fd5b50565b600081359050611c9881611c72565b92915050565b60008060408385031215611cb557611cb4611a33565b5b6000611cc385828601611c89565b9250506020611cd485828601611bd4565b9150509250929050565b600080600060608486031215611cf757611cf6611a33565b5b6000611d0586828701611c89565b9350506020611d1686828701611c89565b9250506040611d2786828701611bd4565b9150509250925092565b600060208284031215611d4757611d46611a33565b5b6000611d5584828501611c89565b91505092915050565b611d6781611bb3565b82525050565b6000602082019050611d826000830184611d5e565b92915050565b611d9181611ac2565b8114611d9c57600080fd5b50565b600081359050611dae81611d88565b92915050565b60008060408385031215611dcb57611dca611a33565b5b6000611dd985828601611c89565b9250506020611dea85828601611d9f565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e3682611b47565b810181811067ffffffffffffffff82111715611e5557611e54611dfe565b5b80604052505050565b6000611e68611a29565b9050611e748282611e2d565b919050565b600067ffffffffffffffff821115611e9457611e93611dfe565b5b611e9d82611b47565b9050602081019050919050565b82818337600083830152505050565b6000611ecc611ec784611e79565b611e5e565b905082815260208101848484011115611ee857611ee7611df9565b5b611ef3848285611eaa565b509392505050565b600082601f830112611f1057611f0f611df4565b5b8135611f20848260208601611eb9565b91505092915050565b60008060008060808587031215611f4357611f42611a33565b5b6000611f5187828801611c89565b9450506020611f6287828801611c89565b9350506040611f7387828801611bd4565b925050606085013567ffffffffffffffff811115611f9457611f93611a38565b5b611fa087828801611efb565b91505092959194509250565b60008060408385031215611fc357611fc2611a33565b5b6000611fd185828601611c89565b9250506020611fe285828601611c89565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061203357607f821691505b60208210810361204657612045611fec565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006120a8602183611b03565b91506120b38261204c565b604082019050919050565b600060208201905081810360008301526120d78161209b565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b600061213a603e83611b03565b9150612145826120de565b604082019050919050565b600060208201905081810360008301526121698161212d565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b60006121cc602e83611b03565b91506121d782612170565b604082019050919050565b600060208201905081810360008301526121fb816121bf565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612238601883611b03565b915061224382612202565b602082019050919050565b600060208201905081810360008301526122678161222b565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006122ca602983611b03565b91506122d58261226e565b604082019050919050565b600060208201905081810360008301526122f9816122bd565b9050919050565b600081905092915050565b600061231682611af8565b6123208185612300565b9350612330818560208601611b14565b80840191505092915050565b6000612348828561230b565b9150612354828461230b565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006123bc602683611b03565b91506123c782612360565b604082019050919050565b600060208201905081810360008301526123eb816123af565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612428602083611b03565b9150612433826123f2565b602082019050919050565b600060208201905081810360008301526124578161241b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000612494601c83611b03565b915061249f8261245e565b602082019050919050565b600060208201905081810360008301526124c381612487565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612526602583611b03565b9150612531826124ca565b604082019050919050565b6000602082019050818103600083015261255581612519565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125b8602483611b03565b91506125c38261255c565b604082019050919050565b600060208201905081810360008301526125e7816125ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061262882611bb3565b915061263383611bb3565b925082821015612646576126456125ee565b5b828203905092915050565b600061265c82611bb3565b915061266783611bb3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561269c5761269b6125ee565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126dd602083611b03565b91506126e8826126a7565b602082019050919050565b6000602082019050818103600083015261270c816126d0565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612749601983611b03565b915061275482612713565b602082019050919050565b600060208201905081810360008301526127788161273c565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006127db603283611b03565b91506127e68261277f565b604082019050919050565b6000602082019050818103600083015261280a816127ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061286782612840565b612871818561284b565b9350612881818560208601611b14565b61288a81611b47565b840191505092915050565b60006080820190506128aa6000830187611c48565b6128b76020830186611c48565b6128c46040830185611d5e565b81810360608301526128d6818461285c565b905095945050505050565b6000815190506128f081611a69565b92915050565b60006020828403121561290c5761290b611a33565b5b600061291a848285016128e1565b9150509291505056fea264697066735822122085c7d608a0fb21c4e9f5bd82509de0ddc1df85607191f40e67d6d8caf3978ded64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x32A JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x274 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1249C58B GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x1EC JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x140 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x18E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x1A95 JUMP JUMPDEST PUSH2 0x346 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x137 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x148 PUSH2 0x428 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x155 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x173 SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x185 SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1A3 SWAP2 SWAP1 PUSH2 0x1C9E JUMP JUMPDEST PUSH2 0x500 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B2 PUSH2 0x617 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C9 SWAP2 SWAP1 PUSH2 0x1CDE JUMP JUMPDEST PUSH2 0x629 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x1CDE JUMP JUMPDEST PUSH2 0x689 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x201 SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x6A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x213 SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x231 SWAP2 SWAP1 PUSH2 0x1D31 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x243 SWAP2 SWAP1 PUSH2 0x1D6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x254 PUSH2 0x886 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25E PUSH2 0x89A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27C PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x289 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x1DB4 JUMP JUMPDEST PUSH2 0x955 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C3 SWAP2 SWAP1 PUSH2 0x1F29 JUMP JUMPDEST PUSH2 0x96B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x9CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F1 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x314 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30F SWAP2 SWAP1 PUSH2 0x1FAC JUMP JUMPDEST PUSH2 0xA35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x321 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x344 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x1D31 JUMP JUMPDEST PUSH2 0xAC9 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x411 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x421 JUMPI POP PUSH2 0x420 DUP3 PUSH2 0xB4C JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x437 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x463 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4B0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x485 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x493 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5 DUP3 PUSH2 0xBB6 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50B DUP3 PUSH2 0x6A9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x57B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x572 SWAP1 PUSH2 0x20BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x59A PUSH2 0xC01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x5C9 JUMPI POP PUSH2 0x5C8 DUP2 PUSH2 0x5C3 PUSH2 0xC01 JUMP JUMPDEST PUSH2 0xA35 JUMP JUMPDEST JUMPDEST PUSH2 0x608 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5FF SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x612 DUP4 DUP4 PUSH2 0xC09 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x627 PUSH2 0x622 PUSH2 0xC01 JUMP JUMPDEST PUSH2 0xCC2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x63A PUSH2 0x634 PUSH2 0xC01 JUMP JUMPDEST DUP3 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x679 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x670 SWAP1 PUSH2 0x21E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x684 DUP4 DUP4 DUP4 PUSH2 0xEB6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6A4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x96B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B4 DUP3 PUSH2 0x1184 JUMP JUMPDEST PUSH2 0x6F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6EA SWAP1 PUSH2 0x224E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x763 JUMPI DUP3 SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D3 SWAP1 PUSH2 0x22E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ DUP1 ISZERO PUSH2 0x830 JUMPI POP PUSH2 0x82F DUP3 PUSH2 0x121B JUMP JUMPDEST JUMPDEST ISZERO PUSH2 0x83E JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x881 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x88E PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x898 PUSH1 0x0 PUSH2 0x136D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x8D2 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x8FE SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x94B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x920 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x94B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x92E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x967 PUSH2 0x960 PUSH2 0xC01 JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1431 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x97C PUSH2 0x976 PUSH2 0xC01 JUMP JUMPDEST DUP4 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x9BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B2 SWAP1 PUSH2 0x21E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9C7 DUP5 DUP5 DUP5 DUP5 PUSH2 0x159D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9D8 DUP3 PUSH2 0xBB6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E2 PUSH2 0x15F9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xA02 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xA2D JUMP JUMPDEST DUP1 PUSH2 0xA0C DUP5 PUSH2 0x1610 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA1D SWAP3 SWAP2 SWAP1 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAD1 PUSH2 0x12EF JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB37 SWAP1 PUSH2 0x23D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB49 DUP2 PUSH2 0x136D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBBF DUP2 PUSH2 0x16DE JUMP JUMPDEST PUSH2 0xBFE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF5 SWAP1 PUSH2 0x224E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC7C DUP4 PUSH2 0x6A9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD43 SWAP1 PUSH2 0x243E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD55 DUP2 PUSH2 0x1184 JUMP JUMPDEST ISZERO PUSH2 0xD95 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD8C SWAP1 PUSH2 0x24AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x7 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE2D DUP4 PUSH2 0x6A9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xE6F JUMPI POP PUSH2 0xE6E DUP2 DUP6 PUSH2 0xA35 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xEAD JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE95 DUP5 PUSH2 0x4BA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xED6 DUP3 PUSH2 0x6A9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xF2C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF23 SWAP1 PUSH2 0x253C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xF9B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP1 PUSH2 0x25CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFA6 DUP4 DUP4 DUP4 PUSH2 0x174A JUMP JUMPDEST PUSH2 0xFB1 PUSH1 0x0 DUP3 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1070 JUMPI PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1068 SWAP2 SWAP1 PUSH2 0x261D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x10C0 SWAP2 SWAP1 PUSH2 0x2651 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x117F DUP4 DUP4 DUP4 PUSH2 0x174F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1214 JUMPI POP PUSH2 0xDEAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x1278 DUP3 PUSH2 0x1184 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x12E6 JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x12E5 JUMPI POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST JUMPDEST SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x12F7 PUSH2 0xC01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1315 PUSH2 0x89A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x136B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1362 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x149F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1496 SWAP1 PUSH2 0x275F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1590 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x15A8 DUP5 DUP5 DUP5 PUSH2 0xEB6 JUMP JUMPDEST PUSH2 0x15B4 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1754 JUMP JUMPDEST PUSH2 0x15F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15EA SWAP1 PUSH2 0x27F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0x161F DUP5 PUSH2 0x18D6 JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x163E JUMPI PUSH2 0x163D PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1670 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x16D3 JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x16C7 JUMPI PUSH2 0x16C6 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x167E JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x18C9 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x1799 PUSH2 0xC01 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17BB SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2895 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x17F7 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17F4 SWAP2 SWAP1 PUSH2 0x28F6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1879 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1827 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 0x182C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x1871 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1868 SWAP1 PUSH2 0x27F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1934 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x192A JUMPI PUSH2 0x1929 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1971 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1967 JUMPI PUSH2 0x1966 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x19A0 JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1996 JUMPI PUSH2 0x1995 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x19C9 JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x19BF JUMPI PUSH2 0x19BE PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x19EE JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x19E4 JUMPI PUSH2 0x19E3 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1A11 JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x1A07 JUMPI PUSH2 0x1A06 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x1A20 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1A72 DUP2 PUSH2 0x1A3D JUMP JUMPDEST DUP2 EQ PUSH2 0x1A7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1A8F DUP2 PUSH2 0x1A69 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AAB JUMPI PUSH2 0x1AAA PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1AB9 DUP5 DUP3 DUP6 ADD PUSH2 0x1A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1AD7 DUP2 PUSH2 0x1AC2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1AF2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1ACE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B32 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1B17 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1B41 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP3 PUSH2 0x1AF8 JUMP JUMPDEST PUSH2 0x1B6D DUP2 DUP6 PUSH2 0x1B03 JUMP JUMPDEST SWAP4 POP PUSH2 0x1B7D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x1B86 DUP2 PUSH2 0x1B47 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BAB DUP2 DUP5 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BC6 DUP2 PUSH2 0x1BB3 JUMP JUMPDEST DUP2 EQ PUSH2 0x1BD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1BE3 DUP2 PUSH2 0x1BBD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BFF JUMPI PUSH2 0x1BFE PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1C0D DUP5 DUP3 DUP6 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C41 DUP3 PUSH2 0x1C16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1C51 DUP2 PUSH2 0x1C36 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1C6C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1C48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1C7B DUP2 PUSH2 0x1C36 JUMP JUMPDEST DUP2 EQ PUSH2 0x1C86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1C98 DUP2 PUSH2 0x1C72 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CB5 JUMPI PUSH2 0x1CB4 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1CC3 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1CD4 DUP6 DUP3 DUP7 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1CF7 JUMPI PUSH2 0x1CF6 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1D05 DUP7 DUP3 DUP8 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1D16 DUP7 DUP3 DUP8 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1D27 DUP7 DUP3 DUP8 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D47 JUMPI PUSH2 0x1D46 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1D55 DUP5 DUP3 DUP6 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D67 DUP2 PUSH2 0x1BB3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1D82 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1D5E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D91 DUP2 PUSH2 0x1AC2 JUMP JUMPDEST DUP2 EQ PUSH2 0x1D9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1DAE DUP2 PUSH2 0x1D88 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DCB JUMPI PUSH2 0x1DCA PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1DD9 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1DEA DUP6 DUP3 DUP7 ADD PUSH2 0x1D9F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E36 DUP3 PUSH2 0x1B47 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1E55 JUMPI PUSH2 0x1E54 PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E68 PUSH2 0x1A29 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E74 DUP3 DUP3 PUSH2 0x1E2D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1E94 JUMPI PUSH2 0x1E93 PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST PUSH2 0x1E9D DUP3 PUSH2 0x1B47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ECC PUSH2 0x1EC7 DUP5 PUSH2 0x1E79 JUMP JUMPDEST PUSH2 0x1E5E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x1EE8 JUMPI PUSH2 0x1EE7 PUSH2 0x1DF9 JUMP JUMPDEST JUMPDEST PUSH2 0x1EF3 DUP5 DUP3 DUP6 PUSH2 0x1EAA JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1F10 JUMPI PUSH2 0x1F0F PUSH2 0x1DF4 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F20 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1EB9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1F43 JUMPI PUSH2 0x1F42 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1F51 DUP8 DUP3 DUP9 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x1F62 DUP8 DUP3 DUP9 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x1F73 DUP8 DUP3 DUP9 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F94 JUMPI PUSH2 0x1F93 PUSH2 0x1A38 JUMP JUMPDEST JUMPDEST PUSH2 0x1FA0 DUP8 DUP3 DUP9 ADD PUSH2 0x1EFB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1FC3 JUMPI PUSH2 0x1FC2 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1FD1 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1FE2 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2033 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2046 JUMPI PUSH2 0x2045 PUSH2 0x1FEC JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20A8 PUSH1 0x21 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x20B3 DUP3 PUSH2 0x204C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x20D7 DUP2 PUSH2 0x209B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x213A PUSH1 0x3E DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2145 DUP3 PUSH2 0x20DE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2169 DUP2 PUSH2 0x212D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21CC PUSH1 0x2E DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x21D7 DUP3 PUSH2 0x2170 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x21FB DUP2 PUSH2 0x21BF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2238 PUSH1 0x18 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2243 DUP3 PUSH2 0x2202 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2267 DUP2 PUSH2 0x222B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22CA PUSH1 0x29 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x22D5 DUP3 PUSH2 0x226E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x22F9 DUP2 PUSH2 0x22BD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2316 DUP3 PUSH2 0x1AF8 JUMP JUMPDEST PUSH2 0x2320 DUP2 DUP6 PUSH2 0x2300 JUMP JUMPDEST SWAP4 POP PUSH2 0x2330 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2348 DUP3 DUP6 PUSH2 0x230B JUMP JUMPDEST SWAP2 POP PUSH2 0x2354 DUP3 DUP5 PUSH2 0x230B JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23BC PUSH1 0x26 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x23C7 DUP3 PUSH2 0x2360 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x23EB DUP2 PUSH2 0x23AF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2428 PUSH1 0x20 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2433 DUP3 PUSH2 0x23F2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2457 DUP2 PUSH2 0x241B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2494 PUSH1 0x1C DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x249F DUP3 PUSH2 0x245E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x24C3 DUP2 PUSH2 0x2487 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2526 PUSH1 0x25 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2531 DUP3 PUSH2 0x24CA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2555 DUP2 PUSH2 0x2519 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25B8 PUSH1 0x24 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x25C3 DUP3 PUSH2 0x255C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x25E7 DUP2 PUSH2 0x25AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2628 DUP3 PUSH2 0x1BB3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2633 DUP4 PUSH2 0x1BB3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x2646 JUMPI PUSH2 0x2645 PUSH2 0x25EE JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265C DUP3 PUSH2 0x1BB3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2667 DUP4 PUSH2 0x1BB3 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x269C JUMPI PUSH2 0x269B PUSH2 0x25EE JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26DD PUSH1 0x20 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x26E8 DUP3 PUSH2 0x26A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x270C DUP2 PUSH2 0x26D0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2749 PUSH1 0x19 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2754 DUP3 PUSH2 0x2713 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2778 DUP2 PUSH2 0x273C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27DB PUSH1 0x32 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x27E6 DUP3 PUSH2 0x277F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x280A DUP2 PUSH2 0x27CE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2867 DUP3 PUSH2 0x2840 JUMP JUMPDEST PUSH2 0x2871 DUP2 DUP6 PUSH2 0x284B JUMP JUMPDEST SWAP4 POP PUSH2 0x2881 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x288A DUP2 PUSH2 0x1B47 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x28AA PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1C48 JUMP JUMPDEST PUSH2 0x28B7 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH2 0x28C4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1D5E JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x28D6 DUP2 DUP5 PUSH2 0x285C JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x28F0 DUP2 PUSH2 0x1A69 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x290C JUMPI PUSH2 0x290B PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x291A DUP5 DUP3 DUP6 ADD PUSH2 0x28E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 0xC7 0xD6 ADDMOD LOG0 0xFB 0x21 0xC4 0xE9 CREATE2 0xBD DUP3 POP SWAP14 0xE0 0xDD 0xC1 0xDF DUP6 PUSH1 0x71 SWAP2 DELEGATECALL 0xE PUSH8 0xD6D8CAF3978DED64 PUSH20 0x6F6C634300080D00330000000000000000000000 ","sourceMap":"344:2581:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:300:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3317:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4775:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4314:400;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1311:53:12;;;:::i;:::-;;5452:327:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5845:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;901:406:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;582:264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1824:101:0;;;:::i;:::-;;1201:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3479:102:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5009:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6090:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3647:276;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2074:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2417:300:14;2519:4;2569:25;2554:40;;;:11;:40;;;;:104;;;;2625:33;2610:48;;;:11;:48;;;;2554:104;:156;;;;2674:36;2698:11;2674:23;:36::i;:::-;2554:156;2535:175;;2417:300;;;:::o;3317:98::-;3371:13;3403:5;3396:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3317:98;:::o;4775:167::-;4851:7;4870:23;4885:7;4870:14;:23::i;:::-;4911:15;:24;4927:7;4911:24;;;;;;;;;;;;;;;;;;;;;4904:31;;4775:167;;;:::o;4314:400::-;4394:13;4410:16;4418:7;4410;:16::i;:::-;4394:32;;4450:5;4444:11;;:2;:11;;;4436:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4541:5;4525:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;4550:37;4567:5;4574:12;:10;:12::i;:::-;4550:16;:37::i;:::-;4525:62;4504:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;4686:21;4695:2;4699:7;4686:8;:21::i;:::-;4384:330;4314:400;;:::o;1311:53:12:-;1340:19;1346:12;:10;:12::i;:::-;1340:5;:19::i;:::-;1311:53::o;5452:327:14:-;5641:41;5660:12;:10;:12::i;:::-;5674:7;5641:18;:41::i;:::-;5633:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;5744:28;5754:4;5760:2;5764:7;5744:9;:28::i;:::-;5452:327;;;:::o;5845:179::-;5978:39;5995:4;6001:2;6005:7;5978:39;;;;;;;;;;;;:16;:39::i;:::-;5845:179;;;:::o;901:406:12:-;965:7;988:23;1003:7;988:14;:23::i;:::-;980:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;1174:13;1190:7;:16;1198:7;1190:16;;;;;;;;;;;;;;;;;;;;;1174:32;;1233:1;1216:19;;:5;:19;;;1212:73;;1269:7;1245:33;;1212:73;1297:5;1290:12;;;901:406;;;:::o;582:264::-;646:7;686:1;669:19;;:5;:19;;;661:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;764:1;744:9;:16;754:5;744:16;;;;;;;;;;;;;;;;:21;:44;;;;;769:19;782:5;769:12;:19::i;:::-;744:44;740:73;;;805:1;798:8;;;;740:73;825:9;:16;835:5;825:16;;;;;;;;;;;;;;;;818:23;;582:264;;;;:::o;1824:101:0:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1201:85::-;1247:7;1273:6;;;;;;;;;;;1266:13;;1201:85;:::o;3479:102:14:-;3535:13;3567:7;3560:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3479:102;:::o;5009:153::-;5103:52;5122:12;:10;:12::i;:::-;5136:8;5146;5103:18;:52::i;:::-;5009:153;;:::o;6090:315::-;6258:41;6277:12;:10;:12::i;:::-;6291:7;6258:18;:41::i;:::-;6250:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;6360:38;6374:4;6380:2;6384:7;6393:4;6360:13;:38::i;:::-;6090:315;;;;:::o;3647:276::-;3720:13;3745:23;3760:7;3745:14;:23::i;:::-;3779:21;3803:10;:8;:10::i;:::-;3779:34;;3854:1;3836:7;3830:21;:25;:86;;;;;;;;;;;;;;;;;3882:7;3891:18;:7;:16;:18::i;:::-;3865:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3830:86;3823:93;;;3647:276;;;:::o;5228:162::-;5325:4;5348:18;:25;5367:5;5348:25;;;;;;;;;;;;;;;:35;5374:8;5348:35;;;;;;;;;;;;;;;;;;;;;;;;;5341:42;;5228:162;;;;:::o;2074:198:0:-;1094:13;:11;:13::i;:::-;2182:1:::1;2162:22;;:8;:22;;::::0;2154:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;829:155:8:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;12550:133:14:-;12631:16;12639:7;12631;:16::i;:::-;12623:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12550:133;:::o;640:96:6:-;693:7;719:10;712:17;;640:96;:::o;11859:164:14:-;11960:2;11933:15;:24;11949:7;11933:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12008:7;12004:2;11977:39;;11986:16;11994:7;11986;:16::i;:::-;11977:39;;;;;;;;;;;;11859:164;;:::o;1368:418:12:-;1450:15;1484:8;1468:26;;1450:44;;1529:1;1509:22;;:8;:22;;;1501:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1583:23;1598:7;1583:14;:23::i;:::-;1582:24;1574:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;1699:4;1674:13;:22;1688:7;1674:22;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1773:7;1763:8;1742:39;;1759:1;1742:39;;;;;;;;;;;;1410:376;1368:418;:::o;8157:254:14:-;8250:4;8266:13;8282:16;8290:7;8282;:16::i;:::-;8266:32;;8327:5;8316:16;;:7;:16;;;:52;;;;8336:32;8353:5;8360:7;8336:16;:32::i;:::-;8316:52;:87;;;;8396:7;8372:31;;:20;8384:7;8372:11;:20::i;:::-;:31;;;8316:87;8308:96;;;8157:254;;;;:::o;1790:656:12:-;1920:4;1900:24;;:16;1908:7;1900;:16::i;:::-;:24;;;1892:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1994:1;1980:16;;:2;:16;;;1972:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2044:39;2065:4;2071:2;2075:7;2044:20;:39::i;:::-;2137:29;2154:1;2158:7;2137:8;:29::i;:::-;2268:1;2240:30;;:7;:16;2248:7;2240:16;;;;;;;;;;;;;;;;;;;;;:30;;;2236:71;;2299:1;2280:9;:15;2290:4;2280:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;2236:71;2329:1;2312:9;:13;2322:2;2312:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;2355:2;2336:7;:16;2344:7;2336:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2388:7;2384:2;2369:27;;2378:4;2369:27;;;;;;;;;;;;2403:38;2423:4;2429:2;2433:7;2403:19;:38::i;:::-;1790:656;;;:::o;2727:196::-;2791:4;2858:13;:22;2872:7;2858:22;;;;;;;;;;;;;;;;;;;;;:59;;;;;1554:42:14;2884:33:12;;:7;:16;2892:7;2884:16;;;;;;;;;;;;;;;;;;;;;:33;;;;2858:59;2850:68;;2727:196;;;:::o;2450:273::-;2510:4;2522:20;2561:5;2545:23;;2522:46;;2574:20;2597:7;:21;2605:12;2597:21;;;;;;;;;;;;;;;;;;;;;2574:44;;2632:28;2647:12;2632:14;:28::i;:::-;:85;;;;;2681:5;2665:21;;:12;:21;;;:51;;;;2714:1;2690:26;;:12;:26;;;2665:51;2632:85;2624:94;;;;2450:273;;;:::o;1359:130:0:-;1433:12;:10;:12::i;:::-;1422:23;;:7;:5;:7::i;:::-;:23;;;1414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1359:130::o;2426:187::-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;12159:307:14:-;12309:8;12300:17;;:5;:17;;;12292:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12395:8;12357:18;:25;12376:5;12357:25;;;;;;;;;;;;;;;:35;12383:8;12357:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12440:8;12418:41;;12433:5;12418:41;;;12450:8;12418:41;;;;;;:::i;:::-;;;;;;;;12159:307;;;:::o;7266:305::-;7416:28;7426:4;7432:2;7436:7;7416:9;:28::i;:::-;7462:47;7485:4;7491:2;7495:7;7504:4;7462:22;:47::i;:::-;7454:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7266:305;;;;:::o;4165:92::-;4216:13;4241:9;;;;;;;;;;;;;;4165:92;:::o;447:696:7:-;503:13;552:14;589:1;569:17;580:5;569:10;:17::i;:::-;:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;604:41;;659:11;785:6;781:2;777:15;769:6;765:28;758:35;;820:280;827:4;820:280;;;851:5;;;;;;;;990:8;985:2;978:5;974:14;969:30;964:3;956:44;1044:2;1035:11;;;;;;:::i;:::-;;;;;1077:1;1068:5;:10;820:280;1064:21;820:280;1120:6;1113:13;;;;;447:696;;;:::o;7874:125:14:-;7939:4;7990:1;7962:30;;:7;:16;7970:7;7962:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7955:37;;7874:125;;;:::o;14625:122::-;;;;:::o;15119:121::-;;;;:::o;13235:834::-;13384:4;13421:1;13404:2;:14;;;:18;13400:663;;;13458:2;13442:36;;;13479:12;:10;:12::i;:::-;13493:4;13499:7;13508:4;13442:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13438:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13697:1;13680:6;:13;:18;13676:321;;13722:60;;;;;;;;;;:::i;:::-;;;;;;;;13676:321;13949:6;13943:13;13934:6;13930:2;13926:15;13919:38;13438:573;13573:41;;;13563:51;;;:6;:51;;;;13556:58;;;;;13400:663;14048:4;14041:11;;13235:834;;;;;;;:::o;10139:916:10:-;10192:7;10211:14;10228:1;10211:18;;10276:8;10267:5;:17;10263:103;;10313:8;10304:17;;;;;;:::i;:::-;;;;;10349:2;10339:12;;;;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;;;;:::i;:::-;;;;;10465:2;10455:12;;;;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;;;;:::i;:::-;;;;;10581:2;10571:12;;;;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;;;;:::i;:::-;;;;;10695:1;10685:11;;;;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;;;;:::i;:::-;;;;;10808:1;10798:11;;;;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;;;;:::i;:::-;;;;;10921:1;10911:11;;;;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;;;;10950:66;11042:6;11035:13;;;10139:916;;;:::o;7:75:16:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:619::-;5015:6;5023;5031;5080:2;5068:9;5059:7;5055:23;5051:32;5048:119;;;5086:79;;:::i;:::-;5048:119;5206:1;5231:53;5276:7;5267:6;5256:9;5252:22;5231:53;:::i;:::-;5221:63;;5177:117;5333:2;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5304:118;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;4938:619;;;;;:::o;5563:329::-;5622:6;5671:2;5659:9;5650:7;5646:23;5642:32;5639:119;;;5677:79;;:::i;:::-;5639:119;5797:1;5822:53;5867:7;5858:6;5847:9;5843:22;5822:53;:::i;:::-;5812:63;;5768:117;5563:329;;;;:::o;5898:118::-;5985:24;6003:5;5985:24;:::i;:::-;5980:3;5973:37;5898:118;;:::o;6022:222::-;6115:4;6153:2;6142:9;6138:18;6130:26;;6166:71;6234:1;6223:9;6219:17;6210:6;6166:71;:::i;:::-;6022:222;;;;:::o;6250:116::-;6320:21;6335:5;6320:21;:::i;:::-;6313:5;6310:32;6300:60;;6356:1;6353;6346:12;6300:60;6250:116;:::o;6372:133::-;6415:5;6453:6;6440:20;6431:29;;6469:30;6493:5;6469:30;:::i;:::-;6372:133;;;;:::o;6511:468::-;6576:6;6584;6633:2;6621:9;6612:7;6608:23;6604:32;6601:119;;;6639:79;;:::i;:::-;6601:119;6759:1;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6730:117;6886:2;6912:50;6954:7;6945:6;6934:9;6930:22;6912:50;:::i;:::-;6902:60;;6857:115;6511:468;;;;;:::o;6985:117::-;7094:1;7091;7084:12;7108:117;7217:1;7214;7207:12;7231:180;7279:77;7276:1;7269:88;7376:4;7373:1;7366:15;7400:4;7397:1;7390:15;7417:281;7500:27;7522:4;7500:27;:::i;:::-;7492:6;7488:40;7630:6;7618:10;7615:22;7594:18;7582:10;7579:34;7576:62;7573:88;;;7641:18;;:::i;:::-;7573:88;7681:10;7677:2;7670:22;7460:238;7417:281;;:::o;7704:129::-;7738:6;7765:20;;:::i;:::-;7755:30;;7794:33;7822:4;7814:6;7794:33;:::i;:::-;7704:129;;;:::o;7839:307::-;7900:4;7990:18;7982:6;7979:30;7976:56;;;8012:18;;:::i;:::-;7976:56;8050:29;8072:6;8050:29;:::i;:::-;8042:37;;8134:4;8128;8124:15;8116:23;;7839:307;;;:::o;8152:154::-;8236:6;8231:3;8226;8213:30;8298:1;8289:6;8284:3;8280:16;8273:27;8152:154;;;:::o;8312:410::-;8389:5;8414:65;8430:48;8471:6;8430:48;:::i;:::-;8414:65;:::i;:::-;8405:74;;8502:6;8495:5;8488:21;8540:4;8533:5;8529:16;8578:3;8569:6;8564:3;8560:16;8557:25;8554:112;;;8585:79;;:::i;:::-;8554:112;8675:41;8709:6;8704:3;8699;8675:41;:::i;:::-;8395:327;8312:410;;;;;:::o;8741:338::-;8796:5;8845:3;8838:4;8830:6;8826:17;8822:27;8812:122;;8853:79;;:::i;:::-;8812:122;8970:6;8957:20;8995:78;9069:3;9061:6;9054:4;9046:6;9042:17;8995:78;:::i;:::-;8986:87;;8802:277;8741:338;;;;:::o;9085:943::-;9180:6;9188;9196;9204;9253:3;9241:9;9232:7;9228:23;9224:33;9221:120;;;9260:79;;:::i;:::-;9221:120;9380:1;9405:53;9450:7;9441:6;9430:9;9426:22;9405:53;:::i;:::-;9395:63;;9351:117;9507:2;9533:53;9578:7;9569:6;9558:9;9554:22;9533:53;:::i;:::-;9523:63;;9478:118;9635:2;9661:53;9706:7;9697:6;9686:9;9682:22;9661:53;:::i;:::-;9651:63;;9606:118;9791:2;9780:9;9776:18;9763:32;9822:18;9814:6;9811:30;9808:117;;;9844:79;;:::i;:::-;9808:117;9949:62;10003:7;9994:6;9983:9;9979:22;9949:62;:::i;:::-;9939:72;;9734:287;9085:943;;;;;;;:::o;10034:474::-;10102:6;10110;10159:2;10147:9;10138:7;10134:23;10130:32;10127:119;;;10165:79;;:::i;:::-;10127:119;10285:1;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;:::i;:::-;10300:63;;10256:117;10412:2;10438:53;10483:7;10474:6;10463:9;10459:22;10438:53;:::i;:::-;10428:63;;10383:118;10034:474;;;;;:::o;10514:180::-;10562:77;10559:1;10552:88;10659:4;10656:1;10649:15;10683:4;10680:1;10673:15;10700:320;10744:6;10781:1;10775:4;10771:12;10761:22;;10828:1;10822:4;10818:12;10849:18;10839:81;;10905:4;10897:6;10893:17;10883:27;;10839:81;10967:2;10959:6;10956:14;10936:18;10933:38;10930:84;;10986:18;;:::i;:::-;10930:84;10751:269;10700:320;;;:::o;11026:220::-;11166:34;11162:1;11154:6;11150:14;11143:58;11235:3;11230:2;11222:6;11218:15;11211:28;11026:220;:::o;11252:366::-;11394:3;11415:67;11479:2;11474:3;11415:67;:::i;:::-;11408:74;;11491:93;11580:3;11491:93;:::i;:::-;11609:2;11604:3;11600:12;11593:19;;11252:366;;;:::o;11624:419::-;11790:4;11828:2;11817:9;11813:18;11805:26;;11877:9;11871:4;11867:20;11863:1;11852:9;11848:17;11841:47;11905:131;12031:4;11905:131;:::i;:::-;11897:139;;11624:419;;;:::o;12049:249::-;12189:34;12185:1;12177:6;12173:14;12166:58;12258:32;12253:2;12245:6;12241:15;12234:57;12049:249;:::o;12304:366::-;12446:3;12467:67;12531:2;12526:3;12467:67;:::i;:::-;12460:74;;12543:93;12632:3;12543:93;:::i;:::-;12661:2;12656:3;12652:12;12645:19;;12304:366;;;:::o;12676:419::-;12842:4;12880:2;12869:9;12865:18;12857:26;;12929:9;12923:4;12919:20;12915:1;12904:9;12900:17;12893:47;12957:131;13083:4;12957:131;:::i;:::-;12949:139;;12676:419;;;:::o;13101:233::-;13241:34;13237:1;13229:6;13225:14;13218:58;13310:16;13305:2;13297:6;13293:15;13286:41;13101:233;:::o;13340:366::-;13482:3;13503:67;13567:2;13562:3;13503:67;:::i;:::-;13496:74;;13579:93;13668:3;13579:93;:::i;:::-;13697:2;13692:3;13688:12;13681:19;;13340:366;;;:::o;13712:419::-;13878:4;13916:2;13905:9;13901:18;13893:26;;13965:9;13959:4;13955:20;13951:1;13940:9;13936:17;13929:47;13993:131;14119:4;13993:131;:::i;:::-;13985:139;;13712:419;;;:::o;14137:174::-;14277:26;14273:1;14265:6;14261:14;14254:50;14137:174;:::o;14317:366::-;14459:3;14480:67;14544:2;14539:3;14480:67;:::i;:::-;14473:74;;14556:93;14645:3;14556:93;:::i;:::-;14674:2;14669:3;14665:12;14658:19;;14317:366;;;:::o;14689:419::-;14855:4;14893:2;14882:9;14878:18;14870:26;;14942:9;14936:4;14932:20;14928:1;14917:9;14913:17;14906:47;14970:131;15096:4;14970:131;:::i;:::-;14962:139;;14689:419;;;:::o;15114:228::-;15254:34;15250:1;15242:6;15238:14;15231:58;15323:11;15318:2;15310:6;15306:15;15299:36;15114:228;:::o;15348:366::-;15490:3;15511:67;15575:2;15570:3;15511:67;:::i;:::-;15504:74;;15587:93;15676:3;15587:93;:::i;:::-;15705:2;15700:3;15696:12;15689:19;;15348:366;;;:::o;15720:419::-;15886:4;15924:2;15913:9;15909:18;15901:26;;15973:9;15967:4;15963:20;15959:1;15948:9;15944:17;15937:47;16001:131;16127:4;16001:131;:::i;:::-;15993:139;;15720:419;;;:::o;16145:148::-;16247:11;16284:3;16269:18;;16145:148;;;;:::o;16299:377::-;16405:3;16433:39;16466:5;16433:39;:::i;:::-;16488:89;16570:6;16565:3;16488:89;:::i;:::-;16481:96;;16586:52;16631:6;16626:3;16619:4;16612:5;16608:16;16586:52;:::i;:::-;16663:6;16658:3;16654:16;16647:23;;16409:267;16299:377;;;;:::o;16682:435::-;16862:3;16884:95;16975:3;16966:6;16884:95;:::i;:::-;16877:102;;16996:95;17087:3;17078:6;16996:95;:::i;:::-;16989:102;;17108:3;17101:10;;16682:435;;;;;:::o;17123:225::-;17263:34;17259:1;17251:6;17247:14;17240:58;17332:8;17327:2;17319:6;17315:15;17308:33;17123:225;:::o;17354:366::-;17496:3;17517:67;17581:2;17576:3;17517:67;:::i;:::-;17510:74;;17593:93;17682:3;17593:93;:::i;:::-;17711:2;17706:3;17702:12;17695:19;;17354:366;;;:::o;17726:419::-;17892:4;17930:2;17919:9;17915:18;17907:26;;17979:9;17973:4;17969:20;17965:1;17954:9;17950:17;17943:47;18007:131;18133:4;18007:131;:::i;:::-;17999:139;;17726:419;;;:::o;18151:182::-;18291:34;18287:1;18279:6;18275:14;18268:58;18151:182;:::o;18339:366::-;18481:3;18502:67;18566:2;18561:3;18502:67;:::i;:::-;18495:74;;18578:93;18667:3;18578:93;:::i;:::-;18696:2;18691:3;18687:12;18680:19;;18339:366;;;:::o;18711:419::-;18877:4;18915:2;18904:9;18900:18;18892:26;;18964:9;18958:4;18954:20;18950:1;18939:9;18935:17;18928:47;18992:131;19118:4;18992:131;:::i;:::-;18984:139;;18711:419;;;:::o;19136:178::-;19276:30;19272:1;19264:6;19260:14;19253:54;19136:178;:::o;19320:366::-;19462:3;19483:67;19547:2;19542:3;19483:67;:::i;:::-;19476:74;;19559:93;19648:3;19559:93;:::i;:::-;19677:2;19672:3;19668:12;19661:19;;19320:366;;;:::o;19692:419::-;19858:4;19896:2;19885:9;19881:18;19873:26;;19945:9;19939:4;19935:20;19931:1;19920:9;19916:17;19909:47;19973:131;20099:4;19973:131;:::i;:::-;19965:139;;19692:419;;;:::o;20117:224::-;20257:34;20253:1;20245:6;20241:14;20234:58;20326:7;20321:2;20313:6;20309:15;20302:32;20117:224;:::o;20347:366::-;20489:3;20510:67;20574:2;20569:3;20510:67;:::i;:::-;20503:74;;20586:93;20675:3;20586:93;:::i;:::-;20704:2;20699:3;20695:12;20688:19;;20347:366;;;:::o;20719:419::-;20885:4;20923:2;20912:9;20908:18;20900:26;;20972:9;20966:4;20962:20;20958:1;20947:9;20943:17;20936:47;21000:131;21126:4;21000:131;:::i;:::-;20992:139;;20719:419;;;:::o;21144:223::-;21284:34;21280:1;21272:6;21268:14;21261:58;21353:6;21348:2;21340:6;21336:15;21329:31;21144:223;:::o;21373:366::-;21515:3;21536:67;21600:2;21595:3;21536:67;:::i;:::-;21529:74;;21612:93;21701:3;21612:93;:::i;:::-;21730:2;21725:3;21721:12;21714:19;;21373:366;;;:::o;21745:419::-;21911:4;21949:2;21938:9;21934:18;21926:26;;21998:9;21992:4;21988:20;21984:1;21973:9;21969:17;21962:47;22026:131;22152:4;22026:131;:::i;:::-;22018:139;;21745:419;;;:::o;22170:180::-;22218:77;22215:1;22208:88;22315:4;22312:1;22305:15;22339:4;22336:1;22329:15;22356:191;22396:4;22416:20;22434:1;22416:20;:::i;:::-;22411:25;;22450:20;22468:1;22450:20;:::i;:::-;22445:25;;22489:1;22486;22483:8;22480:34;;;22494:18;;:::i;:::-;22480:34;22539:1;22536;22532:9;22524:17;;22356:191;;;;:::o;22553:305::-;22593:3;22612:20;22630:1;22612:20;:::i;:::-;22607:25;;22646:20;22664:1;22646:20;:::i;:::-;22641:25;;22800:1;22732:66;22728:74;22725:1;22722:81;22719:107;;;22806:18;;:::i;:::-;22719:107;22850:1;22847;22843:9;22836:16;;22553:305;;;;:::o;22864:182::-;23004:34;23000:1;22992:6;22988:14;22981:58;22864:182;:::o;23052:366::-;23194:3;23215:67;23279:2;23274:3;23215:67;:::i;:::-;23208:74;;23291:93;23380:3;23291:93;:::i;:::-;23409:2;23404:3;23400:12;23393:19;;23052:366;;;:::o;23424:419::-;23590:4;23628:2;23617:9;23613:18;23605:26;;23677:9;23671:4;23667:20;23663:1;23652:9;23648:17;23641:47;23705:131;23831:4;23705:131;:::i;:::-;23697:139;;23424:419;;;:::o;23849:175::-;23989:27;23985:1;23977:6;23973:14;23966:51;23849:175;:::o;24030:366::-;24172:3;24193:67;24257:2;24252:3;24193:67;:::i;:::-;24186:74;;24269:93;24358:3;24269:93;:::i;:::-;24387:2;24382:3;24378:12;24371:19;;24030:366;;;:::o;24402:419::-;24568:4;24606:2;24595:9;24591:18;24583:26;;24655:9;24649:4;24645:20;24641:1;24630:9;24626:17;24619:47;24683:131;24809:4;24683:131;:::i;:::-;24675:139;;24402:419;;;:::o;24827:237::-;24967:34;24963:1;24955:6;24951:14;24944:58;25036:20;25031:2;25023:6;25019:15;25012:45;24827:237;:::o;25070:366::-;25212:3;25233:67;25297:2;25292:3;25233:67;:::i;:::-;25226:74;;25309:93;25398:3;25309:93;:::i;:::-;25427:2;25422:3;25418:12;25411:19;;25070:366;;;:::o;25442:419::-;25608:4;25646:2;25635:9;25631:18;25623:26;;25695:9;25689:4;25685:20;25681:1;25670:9;25666:17;25659:47;25723:131;25849:4;25723:131;:::i;:::-;25715:139;;25442:419;;;:::o;25867:180::-;25915:77;25912:1;25905:88;26012:4;26009:1;26002:15;26036:4;26033:1;26026:15;26053:98;26104:6;26138:5;26132:12;26122:22;;26053:98;;;:::o;26157:168::-;26240:11;26274:6;26269:3;26262:19;26314:4;26309:3;26305:14;26290:29;;26157:168;;;;:::o;26331:360::-;26417:3;26445:38;26477:5;26445:38;:::i;:::-;26499:70;26562:6;26557:3;26499:70;:::i;:::-;26492:77;;26578:52;26623:6;26618:3;26611:4;26604:5;26600:16;26578:52;:::i;:::-;26655:29;26677:6;26655:29;:::i;:::-;26650:3;26646:39;26639:46;;26421:270;26331:360;;;;:::o;26697:640::-;26892:4;26930:3;26919:9;26915:19;26907:27;;26944:71;27012:1;27001:9;26997:17;26988:6;26944:71;:::i;:::-;27025:72;27093:2;27082:9;27078:18;27069:6;27025:72;:::i;:::-;27107;27175:2;27164:9;27160:18;27151:6;27107:72;:::i;:::-;27226:9;27220:4;27216:20;27211:2;27200:9;27196:18;27189:48;27254:76;27325:4;27316:6;27254:76;:::i;:::-;27246:84;;26697:640;;;;;;;:::o;27343:141::-;27399:5;27430:6;27424:13;27415:22;;27446:32;27472:5;27446:32;:::i;:::-;27343:141;;;;:::o;27490:349::-;27559:6;27608:2;27596:9;27587:7;27583:23;27579:32;27576:119;;;27614:79;;:::i;:::-;27576:119;27734:1;27759:63;27814:7;27805:6;27794:9;27790:22;27759:63;:::i;:::-;27749:73;;27705:127;27490:349;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"2117000","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"12030","getApproved(uint256)":"5257","isApprovedForAll(address,address)":"infinite","mint()":"31089","name()":"infinite","owner()":"2589","ownerOf(uint256)":"7544","renounceOwnership()":"30443","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"infinite","supportsInterface(bytes4)":"797","symbol()":"infinite","tokenURI(uint256)":"3424","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"30854"},"internal":{"_hasOwnToken(address)":"6880","_isTokenActive(uint256)":"4508","_mint(address)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","mint()":"1249c58b","name()":"06fdde03","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","renounceOwnership()":"715018a6","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"todo...\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"Overrides {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"Overrides {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC721All.sol\":\"ERC721All\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/ERC721All.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Written by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity 0.8.13;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\nimport \\\"./lib/ERC721.sol\\\";\\n\\n/**\\n * @dev todo...\\n */\\ncontract ERC721All is Ownable, ERC721 {\\n mapping(uint256 => bool) internal _activeTokens;\\n\\n constructor(string memory name, string memory symbol) ERC721(name, symbol) Ownable() {}\\n\\n /**\\n * @dev Overrides {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n if (_balances[owner] == 0 && _hasOwnToken(owner)) {\\n return 1;\\n }\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev Overrides {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view override returns (address) {\\n require(_isTokenActive(tokenId), \\\"ERC721: invalid token ID\\\");\\n\\n // If token has been transfered then _owners will be populated,\\n // otherwise the token ID represents the initial owner\\n address owner = _owners[tokenId];\\n if (owner == address(0)) {\\n owner = address(uint160(tokenId));\\n }\\n return owner;\\n }\\n\\n function mint() public {\\n _mint(_msgSender());\\n }\\n\\n function _mint(address receiver) internal {\\n // Token ID == Minter Address\\n uint256 tokenId = uint256(uint160(receiver));\\n\\n require(receiver != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_isTokenActive(tokenId), \\\"ERC721: token already minted\\\");\\n\\n // Mark Token as Active\\n _activeTokens[tokenId] = true;\\n\\n // Fire Transfer Event\\n emit Transfer(address(0), receiver, tokenId);\\n }\\n\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal override {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n // Only if token has previously been transfered after mint\\n if (_owners[tokenId] != address(0)) {\\n _balances[from] -= 1;\\n }\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n function _hasOwnToken(address owner) internal view returns (bool) {\\n uint256 ownerTokenId = uint256(uint160(owner));\\n address currentOwner = _owners[ownerTokenId];\\n return (_isTokenActive(ownerTokenId) && (currentOwner == owner || currentOwner == address(0)));\\n }\\n\\n function _isTokenActive(uint256 tokenId) internal view returns (bool) {\\n // Check if Token is Active and Not Burned\\n return (_activeTokens[tokenId] && _owners[tokenId] != _NULL_ADDRESS);\\n }\\n}\\n\",\"keccak256\":\"0x2f8f19d8616675c611ea23b3d5f1fbb7736a9c67ef22ded2df0883515454cda3\",\"license\":\"MIT\"},\"contracts/lib/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n *\\n * NOTE:\\n * The only changes made here are:\\n * - change scope of \\\"_owners\\\" from private to internal\\n * - change scope of \\\"_balances\\\" from private to internal\\n * - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\"\\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) internal _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) internal _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _owners[tokenId];\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _owners[tokenId] != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId);\\n\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n // Clear approvals\\n _approve(address(0), tokenId);\\n\\n _balances[owner] -= 1;\\n // Prevent re-assigning the token back to the Pre-Mint Receiver\\n _owners[tokenId] = _NULL_ADDRESS;\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.code.length > 0) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n * transferred to `to`.\\n * - When `from` is zero, `tokenId` will be minted for `to`.\\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x726960336df673d5fd509dde21ba3bed24645291d201f74762b945fe4d5aa016\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7,"contract":"contracts/ERC721All.sol:ERC721All","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":2327,"contract":"contracts/ERC721All.sol:ERC721All","label":"_name","offset":0,"slot":"1","type":"t_string_storage"},{"astId":2329,"contract":"contracts/ERC721All.sol:ERC721All","label":"_symbol","offset":0,"slot":"2","type":"t_string_storage"},{"astId":2333,"contract":"contracts/ERC721All.sol:ERC721All","label":"_owners","offset":0,"slot":"3","type":"t_mapping(t_uint256,t_address)"},{"astId":2337,"contract":"contracts/ERC721All.sol:ERC721All","label":"_balances","offset":0,"slot":"4","type":"t_mapping(t_address,t_uint256)"},{"astId":2341,"contract":"contracts/ERC721All.sol:ERC721All","label":"_tokenApprovals","offset":0,"slot":"5","type":"t_mapping(t_uint256,t_address)"},{"astId":2347,"contract":"contracts/ERC721All.sol:ERC721All","label":"_operatorApprovals","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":1905,"contract":"contracts/ERC721All.sol:ERC721All","label":"_activeTokens","offset":0,"slot":"7","type":"t_mapping(t_uint256,t_bool)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_bool)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bool)","numberOfBytes":"32","value":"t_bool"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ERC721i.sol":{"ERC721i":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"baseUri","type":"string"},{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"This implements a Pre-Mint version of {ERC721} that adds the ability to Pre-Mint all the token ids in the contract as assign an initial owner for each token id. On-chain state for Pre-Mint does not need to be initially stored if Max-Supply is known. Minting is a simple matter of assigning a balance to the pre-mint receiver, and modifying the \"read\" methods to account for the pre-mint receiver as owner. We use the Consecutive Transfer Method as defined in EIP-2309 to signal inital ownership. Almost everything else remains standard. We also default to the contract \"owner\" as the pre-mint receiver, but this can be changed.","events":{"ConsecutiveTransfer(uint256,uint256,address,address)":{"details":"EIP-2309: https://eips.ethereum.org/EIPS/eip-2309"}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection, as well as a `minter` and a `maxSupply` for pre-minting the collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"owner()":{"details":"Returns the address of the current owner."},"ownerOf(uint256)":{"details":"Override the ERC721 \"ownerOf\" function to account for the Pre-Mint Receiver."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}. Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable"},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenByIndex(uint256)":{"details":"See {IERC721Enumerable-tokenByIndex}."},"tokenOfOwnerByIndex(address,uint256)":{"details":"See {IERC721Enumerable-tokenOfOwnerByIndex}. note: Fix contributed by surfer77"},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"totalSupply()":{"details":"See {IERC721Enumerable-totalSupply}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"_baseTokenURI":{"details":"ERC721 Base Token URI"}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2258":{"entryPoint":null,"id":2258,"parameterSlots":5,"returnSlots":0},"@_23":{"entryPoint":null,"id":23,"parameterSlots":0,"returnSlots":0},"@_2364":{"entryPoint":null,"id":2364,"parameterSlots":2,"returnSlots":0},"@_msgSender_646":{"entryPoint":249,"id":646,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_111":{"entryPoint":257,"id":111,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr_fromMemory":{"entryPoint":916,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":1120,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_string_memory_ptr_fromMemory":{"entryPoint":991,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":1179,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint256_fromMemory":{"entryPoint":1202,"id":null,"parameterSlots":2,"returnSlots":5},"allocate_memory":{"entryPoint":777,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":629,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":808,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address":{"entryPoint":1074,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":1042,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":1143,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":862,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1478,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":723,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x22":{"entryPoint":1431,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":676,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":649,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":654,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":644,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":639,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":659,"id":null,"parameterSlots":1,"returnSlots":1},"validator_revert_t_address":{"entryPoint":1094,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":1153,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5607:16","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:16","statements":[{"nodeType":"YulAssignment","src":"57:19:16","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:16","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:16"},"nodeType":"YulFunctionCall","src":"67:9:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:16"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:16","type":""}],"src":"7:75:16"},{"body":{"nodeType":"YulBlock","src":"177:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:16"},"nodeType":"YulFunctionCall","src":"187:12:16"},"nodeType":"YulExpressionStatement","src":"187:12:16"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:16"},{"body":{"nodeType":"YulBlock","src":"300:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:16"},"nodeType":"YulFunctionCall","src":"310:12:16"},"nodeType":"YulExpressionStatement","src":"310:12:16"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:16"},{"body":{"nodeType":"YulBlock","src":"423:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"440:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"443:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"433:6:16"},"nodeType":"YulFunctionCall","src":"433:12:16"},"nodeType":"YulExpressionStatement","src":"433:12:16"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"334:117:16"},{"body":{"nodeType":"YulBlock","src":"546:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:16"},"nodeType":"YulFunctionCall","src":"556:12:16"},"nodeType":"YulExpressionStatement","src":"556:12:16"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"457:117:16"},{"body":{"nodeType":"YulBlock","src":"628:54:16","statements":[{"nodeType":"YulAssignment","src":"638:38:16","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"656:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"663:2:16","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"652:3:16"},"nodeType":"YulFunctionCall","src":"652:14:16"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:16","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"668:3:16"},"nodeType":"YulFunctionCall","src":"668:7:16"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"648:3:16"},"nodeType":"YulFunctionCall","src":"648:28:16"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"638:6:16"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"611:5:16","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"621:6:16","type":""}],"src":"580:102:16"},{"body":{"nodeType":"YulBlock","src":"716:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"733:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"736:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"726:6:16"},"nodeType":"YulFunctionCall","src":"726:88:16"},"nodeType":"YulExpressionStatement","src":"726:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"830:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"833:4:16","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"823:6:16"},"nodeType":"YulFunctionCall","src":"823:15:16"},"nodeType":"YulExpressionStatement","src":"823:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"854:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"857:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"847:6:16"},"nodeType":"YulFunctionCall","src":"847:15:16"},"nodeType":"YulExpressionStatement","src":"847:15:16"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"688:180:16"},{"body":{"nodeType":"YulBlock","src":"917:238:16","statements":[{"nodeType":"YulVariableDeclaration","src":"927:58:16","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"949:6:16"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"979:4:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"957:21:16"},"nodeType":"YulFunctionCall","src":"957:27:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"945:3:16"},"nodeType":"YulFunctionCall","src":"945:40:16"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"931:10:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"1096:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1098:16:16"},"nodeType":"YulFunctionCall","src":"1098:18:16"},"nodeType":"YulExpressionStatement","src":"1098:18:16"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1039:10:16"},{"kind":"number","nodeType":"YulLiteral","src":"1051:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1036:2:16"},"nodeType":"YulFunctionCall","src":"1036:34:16"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1075:10:16"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1087:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:16"},"nodeType":"YulFunctionCall","src":"1072:22:16"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1033:2:16"},"nodeType":"YulFunctionCall","src":"1033:62:16"},"nodeType":"YulIf","src":"1030:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1134:2:16","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1138:10:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1127:6:16"},"nodeType":"YulFunctionCall","src":"1127:22:16"},"nodeType":"YulExpressionStatement","src":"1127:22:16"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"903:6:16","type":""},{"name":"size","nodeType":"YulTypedName","src":"911:4:16","type":""}],"src":"874:281:16"},{"body":{"nodeType":"YulBlock","src":"1202:88:16","statements":[{"nodeType":"YulAssignment","src":"1212:30:16","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1222:18:16"},"nodeType":"YulFunctionCall","src":"1222:20:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1212:6:16"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1271:6:16"},{"name":"size","nodeType":"YulIdentifier","src":"1279:4:16"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1251:19:16"},"nodeType":"YulFunctionCall","src":"1251:33:16"},"nodeType":"YulExpressionStatement","src":"1251:33:16"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1186:4:16","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1195:6:16","type":""}],"src":"1161:129:16"},{"body":{"nodeType":"YulBlock","src":"1363:241:16","statements":[{"body":{"nodeType":"YulBlock","src":"1468:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1470:16:16"},"nodeType":"YulFunctionCall","src":"1470:18:16"},"nodeType":"YulExpressionStatement","src":"1470:18:16"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1440:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"1448:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1437:2:16"},"nodeType":"YulFunctionCall","src":"1437:30:16"},"nodeType":"YulIf","src":"1434:56:16"},{"nodeType":"YulAssignment","src":"1500:37:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1530:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1508:21:16"},"nodeType":"YulFunctionCall","src":"1508:29:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1500:4:16"}]},{"nodeType":"YulAssignment","src":"1574:23:16","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1586:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"1592:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1582:3:16"},"nodeType":"YulFunctionCall","src":"1582:15:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1574:4:16"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1347:6:16","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1358:4:16","type":""}],"src":"1296:308:16"},{"body":{"nodeType":"YulBlock","src":"1659:258:16","statements":[{"nodeType":"YulVariableDeclaration","src":"1669:10:16","value":{"kind":"number","nodeType":"YulLiteral","src":"1678:1:16","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1673:1:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"1738:63:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1763:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1768:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1759:3:16"},"nodeType":"YulFunctionCall","src":"1759:11:16"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1782:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1787:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1778:3:16"},"nodeType":"YulFunctionCall","src":"1778:11:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1772:5:16"},"nodeType":"YulFunctionCall","src":"1772:18:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:16"},"nodeType":"YulFunctionCall","src":"1752:39:16"},"nodeType":"YulExpressionStatement","src":"1752:39:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1699:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"1702:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1696:2:16"},"nodeType":"YulFunctionCall","src":"1696:13:16"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1710:19:16","statements":[{"nodeType":"YulAssignment","src":"1712:15:16","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1721:1:16"},{"kind":"number","nodeType":"YulLiteral","src":"1724:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1717:3:16"},"nodeType":"YulFunctionCall","src":"1717:10:16"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1712:1:16"}]}]},"pre":{"nodeType":"YulBlock","src":"1692:3:16","statements":[]},"src":"1688:113:16"},{"body":{"nodeType":"YulBlock","src":"1835:76:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1885:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1881:3:16"},"nodeType":"YulFunctionCall","src":"1881:16:16"},{"kind":"number","nodeType":"YulLiteral","src":"1899:1:16","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1874:6:16"},"nodeType":"YulFunctionCall","src":"1874:27:16"},"nodeType":"YulExpressionStatement","src":"1874:27:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1816:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"1819:6:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1813:2:16"},"nodeType":"YulFunctionCall","src":"1813:13:16"},"nodeType":"YulIf","src":"1810:101:16"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1641:3:16","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1646:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1651:6:16","type":""}],"src":"1610:307:16"},{"body":{"nodeType":"YulBlock","src":"2018:326:16","statements":[{"nodeType":"YulAssignment","src":"2028:75:16","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2095:6:16"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2053:41:16"},"nodeType":"YulFunctionCall","src":"2053:49:16"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2037:15:16"},"nodeType":"YulFunctionCall","src":"2037:66:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2028:5:16"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2119:5:16"},{"name":"length","nodeType":"YulIdentifier","src":"2126:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2112:6:16"},"nodeType":"YulFunctionCall","src":"2112:21:16"},"nodeType":"YulExpressionStatement","src":"2112:21:16"},{"nodeType":"YulVariableDeclaration","src":"2142:27:16","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2157:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"2164:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2153:3:16"},"nodeType":"YulFunctionCall","src":"2153:16:16"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2146:3:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"2207:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"2209:77:16"},"nodeType":"YulFunctionCall","src":"2209:79:16"},"nodeType":"YulExpressionStatement","src":"2209:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2188:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2193:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:16"},"nodeType":"YulFunctionCall","src":"2184:16:16"},{"name":"end","nodeType":"YulIdentifier","src":"2202:3:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2181:2:16"},"nodeType":"YulFunctionCall","src":"2181:25:16"},"nodeType":"YulIf","src":"2178:112:16"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2321:3:16"},{"name":"dst","nodeType":"YulIdentifier","src":"2326:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2331:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2299:21:16"},"nodeType":"YulFunctionCall","src":"2299:39:16"},"nodeType":"YulExpressionStatement","src":"2299:39:16"}]},"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1991:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1996:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"2004:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2012:5:16","type":""}],"src":"1923:421:16"},{"body":{"nodeType":"YulBlock","src":"2437:282:16","statements":[{"body":{"nodeType":"YulBlock","src":"2486:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"2488:77:16"},"nodeType":"YulFunctionCall","src":"2488:79:16"},"nodeType":"YulExpressionStatement","src":"2488:79:16"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2465:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"2473:4:16","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2461:3:16"},"nodeType":"YulFunctionCall","src":"2461:17:16"},{"name":"end","nodeType":"YulIdentifier","src":"2480:3:16"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2457:3:16"},"nodeType":"YulFunctionCall","src":"2457:27:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2450:6:16"},"nodeType":"YulFunctionCall","src":"2450:35:16"},"nodeType":"YulIf","src":"2447:122:16"},{"nodeType":"YulVariableDeclaration","src":"2578:27:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2598:6:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2592:5:16"},"nodeType":"YulFunctionCall","src":"2592:13:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2582:6:16","type":""}]},{"nodeType":"YulAssignment","src":"2614:99:16","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2686:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"2694:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2682:3:16"},"nodeType":"YulFunctionCall","src":"2682:17:16"},{"name":"length","nodeType":"YulIdentifier","src":"2701:6:16"},{"name":"end","nodeType":"YulIdentifier","src":"2709:3:16"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"2623:58:16"},"nodeType":"YulFunctionCall","src":"2623:90:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2614:5:16"}]}]},"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2415:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"2423:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2431:5:16","type":""}],"src":"2364:355:16"},{"body":{"nodeType":"YulBlock","src":"2770:81:16","statements":[{"nodeType":"YulAssignment","src":"2780:65:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2795:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"2802:42:16","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2791:3:16"},"nodeType":"YulFunctionCall","src":"2791:54:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2780:7:16"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2752:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2762:7:16","type":""}],"src":"2725:126:16"},{"body":{"nodeType":"YulBlock","src":"2902:51:16","statements":[{"nodeType":"YulAssignment","src":"2912:35:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2941:5:16"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"2923:17:16"},"nodeType":"YulFunctionCall","src":"2923:24:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2912:7:16"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2884:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2894:7:16","type":""}],"src":"2857:96:16"},{"body":{"nodeType":"YulBlock","src":"3002:79:16","statements":[{"body":{"nodeType":"YulBlock","src":"3059:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3068:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3071:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3061:6:16"},"nodeType":"YulFunctionCall","src":"3061:12:16"},"nodeType":"YulExpressionStatement","src":"3061:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3025:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3050:5:16"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"3032:17:16"},"nodeType":"YulFunctionCall","src":"3032:24:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3022:2:16"},"nodeType":"YulFunctionCall","src":"3022:35:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3015:6:16"},"nodeType":"YulFunctionCall","src":"3015:43:16"},"nodeType":"YulIf","src":"3012:63:16"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2995:5:16","type":""}],"src":"2959:122:16"},{"body":{"nodeType":"YulBlock","src":"3150:80:16","statements":[{"nodeType":"YulAssignment","src":"3160:22:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3175:6:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3169:5:16"},"nodeType":"YulFunctionCall","src":"3169:13:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3160:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3218:5:16"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"3191:26:16"},"nodeType":"YulFunctionCall","src":"3191:33:16"},"nodeType":"YulExpressionStatement","src":"3191:33:16"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3128:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"3136:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3144:5:16","type":""}],"src":"3087:143:16"},{"body":{"nodeType":"YulBlock","src":"3281:32:16","statements":[{"nodeType":"YulAssignment","src":"3291:16:16","value":{"name":"value","nodeType":"YulIdentifier","src":"3302:5:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3291:7:16"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3263:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3273:7:16","type":""}],"src":"3236:77:16"},{"body":{"nodeType":"YulBlock","src":"3362:79:16","statements":[{"body":{"nodeType":"YulBlock","src":"3419:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3428:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3431:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3421:6:16"},"nodeType":"YulFunctionCall","src":"3421:12:16"},"nodeType":"YulExpressionStatement","src":"3421:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3385:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3410:5:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3392:17:16"},"nodeType":"YulFunctionCall","src":"3392:24:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3382:2:16"},"nodeType":"YulFunctionCall","src":"3382:35:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3375:6:16"},"nodeType":"YulFunctionCall","src":"3375:43:16"},"nodeType":"YulIf","src":"3372:63:16"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3355:5:16","type":""}],"src":"3319:122:16"},{"body":{"nodeType":"YulBlock","src":"3510:80:16","statements":[{"nodeType":"YulAssignment","src":"3520:22:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3535:6:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3529:5:16"},"nodeType":"YulFunctionCall","src":"3529:13:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3520:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3578:5:16"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"3551:26:16"},"nodeType":"YulFunctionCall","src":"3551:33:16"},"nodeType":"YulExpressionStatement","src":"3551:33:16"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3488:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"3496:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3504:5:16","type":""}],"src":"3447:143:16"},{"body":{"nodeType":"YulBlock","src":"3771:1321:16","statements":[{"body":{"nodeType":"YulBlock","src":"3818:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3820:77:16"},"nodeType":"YulFunctionCall","src":"3820:79:16"},"nodeType":"YulExpressionStatement","src":"3820:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3792:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"3801:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3788:3:16"},"nodeType":"YulFunctionCall","src":"3788:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"3813:3:16","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3784:3:16"},"nodeType":"YulFunctionCall","src":"3784:33:16"},"nodeType":"YulIf","src":"3781:120:16"},{"nodeType":"YulBlock","src":"3911:291:16","statements":[{"nodeType":"YulVariableDeclaration","src":"3926:38:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3950:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"3961:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3946:3:16"},"nodeType":"YulFunctionCall","src":"3946:17:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3940:5:16"},"nodeType":"YulFunctionCall","src":"3940:24:16"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3930:6:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"4011:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4013:77:16"},"nodeType":"YulFunctionCall","src":"4013:79:16"},"nodeType":"YulExpressionStatement","src":"4013:79:16"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3983:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"3991:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3980:2:16"},"nodeType":"YulFunctionCall","src":"3980:30:16"},"nodeType":"YulIf","src":"3977:117:16"},{"nodeType":"YulAssignment","src":"4108:84:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4164:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"4175:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4160:3:16"},"nodeType":"YulFunctionCall","src":"4160:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4184:7:16"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"4118:41:16"},"nodeType":"YulFunctionCall","src":"4118:74:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4108:6:16"}]}]},{"nodeType":"YulBlock","src":"4212:292:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4227:39:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4251:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"4262:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4247:3:16"},"nodeType":"YulFunctionCall","src":"4247:18:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4241:5:16"},"nodeType":"YulFunctionCall","src":"4241:25:16"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4231:6:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"4313:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4315:77:16"},"nodeType":"YulFunctionCall","src":"4315:79:16"},"nodeType":"YulExpressionStatement","src":"4315:79:16"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4285:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"4293:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4282:2:16"},"nodeType":"YulFunctionCall","src":"4282:30:16"},"nodeType":"YulIf","src":"4279:117:16"},{"nodeType":"YulAssignment","src":"4410:84:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4466:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"4477:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4462:3:16"},"nodeType":"YulFunctionCall","src":"4462:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4486:7:16"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"4420:41:16"},"nodeType":"YulFunctionCall","src":"4420:74:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4410:6:16"}]}]},{"nodeType":"YulBlock","src":"4514:292:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4529:39:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4553:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"4564:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4549:3:16"},"nodeType":"YulFunctionCall","src":"4549:18:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4543:5:16"},"nodeType":"YulFunctionCall","src":"4543:25:16"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4533:6:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"4615:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4617:77:16"},"nodeType":"YulFunctionCall","src":"4617:79:16"},"nodeType":"YulExpressionStatement","src":"4617:79:16"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4587:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"4595:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4584:2:16"},"nodeType":"YulFunctionCall","src":"4584:30:16"},"nodeType":"YulIf","src":"4581:117:16"},{"nodeType":"YulAssignment","src":"4712:84:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4768:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"4779:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4764:3:16"},"nodeType":"YulFunctionCall","src":"4764:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4788:7:16"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"4722:41:16"},"nodeType":"YulFunctionCall","src":"4722:74:16"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4712:6:16"}]}]},{"nodeType":"YulBlock","src":"4816:129:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4831:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"4845:2:16","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4835:6:16","type":""}]},{"nodeType":"YulAssignment","src":"4861:74:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4907:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"4918:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4903:3:16"},"nodeType":"YulFunctionCall","src":"4903:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4927:7:16"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"4871:31:16"},"nodeType":"YulFunctionCall","src":"4871:64:16"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4861:6:16"}]}]},{"nodeType":"YulBlock","src":"4955:130:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4970:17:16","value":{"kind":"number","nodeType":"YulLiteral","src":"4984:3:16","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4974:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5001:74:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5047:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5058:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5043:3:16"},"nodeType":"YulFunctionCall","src":"5043:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5067:7:16"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"5011:31:16"},"nodeType":"YulFunctionCall","src":"5011:64:16"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5001:6:16"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3709:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3720:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3732:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3740:6:16","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3748:6:16","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3756:6:16","type":""},{"name":"value4","nodeType":"YulTypedName","src":"3764:6:16","type":""}],"src":"3596:1496:16"},{"body":{"nodeType":"YulBlock","src":"5126:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5143:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5146:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5136:6:16"},"nodeType":"YulFunctionCall","src":"5136:88:16"},"nodeType":"YulExpressionStatement","src":"5136:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5240:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5243:4:16","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5233:6:16"},"nodeType":"YulFunctionCall","src":"5233:15:16"},"nodeType":"YulExpressionStatement","src":"5233:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5264:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5267:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5257:6:16"},"nodeType":"YulFunctionCall","src":"5257:15:16"},"nodeType":"YulExpressionStatement","src":"5257:15:16"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"5098:180:16"},{"body":{"nodeType":"YulBlock","src":"5335:269:16","statements":[{"nodeType":"YulAssignment","src":"5345:22:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5359:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"5365:1:16","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"5355:3:16"},"nodeType":"YulFunctionCall","src":"5355:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5345:6:16"}]},{"nodeType":"YulVariableDeclaration","src":"5376:38:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5406:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"5412:1:16","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5402:3:16"},"nodeType":"YulFunctionCall","src":"5402:12:16"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"5380:18:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"5453:51:16","statements":[{"nodeType":"YulAssignment","src":"5467:27:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5481:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"5489:4:16","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5477:3:16"},"nodeType":"YulFunctionCall","src":"5477:17:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5467:6:16"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5433:18:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5426:6:16"},"nodeType":"YulFunctionCall","src":"5426:26:16"},"nodeType":"YulIf","src":"5423:81:16"},{"body":{"nodeType":"YulBlock","src":"5556:42:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"5570:16:16"},"nodeType":"YulFunctionCall","src":"5570:18:16"},"nodeType":"YulExpressionStatement","src":"5570:18:16"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5520:18:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5543:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"5551:2:16","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5540:2:16"},"nodeType":"YulFunctionCall","src":"5540:14:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5517:2:16"},"nodeType":"YulFunctionCall","src":"5517:38:16"},"nodeType":"YulIf","src":"5514:84:16"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"5319:4:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5328:6:16","type":""}],"src":"5284:320:16"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_addresst_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n}\n","id":16,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040516200342a3803806200342a8339818101604052810190620000379190620004b2565b8484620000596200004d620000f960201b60201c565b6200010160201b60201c565b816001908051906020019062000071929190620001c5565b5080600290805190602001906200008a929190620001c5565b50505082600b9080519060200190620000a5929190620001c5565b5080600a8190555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050620005fb565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001d390620005c6565b90600052602060002090601f016020900481019282620001f7576000855562000243565b82601f106200021257805160ff191683800117855562000243565b8280016001018555821562000243579182015b828111156200024257825182559160200191906001019062000225565b5b50905062000252919062000256565b5090565b5b808211156200027157600081600090555060010162000257565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002de8262000293565b810181811067ffffffffffffffff821117156200030057620002ff620002a4565b5b80604052505050565b60006200031562000275565b9050620003238282620002d3565b919050565b600067ffffffffffffffff821115620003465762000345620002a4565b5b620003518262000293565b9050602081019050919050565b60005b838110156200037e57808201518184015260208101905062000361565b838111156200038e576000848401525b50505050565b6000620003ab620003a58462000328565b62000309565b905082815260208101848484011115620003ca57620003c96200028e565b5b620003d78482856200035e565b509392505050565b600082601f830112620003f757620003f662000289565b5b81516200040984826020860162000394565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200043f8262000412565b9050919050565b620004518162000432565b81146200045d57600080fd5b50565b600081519050620004718162000446565b92915050565b6000819050919050565b6200048c8162000477565b81146200049857600080fd5b50565b600081519050620004ac8162000481565b92915050565b600080600080600060a08688031215620004d157620004d06200027f565b5b600086015167ffffffffffffffff811115620004f257620004f162000284565b5b6200050088828901620003df565b955050602086015167ffffffffffffffff81111562000524576200052362000284565b5b6200053288828901620003df565b945050604086015167ffffffffffffffff81111562000556576200055562000284565b5b6200056488828901620003df565b9350506060620005778882890162000460565b92505060806200058a888289016200049b565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005df57607f821691505b602082108103620005f557620005f462000597565b5b50919050565b612e1f806200060b6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80636352211e116100ad578063a22cb46511610071578063a22cb46514610331578063b88d4fde1461034d578063c87b56dd14610369578063e985e9c514610399578063f2fde38b146103c95761012c565b80636352211e1461028b57806370a08231146102bb578063715018a6146102eb5780638da5cb5b146102f557806395d89b41146103135761012c565b806323b872dd116100f457806323b872dd146101e95780632f745c59146102055780633cd29ac81461023557806342842e0e1461023f5780634f6ccce71461025b5761012c565b806301ffc9a71461013157806306fdde0314610161578063081812fc1461017f578063095ea7b3146101af57806318160ddd146101cb575b600080fd5b61014b60048036038101906101469190611ec7565b6103e5565b6040516101589190611f0f565b60405180910390f35b61016961045f565b6040516101769190611fc3565b60405180910390f35b6101996004803603810190610194919061201b565b6104f1565b6040516101a69190612089565b60405180910390f35b6101c960048036038101906101c491906120d0565b610537565b005b6101d361064e565b6040516101e0919061211f565b60405180910390f35b61020360048036038101906101fe919061213a565b610658565b005b61021f600480360381019061021a91906120d0565b6106b8565b60405161022c919061211f565b60405180910390f35b61023d610871565b005b6102596004803603810190610254919061213a565b610883565b005b6102756004803603810190610270919061201b565b6108a3565b604051610282919061211f565b60405180910390f35b6102a560048036038101906102a0919061201b565b6108fd565b6040516102b29190612089565b60405180910390f35b6102d560048036038101906102d0919061218d565b6109b5565b6040516102e2919061211f565b60405180910390f35b6102f3610a6c565b005b6102fd610a80565b60405161030a9190612089565b60405180910390f35b61031b610aa9565b6040516103289190611fc3565b60405180910390f35b61034b600480360381019061034691906121e6565b610b3b565b005b6103676004803603810190610362919061235b565b610b51565b005b610383600480360381019061037e919061201b565b610bb3565b6040516103909190611fc3565b60405180910390f35b6103b360048036038101906103ae91906123de565b610c1b565b6040516103c09190611f0f565b60405180910390f35b6103e360048036038101906103de919061218d565b610caf565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610458575061045782610d32565b5b9050919050565b60606001805461046e9061244d565b80601f016020809104026020016040519081016040528092919081815260200182805461049a9061244d565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60006104fc82610e14565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610542826108fd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906124f0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105d1610e5f565b73ffffffffffffffffffffffffffffffffffffffff16148061060057506105ff816105fa610e5f565b610c1b565b5b61063f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063690612582565b60405180910390fd5b6106498383610e67565b505050565b6000600a54905090565b610669610663610e5f565b82610f20565b6106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f90612614565b60405180910390fd5b6106b3838383610fb5565b505050565b60006106c3836109b5565b8210610704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fb906126a6565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361081757600061076361064e565b9050600080600190505b8281101561081357600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107b7826108fd565b73ffffffffffffffffffffffffffffffffffffffff1603610800576001826107df91906126f5565b9150846001836107ef919061274b565b036107ff5780935050505061086b565b5b808061080b9061277f565b91505061076d565b5050505b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000205490505b92915050565b61087961121b565b610881611299565b565b61089e83838360405180602001604052806000815250610b51565b505050565b6000600a5482106108e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e090612839565b60405180910390fd5b6001826108f691906126f5565b9050919050565b6000600a54821115610919576109128261138f565b90506109b0565b60006003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109ab57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b809150505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c906128cb565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a7461121b565b610a7e6000611440565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610ab89061244d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae49061244d565b8015610b315780601f10610b0657610100808354040283529160200191610b31565b820191906000526020600020905b815481529060010190602001808311610b1457829003601f168201915b5050505050905090565b610b4d610b46610e5f565b8383611504565b5050565b610b62610b5c610e5f565b83610f20565b610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890612614565b60405180910390fd5b610bad84848484611670565b50505050565b6060610bbe82610e14565b6000610bc86116cc565b90506000815111610be85760405180602001604052806000815250610c13565b80610bf28461175e565b604051602001610c03929190612927565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610cb761121b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d906129bd565b60405180910390fd5b610d2f81611440565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610dfd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e0d5750610e0c8261182c565b5b9050919050565b610e1d81611896565b610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5390612a29565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610eda836108fd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610f2c836108fd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f6e5750610f6d8185610c1b565b5b80610fac57508373ffffffffffffffffffffffffffffffffffffffff16610f94846104f1565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610fd5826108fd565b73ffffffffffffffffffffffffffffffffffffffff161461102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102290612abb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190612b4d565b60405180910390fd5b6110a58383836118cc565b6110b0600082610e67565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611100919061274b565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461115791906126f5565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611216838383611924565b505050565b611223610e5f565b73ffffffffffffffffffffffffffffffffffffffff16611241610a80565b73ffffffffffffffffffffffffffffffffffffffff1614611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90612bb9565b60405180910390fd5b565b600a5460046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1660017fdeaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d600a54604051611385919061211f565b60405180910390a4565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90612a29565b60405180910390fd5b80915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156990612c25565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116639190611f0f565b60405180910390a3505050565b61167b848484610fb5565b61168784848484611929565b6116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90612cb7565b60405180910390fd5b50505050565b6060600b80546116db9061244d565b80601f01602080910402602001604051908101604052809291908181526020018280546117079061244d565b80156117545780601f1061172957610100808354040283529160200191611754565b820191906000526020600020905b81548152906001019060200180831161173757829003601f168201915b5050505050905090565b60606000600161176d84611aab565b01905060008167ffffffffffffffff81111561178c5761178b612230565b5b6040519080825280601f01601f1916602001820160405280156117be5781602001600182028036833780820191505090505b509050600082602001820190505b600115611821578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161181557611814612cd7565b5b049450600085036117cc575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000600a548211156118b2576118ab82611bfe565b90506118c7565b6000821180156118c45750600a548211155b90505b919050565b6118d7838383611c6a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461191f576119148382611c6f565b61191e8282611ddc565b5b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115611a9e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261196e610e5f565b8786866040518563ffffffff1660e01b81526004016119909493929190612d5b565b6020604051808303816000875af19250505080156119cc57506040513d601f19601f820116820180604052508101906119c99190612dbc565b60015b611a4e573d80600081146119fc576040519150601f19603f3d011682016040523d82523d6000602084013e611a01565b606091505b506000815103611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d90612cb7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611aa3565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611b09577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611aff57611afe612cd7565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611b46576d04ee2d6d415b85acef81000000008381611b3c57611b3b612cd7565b5b0492506020810190505b662386f26fc100008310611b7557662386f26fc100008381611b6b57611b6a612cd7565b5b0492506010810190505b6305f5e1008310611b9e576305f5e1008381611b9457611b93612cd7565b5b0492506008810190505b6127108310611bc3576127108381611bb957611bb8612cd7565b5b0492506004810190505b60648310611be65760648381611bdc57611bdb612cd7565b5b0492506002810190505b600a8310611bf5576001810190505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b60006001611c7c846109b5565b611c86919061274b565b9050600060086000848152602001908152602001600020549050818114611d6b576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000611de7836109b5565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ea481611e6f565b8114611eaf57600080fd5b50565b600081359050611ec181611e9b565b92915050565b600060208284031215611edd57611edc611e65565b5b6000611eeb84828501611eb2565b91505092915050565b60008115159050919050565b611f0981611ef4565b82525050565b6000602082019050611f246000830184611f00565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f64578082015181840152602081019050611f49565b83811115611f73576000848401525b50505050565b6000601f19601f8301169050919050565b6000611f9582611f2a565b611f9f8185611f35565b9350611faf818560208601611f46565b611fb881611f79565b840191505092915050565b60006020820190508181036000830152611fdd8184611f8a565b905092915050565b6000819050919050565b611ff881611fe5565b811461200357600080fd5b50565b60008135905061201581611fef565b92915050565b60006020828403121561203157612030611e65565b5b600061203f84828501612006565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061207382612048565b9050919050565b61208381612068565b82525050565b600060208201905061209e600083018461207a565b92915050565b6120ad81612068565b81146120b857600080fd5b50565b6000813590506120ca816120a4565b92915050565b600080604083850312156120e7576120e6611e65565b5b60006120f5858286016120bb565b925050602061210685828601612006565b9150509250929050565b61211981611fe5565b82525050565b60006020820190506121346000830184612110565b92915050565b60008060006060848603121561215357612152611e65565b5b6000612161868287016120bb565b9350506020612172868287016120bb565b925050604061218386828701612006565b9150509250925092565b6000602082840312156121a3576121a2611e65565b5b60006121b1848285016120bb565b91505092915050565b6121c381611ef4565b81146121ce57600080fd5b50565b6000813590506121e0816121ba565b92915050565b600080604083850312156121fd576121fc611e65565b5b600061220b858286016120bb565b925050602061221c858286016121d1565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61226882611f79565b810181811067ffffffffffffffff8211171561228757612286612230565b5b80604052505050565b600061229a611e5b565b90506122a6828261225f565b919050565b600067ffffffffffffffff8211156122c6576122c5612230565b5b6122cf82611f79565b9050602081019050919050565b82818337600083830152505050565b60006122fe6122f9846122ab565b612290565b90508281526020810184848401111561231a5761231961222b565b5b6123258482856122dc565b509392505050565b600082601f83011261234257612341612226565b5b81356123528482602086016122eb565b91505092915050565b6000806000806080858703121561237557612374611e65565b5b6000612383878288016120bb565b9450506020612394878288016120bb565b93505060406123a587828801612006565b925050606085013567ffffffffffffffff8111156123c6576123c5611e6a565b5b6123d28782880161232d565b91505092959194509250565b600080604083850312156123f5576123f4611e65565b5b6000612403858286016120bb565b9250506020612414858286016120bb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061246557607f821691505b6020821081036124785761247761241e565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006124da602183611f35565b91506124e58261247e565b604082019050919050565b60006020820190508181036000830152612509816124cd565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b600061256c603e83611f35565b915061257782612510565b604082019050919050565b6000602082019050818103600083015261259b8161255f565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b60006125fe602e83611f35565b9150612609826125a2565b604082019050919050565b6000602082019050818103600083015261262d816125f1565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000612690602b83611f35565b915061269b82612634565b604082019050919050565b600060208201905081810360008301526126bf81612683565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061270082611fe5565b915061270b83611fe5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127405761273f6126c6565b5b828201905092915050565b600061275682611fe5565b915061276183611fe5565b925082821015612774576127736126c6565b5b828203905092915050565b600061278a82611fe5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127bc576127bb6126c6565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000612823602c83611f35565b915061282e826127c7565b604082019050919050565b6000602082019050818103600083015261285281612816565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006128b5602983611f35565b91506128c082612859565b604082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b600081905092915050565b600061290182611f2a565b61290b81856128eb565b935061291b818560208601611f46565b80840191505092915050565b600061293382856128f6565b915061293f82846128f6565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129a7602683611f35565b91506129b28261294b565b604082019050919050565b600060208201905081810360008301526129d68161299a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612a13601883611f35565b9150612a1e826129dd565b602082019050919050565b60006020820190508181036000830152612a4281612a06565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612aa5602583611f35565b9150612ab082612a49565b604082019050919050565b60006020820190508181036000830152612ad481612a98565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b37602483611f35565b9150612b4282612adb565b604082019050919050565b60006020820190508181036000830152612b6681612b2a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ba3602083611f35565b9150612bae82612b6d565b602082019050919050565b60006020820190508181036000830152612bd281612b96565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612c0f601983611f35565b9150612c1a82612bd9565b602082019050919050565b60006020820190508181036000830152612c3e81612c02565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000612ca1603283611f35565b9150612cac82612c45565b604082019050919050565b60006020820190508181036000830152612cd081612c94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000612d2d82612d06565b612d378185612d11565b9350612d47818560208601611f46565b612d5081611f79565b840191505092915050565b6000608082019050612d70600083018761207a565b612d7d602083018661207a565b612d8a6040830185612110565b8181036060830152612d9c8184612d22565b905095945050505050565b600081519050612db681611e9b565b92915050565b600060208284031215612dd257612dd1611e65565b5b6000612de084828501612da7565b9150509291505056fea2646970667358221220b45d17fb345108e1f5e95136d199cb2932d281c69cc816f10ee22fb0bb6f4a2a64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x342A CODESIZE SUB DUP1 PUSH3 0x342A DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x4B2 JUMP JUMPDEST DUP5 DUP5 PUSH3 0x59 PUSH3 0x4D PUSH3 0xF9 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x101 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x71 SWAP3 SWAP2 SWAP1 PUSH3 0x1C5 JUMP JUMPDEST POP DUP1 PUSH1 0x2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x8A SWAP3 SWAP2 SWAP1 PUSH3 0x1C5 JUMP JUMPDEST POP POP POP DUP3 PUSH1 0xB SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xA5 SWAP3 SWAP2 SWAP1 PUSH3 0x1C5 JUMP JUMPDEST POP DUP1 PUSH1 0xA DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x9 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP PUSH3 0x5FB JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x1D3 SWAP1 PUSH3 0x5C6 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x1F7 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x243 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x212 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x243 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x243 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x242 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x225 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x252 SWAP2 SWAP1 PUSH3 0x256 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x271 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x257 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH3 0x2DE DUP3 PUSH3 0x293 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x300 JUMPI PUSH3 0x2FF PUSH3 0x2A4 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x315 PUSH3 0x275 JUMP JUMPDEST SWAP1 POP PUSH3 0x323 DUP3 DUP3 PUSH3 0x2D3 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x346 JUMPI PUSH3 0x345 PUSH3 0x2A4 JUMP JUMPDEST JUMPDEST PUSH3 0x351 DUP3 PUSH3 0x293 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x37E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x361 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x38E JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x3AB PUSH3 0x3A5 DUP5 PUSH3 0x328 JUMP JUMPDEST PUSH3 0x309 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x3CA JUMPI PUSH3 0x3C9 PUSH3 0x28E JUMP JUMPDEST JUMPDEST PUSH3 0x3D7 DUP5 DUP3 DUP6 PUSH3 0x35E JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x3F7 JUMPI PUSH3 0x3F6 PUSH3 0x289 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0x409 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x394 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x43F DUP3 PUSH3 0x412 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x451 DUP2 PUSH3 0x432 JUMP JUMPDEST DUP2 EQ PUSH3 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x471 DUP2 PUSH3 0x446 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x48C DUP2 PUSH3 0x477 JUMP JUMPDEST DUP2 EQ PUSH3 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x4AC DUP2 PUSH3 0x481 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x4D1 JUMPI PUSH3 0x4D0 PUSH3 0x27F JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x4F2 JUMPI PUSH3 0x4F1 PUSH3 0x284 JUMP JUMPDEST JUMPDEST PUSH3 0x500 DUP9 DUP3 DUP10 ADD PUSH3 0x3DF JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x524 JUMPI PUSH3 0x523 PUSH3 0x284 JUMP JUMPDEST JUMPDEST PUSH3 0x532 DUP9 DUP3 DUP10 ADD PUSH3 0x3DF JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x556 JUMPI PUSH3 0x555 PUSH3 0x284 JUMP JUMPDEST JUMPDEST PUSH3 0x564 DUP9 DUP3 DUP10 ADD PUSH3 0x3DF JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH3 0x577 DUP9 DUP3 DUP10 ADD PUSH3 0x460 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH3 0x58A DUP9 DUP3 DUP10 ADD PUSH3 0x49B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x5DF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x5F5 JUMPI PUSH3 0x5F4 PUSH3 0x597 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2E1F DUP1 PUSH3 0x60B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3C9 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x313 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x3CD29AC8 EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x25B JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1CB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x1EC7 JUMP JUMPDEST PUSH2 0x3E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x158 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x45F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x176 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x194 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A6 SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C4 SWAP2 SWAP1 PUSH2 0x20D0 JUMP JUMPDEST PUSH2 0x537 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x64E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E0 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x658 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x21A SWAP2 SWAP1 PUSH2 0x20D0 JUMP JUMPDEST PUSH2 0x6B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22C SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH2 0x871 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x254 SWAP2 SWAP1 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x883 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x275 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x270 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x282 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B2 SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x218D JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH2 0xA6C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FD PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x30A SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x31B PUSH2 0xAA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x328 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x34B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x346 SWAP2 SWAP1 PUSH2 0x21E6 JUMP JUMPDEST PUSH2 0xB3B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x367 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x362 SWAP2 SWAP1 PUSH2 0x235B JUMP JUMPDEST PUSH2 0xB51 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x383 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x37E SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0xBB3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3AE SWAP2 SWAP1 PUSH2 0x23DE JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3DE SWAP2 SWAP1 PUSH2 0x218D JUMP JUMPDEST PUSH2 0xCAF JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x780E9D6300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x458 JUMPI POP PUSH2 0x457 DUP3 PUSH2 0xD32 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x46E SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x49A SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4E7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4BC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4E7 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4CA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FC DUP3 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x542 DUP3 PUSH2 0x8FD JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x5B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A9 SWAP1 PUSH2 0x24F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5D1 PUSH2 0xE5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x600 JUMPI POP PUSH2 0x5FF DUP2 PUSH2 0x5FA PUSH2 0xE5F JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST JUMPDEST PUSH2 0x63F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x636 SWAP1 PUSH2 0x2582 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x649 DUP4 DUP4 PUSH2 0xE67 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x669 PUSH2 0x663 PUSH2 0xE5F JUMP JUMPDEST DUP3 PUSH2 0xF20 JUMP JUMPDEST PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69F SWAP1 PUSH2 0x2614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6B3 DUP4 DUP4 DUP4 PUSH2 0xFB5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C3 DUP4 PUSH2 0x9B5 JUMP JUMPDEST DUP3 LT PUSH2 0x704 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6FB SWAP1 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x817 JUMPI PUSH1 0x0 PUSH2 0x763 PUSH2 0x64E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x813 JUMPI PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7B7 DUP3 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x800 JUMPI PUSH1 0x1 DUP3 PUSH2 0x7DF SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP2 POP DUP5 PUSH1 0x1 DUP4 PUSH2 0x7EF SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SUB PUSH2 0x7FF JUMPI DUP1 SWAP4 POP POP POP POP PUSH2 0x86B JUMP JUMPDEST JUMPDEST DUP1 DUP1 PUSH2 0x80B SWAP1 PUSH2 0x277F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x76D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x879 PUSH2 0x121B JUMP JUMPDEST PUSH2 0x881 PUSH2 0x1299 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x89E DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xB51 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 LT PUSH2 0x8E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8E0 SWAP1 PUSH2 0x2839 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP3 PUSH2 0x8F6 SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 GT ISZERO PUSH2 0x919 JUMPI PUSH2 0x912 DUP3 PUSH2 0x138F JUMP JUMPDEST SWAP1 POP PUSH2 0x9B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9AB JUMPI PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA1C SWAP1 PUSH2 0x28CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA74 PUSH2 0x121B JUMP JUMPDEST PUSH2 0xA7E PUSH1 0x0 PUSH2 0x1440 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0xAB8 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xAE4 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB31 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB06 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB31 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB14 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xB4D PUSH2 0xB46 PUSH2 0xE5F JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1504 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB62 PUSH2 0xB5C PUSH2 0xE5F JUMP JUMPDEST DUP4 PUSH2 0xF20 JUMP JUMPDEST PUSH2 0xBA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB98 SWAP1 PUSH2 0x2614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBAD DUP5 DUP5 DUP5 DUP5 PUSH2 0x1670 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xBBE DUP3 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBC8 PUSH2 0x16CC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xBE8 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xC13 JUMP JUMPDEST DUP1 PUSH2 0xBF2 DUP5 PUSH2 0x175E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC03 SWAP3 SWAP2 SWAP1 PUSH2 0x2927 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xCB7 PUSH2 0x121B JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD26 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD1D SWAP1 PUSH2 0x29BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD2F DUP2 PUSH2 0x1440 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0xDFD JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0xE0D JUMPI POP PUSH2 0xE0C DUP3 PUSH2 0x182C JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE1D DUP2 PUSH2 0x1896 JUMP JUMPDEST PUSH2 0xE5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE53 SWAP1 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xEDA DUP4 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF2C DUP4 PUSH2 0x8FD JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xF6E JUMPI POP PUSH2 0xF6D DUP2 DUP6 PUSH2 0xC1B JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xFAC JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xF94 DUP5 PUSH2 0x4F1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFD5 DUP3 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x102B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1022 SWAP1 PUSH2 0x2ABB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x109A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1091 SWAP1 PUSH2 0x2B4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10A5 DUP4 DUP4 DUP4 PUSH2 0x18CC JUMP JUMPDEST PUSH2 0x10B0 PUSH1 0x0 DUP3 PUSH2 0xE67 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1100 SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1157 SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1216 DUP4 DUP4 DUP4 PUSH2 0x1924 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1223 PUSH2 0xE5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1241 PUSH2 0xA80 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x128E SWAP1 PUSH2 0x2BB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x4 PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH32 0xDEAA91B6123D068F5821D0FB0678463D1A8A6079FE8AF5DE3CE5E896DCF9133D PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0x1385 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1437 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x142E SWAP1 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1569 SWAP1 PUSH2 0x2C25 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1663 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x167B DUP5 DUP5 DUP5 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0x1687 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1929 JUMP JUMPDEST PUSH2 0x16C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16BD SWAP1 PUSH2 0x2CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xB DUP1 SLOAD PUSH2 0x16DB SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1707 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1754 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1729 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1754 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1737 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0x176D DUP5 PUSH2 0x1AAB JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x178C JUMPI PUSH2 0x178B PUSH2 0x2230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x17BE JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x1821 JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x1815 JUMPI PUSH2 0x1814 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x17CC JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 GT ISZERO PUSH2 0x18B2 JUMPI PUSH2 0x18AB DUP3 PUSH2 0x1BFE JUMP JUMPDEST SWAP1 POP PUSH2 0x18C7 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x18C4 JUMPI POP PUSH1 0xA SLOAD DUP3 GT ISZERO JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18D7 DUP4 DUP4 DUP4 PUSH2 0x1C6A JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x191F JUMPI PUSH2 0x1914 DUP4 DUP3 PUSH2 0x1C6F JUMP JUMPDEST PUSH2 0x191E DUP3 DUP3 PUSH2 0x1DDC JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x1A9E JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x196E PUSH2 0xE5F JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1990 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D5B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x19CC JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19C9 SWAP2 SWAP1 PUSH2 0x2DBC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1A4E JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x19FC 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 0x1A01 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x1A46 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A3D SWAP1 PUSH2 0x2CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x1AA3 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1B09 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x1AFF JUMPI PUSH2 0x1AFE PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1B46 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1B3C JUMPI PUSH2 0x1B3B PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1B75 JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1B6B JUMPI PUSH2 0x1B6A PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1B9E JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x1B94 JUMPI PUSH2 0x1B93 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x1BC3 JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x1BB9 JUMPI PUSH2 0x1BB8 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1BE6 JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x1BDC JUMPI PUSH2 0x1BDB PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x1BF5 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1C7C DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0x1C86 SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1D6B JUMPI PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x8 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x7 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DE7 DUP4 PUSH2 0x9B5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x7 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EA4 DUP2 PUSH2 0x1E6F JUMP JUMPDEST DUP2 EQ PUSH2 0x1EAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1EC1 DUP2 PUSH2 0x1E9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EDD JUMPI PUSH2 0x1EDC PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1EEB DUP5 DUP3 DUP6 ADD PUSH2 0x1EB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F09 DUP2 PUSH2 0x1EF4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1F24 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1F00 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F64 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1F49 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1F73 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F95 DUP3 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x1F9F DUP2 DUP6 PUSH2 0x1F35 JUMP JUMPDEST SWAP4 POP PUSH2 0x1FAF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST PUSH2 0x1FB8 DUP2 PUSH2 0x1F79 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FDD DUP2 DUP5 PUSH2 0x1F8A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1FF8 DUP2 PUSH2 0x1FE5 JUMP JUMPDEST DUP2 EQ PUSH2 0x2003 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2015 DUP2 PUSH2 0x1FEF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2031 JUMPI PUSH2 0x2030 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x203F DUP5 DUP3 DUP6 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2073 DUP3 PUSH2 0x2048 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2083 DUP2 PUSH2 0x2068 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x209E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x207A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x20AD DUP2 PUSH2 0x2068 JUMP JUMPDEST DUP2 EQ PUSH2 0x20B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x20CA DUP2 PUSH2 0x20A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20E7 JUMPI PUSH2 0x20E6 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20F5 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2106 DUP6 DUP3 DUP7 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2119 DUP2 PUSH2 0x1FE5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2134 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2110 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2153 JUMPI PUSH2 0x2152 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2161 DUP7 DUP3 DUP8 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2172 DUP7 DUP3 DUP8 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2183 DUP7 DUP3 DUP8 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21A3 JUMPI PUSH2 0x21A2 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x21B1 DUP5 DUP3 DUP6 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x21C3 DUP2 PUSH2 0x1EF4 JUMP JUMPDEST DUP2 EQ PUSH2 0x21CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x21E0 DUP2 PUSH2 0x21BA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21FD JUMPI PUSH2 0x21FC PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x220B DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x221C DUP6 DUP3 DUP7 ADD PUSH2 0x21D1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2268 DUP3 PUSH2 0x1F79 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2287 JUMPI PUSH2 0x2286 PUSH2 0x2230 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x229A PUSH2 0x1E5B JUMP JUMPDEST SWAP1 POP PUSH2 0x22A6 DUP3 DUP3 PUSH2 0x225F JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x22C6 JUMPI PUSH2 0x22C5 PUSH2 0x2230 JUMP JUMPDEST JUMPDEST PUSH2 0x22CF DUP3 PUSH2 0x1F79 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22FE PUSH2 0x22F9 DUP5 PUSH2 0x22AB JUMP JUMPDEST PUSH2 0x2290 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x231A JUMPI PUSH2 0x2319 PUSH2 0x222B JUMP JUMPDEST JUMPDEST PUSH2 0x2325 DUP5 DUP3 DUP6 PUSH2 0x22DC JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2342 JUMPI PUSH2 0x2341 PUSH2 0x2226 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2352 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x22EB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2375 JUMPI PUSH2 0x2374 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2383 DUP8 DUP3 DUP9 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x2394 DUP8 DUP3 DUP9 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x23A5 DUP8 DUP3 DUP9 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x23C6 JUMPI PUSH2 0x23C5 PUSH2 0x1E6A JUMP JUMPDEST JUMPDEST PUSH2 0x23D2 DUP8 DUP3 DUP9 ADD PUSH2 0x232D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23F5 JUMPI PUSH2 0x23F4 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2403 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2414 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2465 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2478 JUMPI PUSH2 0x2477 PUSH2 0x241E JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24DA PUSH1 0x21 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x24E5 DUP3 PUSH2 0x247E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2509 DUP2 PUSH2 0x24CD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x256C PUSH1 0x3E DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2577 DUP3 PUSH2 0x2510 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x259B DUP2 PUSH2 0x255F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25FE PUSH1 0x2E DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2609 DUP3 PUSH2 0x25A2 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x262D DUP2 PUSH2 0x25F1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x455243373231456E756D657261626C653A206F776E657220696E646578206F75 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74206F6620626F756E6473000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2690 PUSH1 0x2B DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x269B DUP3 PUSH2 0x2634 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x26BF DUP2 PUSH2 0x2683 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2700 DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH2 0x270B DUP4 PUSH2 0x1FE5 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x2740 JUMPI PUSH2 0x273F PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2756 DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH2 0x2761 DUP4 PUSH2 0x1FE5 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x2774 JUMPI PUSH2 0x2773 PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x278A DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x27BC JUMPI PUSH2 0x27BB PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x455243373231456E756D657261626C653A20676C6F62616C20696E646578206F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7574206F6620626F756E64730000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2823 PUSH1 0x2C DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x282E DUP3 PUSH2 0x27C7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2852 DUP2 PUSH2 0x2816 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B5 PUSH1 0x29 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x28C0 DUP3 PUSH2 0x2859 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x28E4 DUP2 PUSH2 0x28A8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2901 DUP3 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x290B DUP2 DUP6 PUSH2 0x28EB JUMP JUMPDEST SWAP4 POP PUSH2 0x291B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2933 DUP3 DUP6 PUSH2 0x28F6 JUMP JUMPDEST SWAP2 POP PUSH2 0x293F DUP3 DUP5 PUSH2 0x28F6 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29A7 PUSH1 0x26 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x29B2 DUP3 PUSH2 0x294B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x29D6 DUP2 PUSH2 0x299A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A13 PUSH1 0x18 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A1E DUP3 PUSH2 0x29DD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2A42 DUP2 PUSH2 0x2A06 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA5 PUSH1 0x25 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2AB0 DUP3 PUSH2 0x2A49 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2AD4 DUP2 PUSH2 0x2A98 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B37 PUSH1 0x24 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B42 DUP3 PUSH2 0x2ADB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2B66 DUP2 PUSH2 0x2B2A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BA3 PUSH1 0x20 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BAE DUP3 PUSH2 0x2B6D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2BD2 DUP2 PUSH2 0x2B96 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C0F PUSH1 0x19 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2C1A DUP3 PUSH2 0x2BD9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2C3E DUP2 PUSH2 0x2C02 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CA1 PUSH1 0x32 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2CAC DUP3 PUSH2 0x2C45 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2CD0 DUP2 PUSH2 0x2C94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D2D DUP3 PUSH2 0x2D06 JUMP JUMPDEST PUSH2 0x2D37 DUP2 DUP6 PUSH2 0x2D11 JUMP JUMPDEST SWAP4 POP PUSH2 0x2D47 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST PUSH2 0x2D50 DUP2 PUSH2 0x1F79 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2D70 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x207A JUMP JUMPDEST PUSH2 0x2D7D PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x207A JUMP JUMPDEST PUSH2 0x2D8A PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2110 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x2D9C DUP2 DUP5 PUSH2 0x2D22 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2DB6 DUP2 PUSH2 0x1E9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DD2 JUMPI PUSH2 0x2DD1 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DE0 DUP5 DUP3 DUP6 ADD PUSH2 0x2DA7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0x5D OR 0xFB CALLVALUE MLOAD ADDMOD 0xE1 CREATE2 0xE9 MLOAD CALLDATASIZE 0xD1 SWAP10 0xCB 0x29 ORIGIN 0xD2 DUP2 0xC6 SWAP13 0xC8 AND CALL 0xE 0xE2 0x2F 0xB0 0xBB PUSH16 0x4A2A64736F6C634300080D0033000000 ","sourceMap":"998:1396:13:-:0;;;1502:319;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1649:4;1655:6;936:32:0;955:12;:10;;;:12;;:::i;:::-;936:18;;;:32;;:::i;:::-;2311:5:14;2303;:13;;;;;;;;;;;;:::i;:::-;;2336:7;2326;:17;;;;;;;;;;;;:::i;:::-;;2237:113;;1701:7:13::2;1685:13;:23;;;;;;;;;;;;:::i;:::-;;1776:9;1763:10;:22;;;;1810:6;1791:16;;:25;;;;;;;;;;;;;;;;;;1502:319:::0;;;;;998:1396;;640:96:6;693:7;719:10;712:17;;640:96;:::o;2426:187:0:-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;998:1396:13:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:16:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:126::-;2762:7;2802:42;2795:5;2791:54;2780:65;;2725:126;;;:::o;2857:96::-;2894:7;2923:24;2941:5;2923:24;:::i;:::-;2912:35;;2857:96;;;:::o;2959:122::-;3032:24;3050:5;3032:24;:::i;:::-;3025:5;3022:35;3012:63;;3071:1;3068;3061:12;3012:63;2959:122;:::o;3087:143::-;3144:5;3175:6;3169:13;3160:22;;3191:33;3218:5;3191:33;:::i;:::-;3087:143;;;;:::o;3236:77::-;3273:7;3302:5;3291:16;;3236:77;;;:::o;3319:122::-;3392:24;3410:5;3392:24;:::i;:::-;3385:5;3382:35;3372:63;;3431:1;3428;3421:12;3372:63;3319:122;:::o;3447:143::-;3504:5;3535:6;3529:13;3520:22;;3551:33;3578:5;3551:33;:::i;:::-;3447:143;;;;:::o;3596:1496::-;3732:6;3740;3748;3756;3764;3813:3;3801:9;3792:7;3788:23;3784:33;3781:120;;;3820:79;;:::i;:::-;3781:120;3961:1;3950:9;3946:17;3940:24;3991:18;3983:6;3980:30;3977:117;;;4013:79;;:::i;:::-;3977:117;4118:74;4184:7;4175:6;4164:9;4160:22;4118:74;:::i;:::-;4108:84;;3911:291;4262:2;4251:9;4247:18;4241:25;4293:18;4285:6;4282:30;4279:117;;;4315:79;;:::i;:::-;4279:117;4420:74;4486:7;4477:6;4466:9;4462:22;4420:74;:::i;:::-;4410:84;;4212:292;4564:2;4553:9;4549:18;4543:25;4595:18;4587:6;4584:30;4581:117;;;4617:79;;:::i;:::-;4581:117;4722:74;4788:7;4779:6;4768:9;4764:22;4722:74;:::i;:::-;4712:84;;4514:292;4845:2;4871:64;4927:7;4918:6;4907:9;4903:22;4871:64;:::i;:::-;4861:74;;4816:129;4984:3;5011:64;5067:7;5058:6;5047:9;5043:22;5011:64;:::i;:::-;5001:74;;4955:130;3596:1496;;;;;;;;:::o;5098:180::-;5146:77;5143:1;5136:88;5243:4;5240:1;5233:15;5267:4;5264:1;5257:15;5284:320;5328:6;5365:1;5359:4;5355:12;5345:22;;5412:1;5406:4;5402:12;5433:18;5423:81;;5489:4;5481:6;5477:17;5467:27;;5423:81;5551:2;5543:6;5540:14;5520:18;5517:38;5514:84;;5570:18;;:::i;:::-;5514:84;5335:269;5284:320;;;:::o;998:1396:13:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_addTokenToOwnerEnumeration_3461":{"entryPoint":7644,"id":3461,"parameterSlots":2,"returnSlots":0},"@_afterTokenTransfer_3165":{"entryPoint":6436,"id":3165,"parameterSlots":3,"returnSlots":0},"@_approve_3033":{"entryPoint":3687,"id":3033,"parameterSlots":2,"returnSlots":0},"@_baseURI_2297":{"entryPoint":5836,"id":2297,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_3154":{"entryPoint":7274,"id":3154,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_3431":{"entryPoint":6348,"id":3431,"parameterSlots":3,"returnSlots":0},"@_checkOnERC721Received_3143":{"entryPoint":6441,"id":3143,"parameterSlots":4,"returnSlots":1},"@_checkOwner_54":{"entryPoint":4635,"id":54,"parameterSlots":0,"returnSlots":0},"@_exists_2733":{"entryPoint":7166,"id":2733,"parameterSlots":1,"returnSlots":1},"@_exists_3396":{"entryPoint":6294,"id":3396,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_2766":{"entryPoint":3872,"id":2766,"parameterSlots":2,"returnSlots":1},"@_msgSender_646":{"entryPoint":3679,"id":646,"parameterSlots":0,"returnSlots":1},"@_preMint_2279":{"entryPoint":4761,"id":2279,"parameterSlots":0,"returnSlots":0},"@_removeTokenFromOwnerEnumeration_3524":{"entryPoint":7279,"id":3524,"parameterSlots":2,"returnSlots":0},"@_requireMinted_3079":{"entryPoint":3604,"id":3079,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_2715":{"entryPoint":5744,"id":2715,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_3065":{"entryPoint":5380,"id":3065,"parameterSlots":3,"returnSlots":0},"@_transferOwnership_111":{"entryPoint":5184,"id":111,"parameterSlots":1,"returnSlots":0},"@_transfer_3010":{"entryPoint":4021,"id":3010,"parameterSlots":3,"returnSlots":0},"@approve_2557":{"entryPoint":1335,"id":2557,"parameterSlots":2,"returnSlots":0},"@balanceOf_2419":{"entryPoint":2485,"id":2419,"parameterSlots":1,"returnSlots":1},"@getApproved_2575":{"entryPoint":1265,"id":2575,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_2610":{"entryPoint":3099,"id":2610,"parameterSlots":2,"returnSlots":1},"@log10_1624":{"entryPoint":6827,"id":1624,"parameterSlots":1,"returnSlots":1},"@name_2457":{"entryPoint":1119,"id":2457,"parameterSlots":0,"returnSlots":1},"@ownerOf_2447":{"entryPoint":5007,"id":2447,"parameterSlots":1,"returnSlots":1},"@ownerOf_3366":{"entryPoint":2301,"id":3366,"parameterSlots":1,"returnSlots":1},"@owner_40":{"entryPoint":2688,"id":40,"parameterSlots":0,"returnSlots":1},"@preMint_2288":{"entryPoint":2161,"id":2288,"parameterSlots":0,"returnSlots":0},"@renounceOwnership_68":{"entryPoint":2668,"id":68,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_2656":{"entryPoint":2179,"id":2656,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_2686":{"entryPoint":2897,"id":2686,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_2592":{"entryPoint":2875,"id":2592,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2395":{"entryPoint":3378,"id":2395,"parameterSlots":1,"returnSlots":1},"@supportsInterface_3213":{"entryPoint":997,"id":3213,"parameterSlots":1,"returnSlots":1},"@supportsInterface_908":{"entryPoint":6188,"id":908,"parameterSlots":1,"returnSlots":1},"@symbol_2467":{"entryPoint":2729,"id":2467,"parameterSlots":0,"returnSlots":1},"@toString_715":{"entryPoint":5982,"id":715,"parameterSlots":1,"returnSlots":1},"@tokenByIndex_3324":{"entryPoint":2211,"id":3324,"parameterSlots":1,"returnSlots":1},"@tokenOfOwnerByIndex_3293":{"entryPoint":1720,"id":3293,"parameterSlots":2,"returnSlots":1},"@tokenURI_2506":{"entryPoint":2995,"id":2506,"parameterSlots":1,"returnSlots":1},"@totalSupply_3303":{"entryPoint":1614,"id":3303,"parameterSlots":0,"returnSlots":1},"@transferFrom_2637":{"entryPoint":1624,"id":2637,"parameterSlots":3,"returnSlots":0},"@transferOwnership_91":{"entryPoint":3247,"id":91,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_bytes_memory_ptr":{"entryPoint":8939,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":8379,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":8657,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4":{"entryPoint":7858,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4_fromMemory":{"entryPoint":11687,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr":{"entryPoint":9005,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":8198,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":8589,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":9182,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":8506,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":9051,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":8678,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":8400,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":7879,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":11708,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":8219,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":8314,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":7936,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":11554,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":8074,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":10486,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack":{"entryPoint":9859,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack":{"entryPoint":11412,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":10650,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack":{"entryPoint":10904,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack":{"entryPoint":11050,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack":{"entryPoint":11266,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack":{"entryPoint":10408,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack":{"entryPoint":9567,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":11158,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack":{"entryPoint":10758,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack":{"entryPoint":9421,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack":{"entryPoint":10262,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack":{"entryPoint":9713,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":8464,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":10535,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":8329,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11611,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":7951,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8131,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9894,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11447,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10685,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10939,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11085,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11301,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10443,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9602,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11193,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10793,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9456,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10297,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9748,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":8479,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":8848,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":7771,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":8875,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":11526,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":7978,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":11537,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":7989,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":10475,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":9973,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":10059,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":8296,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":7924,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":7791,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":8264,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":8165,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory":{"entryPoint":8924,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory":{"entryPoint":8006,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":9293,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":8799,"id":null,"parameterSlots":2,"returnSlots":0},"increment_t_uint256":{"entryPoint":10111,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":9926,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":11479,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":9246,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":8752,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":8742,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":8747,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":7786,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":7781,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":8057,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c":{"entryPoint":9780,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e":{"entryPoint":11333,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":10571,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48":{"entryPoint":10825,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4":{"entryPoint":10971,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05":{"entryPoint":11225,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159":{"entryPoint":10329,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304":{"entryPoint":9488,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":11117,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f":{"entryPoint":10717,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942":{"entryPoint":9342,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc":{"entryPoint":10183,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b":{"entryPoint":9634,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":8356,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":8634,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes4":{"entryPoint":7835,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":8175,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:28182:16","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:16","statements":[{"nodeType":"YulAssignment","src":"57:19:16","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:16","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:16"},"nodeType":"YulFunctionCall","src":"67:9:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:16"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:16","type":""}],"src":"7:75:16"},{"body":{"nodeType":"YulBlock","src":"177:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:16"},"nodeType":"YulFunctionCall","src":"187:12:16"},"nodeType":"YulExpressionStatement","src":"187:12:16"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:16"},{"body":{"nodeType":"YulBlock","src":"300:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:16"},"nodeType":"YulFunctionCall","src":"310:12:16"},"nodeType":"YulExpressionStatement","src":"310:12:16"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:16"},{"body":{"nodeType":"YulBlock","src":"378:105:16","statements":[{"nodeType":"YulAssignment","src":"388:89:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"410:66:16","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"399:3:16"},"nodeType":"YulFunctionCall","src":"399:78:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"388:7:16"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"360:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"370:7:16","type":""}],"src":"334:149:16"},{"body":{"nodeType":"YulBlock","src":"531:78:16","statements":[{"body":{"nodeType":"YulBlock","src":"587:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"596:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"599:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"589:6:16"},"nodeType":"YulFunctionCall","src":"589:12:16"},"nodeType":"YulExpressionStatement","src":"589:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"554:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"578:5:16"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"561:16:16"},"nodeType":"YulFunctionCall","src":"561:23:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"551:2:16"},"nodeType":"YulFunctionCall","src":"551:34:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"544:6:16"},"nodeType":"YulFunctionCall","src":"544:42:16"},"nodeType":"YulIf","src":"541:62:16"}]},"name":"validator_revert_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"524:5:16","type":""}],"src":"489:120:16"},{"body":{"nodeType":"YulBlock","src":"666:86:16","statements":[{"nodeType":"YulAssignment","src":"676:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"698:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:16"},"nodeType":"YulFunctionCall","src":"685:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"676:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"740:5:16"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"714:25:16"},"nodeType":"YulFunctionCall","src":"714:32:16"},"nodeType":"YulExpressionStatement","src":"714:32:16"}]},"name":"abi_decode_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"644:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"652:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"660:5:16","type":""}],"src":"615:137:16"},{"body":{"nodeType":"YulBlock","src":"823:262:16","statements":[{"body":{"nodeType":"YulBlock","src":"869:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"871:77:16"},"nodeType":"YulFunctionCall","src":"871:79:16"},"nodeType":"YulExpressionStatement","src":"871:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"844:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"853:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"840:3:16"},"nodeType":"YulFunctionCall","src":"840:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"865:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"836:3:16"},"nodeType":"YulFunctionCall","src":"836:32:16"},"nodeType":"YulIf","src":"833:119:16"},{"nodeType":"YulBlock","src":"962:116:16","statements":[{"nodeType":"YulVariableDeclaration","src":"977:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"991:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"981:6:16","type":""}]},{"nodeType":"YulAssignment","src":"1006:62:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1040:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"1051:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1036:3:16"},"nodeType":"YulFunctionCall","src":"1036:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1060:7:16"}],"functionName":{"name":"abi_decode_t_bytes4","nodeType":"YulIdentifier","src":"1016:19:16"},"nodeType":"YulFunctionCall","src":"1016:52:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1006:6:16"}]}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"793:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"804:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"816:6:16","type":""}],"src":"758:327:16"},{"body":{"nodeType":"YulBlock","src":"1133:48:16","statements":[{"nodeType":"YulAssignment","src":"1143:32:16","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1161:6:16"},"nodeType":"YulFunctionCall","src":"1161:13:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1154:6:16"},"nodeType":"YulFunctionCall","src":"1154:21:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1143:7:16"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1115:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1125:7:16","type":""}],"src":"1091:90:16"},{"body":{"nodeType":"YulBlock","src":"1246:50:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1283:5:16"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"1268:14:16"},"nodeType":"YulFunctionCall","src":"1268:21:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1256:6:16"},"nodeType":"YulFunctionCall","src":"1256:34:16"},"nodeType":"YulExpressionStatement","src":"1256:34:16"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1234:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1241:3:16","type":""}],"src":"1187:109:16"},{"body":{"nodeType":"YulBlock","src":"1394:118:16","statements":[{"nodeType":"YulAssignment","src":"1404:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:16"},"nodeType":"YulFunctionCall","src":"1412:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1404:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1478:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1491:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"1502:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1487:3:16"},"nodeType":"YulFunctionCall","src":"1487:17:16"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"1440:37:16"},"nodeType":"YulFunctionCall","src":"1440:65:16"},"nodeType":"YulExpressionStatement","src":"1440:65:16"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1366:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1378:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1389:4:16","type":""}],"src":"1302:210:16"},{"body":{"nodeType":"YulBlock","src":"1577:40:16","statements":[{"nodeType":"YulAssignment","src":"1588:22:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1604:5:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1598:5:16"},"nodeType":"YulFunctionCall","src":"1598:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1588:6:16"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1560:5:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1570:6:16","type":""}],"src":"1518:99:16"},{"body":{"nodeType":"YulBlock","src":"1719:73:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1736:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"1741:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1729:6:16"},"nodeType":"YulFunctionCall","src":"1729:19:16"},"nodeType":"YulExpressionStatement","src":"1729:19:16"},{"nodeType":"YulAssignment","src":"1757:29:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1776:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"1781:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1772:3:16"},"nodeType":"YulFunctionCall","src":"1772:14:16"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1757:11:16"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1691:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1696:6:16","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1707:11:16","type":""}],"src":"1623:169:16"},{"body":{"nodeType":"YulBlock","src":"1847:258:16","statements":[{"nodeType":"YulVariableDeclaration","src":"1857:10:16","value":{"kind":"number","nodeType":"YulLiteral","src":"1866:1:16","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1861:1:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"1926:63:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1951:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1956:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1947:3:16"},"nodeType":"YulFunctionCall","src":"1947:11:16"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1970:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1975:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:16"},"nodeType":"YulFunctionCall","src":"1966:11:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1960:5:16"},"nodeType":"YulFunctionCall","src":"1960:18:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1940:6:16"},"nodeType":"YulFunctionCall","src":"1940:39:16"},"nodeType":"YulExpressionStatement","src":"1940:39:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1887:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1884:2:16"},"nodeType":"YulFunctionCall","src":"1884:13:16"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1898:19:16","statements":[{"nodeType":"YulAssignment","src":"1900:15:16","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1909:1:16"},{"kind":"number","nodeType":"YulLiteral","src":"1912:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1905:3:16"},"nodeType":"YulFunctionCall","src":"1905:10:16"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1900:1:16"}]}]},"pre":{"nodeType":"YulBlock","src":"1880:3:16","statements":[]},"src":"1876:113:16"},{"body":{"nodeType":"YulBlock","src":"2023:76:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2073:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2078:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2069:3:16"},"nodeType":"YulFunctionCall","src":"2069:16:16"},{"kind":"number","nodeType":"YulLiteral","src":"2087:1:16","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2062:6:16"},"nodeType":"YulFunctionCall","src":"2062:27:16"},"nodeType":"YulExpressionStatement","src":"2062:27:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2004:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"2007:6:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2001:2:16"},"nodeType":"YulFunctionCall","src":"2001:13:16"},"nodeType":"YulIf","src":"1998:101:16"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1829:3:16","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1834:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1839:6:16","type":""}],"src":"1798:307:16"},{"body":{"nodeType":"YulBlock","src":"2159:54:16","statements":[{"nodeType":"YulAssignment","src":"2169:38:16","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2187:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"2194:2:16","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2183:3:16"},"nodeType":"YulFunctionCall","src":"2183:14:16"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2203:2:16","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2199:3:16"},"nodeType":"YulFunctionCall","src":"2199:7:16"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2179:3:16"},"nodeType":"YulFunctionCall","src":"2179:28:16"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2169:6:16"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2142:5:16","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"2152:6:16","type":""}],"src":"2111:102:16"},{"body":{"nodeType":"YulBlock","src":"2311:272:16","statements":[{"nodeType":"YulVariableDeclaration","src":"2321:53:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2368:5:16"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2335:32:16"},"nodeType":"YulFunctionCall","src":"2335:39:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2325:6:16","type":""}]},{"nodeType":"YulAssignment","src":"2383:78:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2449:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2454:6:16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2390:58:16"},"nodeType":"YulFunctionCall","src":"2390:71:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2383:3:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2496:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"2503:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:16"},"nodeType":"YulFunctionCall","src":"2492:16:16"},{"name":"pos","nodeType":"YulIdentifier","src":"2510:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2515:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2470:21:16"},"nodeType":"YulFunctionCall","src":"2470:52:16"},"nodeType":"YulExpressionStatement","src":"2470:52:16"},{"nodeType":"YulAssignment","src":"2531:46:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2542:3:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2569:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2547:21:16"},"nodeType":"YulFunctionCall","src":"2547:29:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2538:3:16"},"nodeType":"YulFunctionCall","src":"2538:39:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2531:3:16"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2292:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2299:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2307:3:16","type":""}],"src":"2219:364:16"},{"body":{"nodeType":"YulBlock","src":"2707:195:16","statements":[{"nodeType":"YulAssignment","src":"2717:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2729:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"2740:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2725:3:16"},"nodeType":"YulFunctionCall","src":"2725:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2717:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2764:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"2775:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2760:3:16"},"nodeType":"YulFunctionCall","src":"2760:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2783:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"2789:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2779:3:16"},"nodeType":"YulFunctionCall","src":"2779:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2753:6:16"},"nodeType":"YulFunctionCall","src":"2753:47:16"},"nodeType":"YulExpressionStatement","src":"2753:47:16"},{"nodeType":"YulAssignment","src":"2809:86:16","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2881:6:16"},{"name":"tail","nodeType":"YulIdentifier","src":"2890:4:16"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2817:63:16"},"nodeType":"YulFunctionCall","src":"2817:78:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2809:4:16"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2679:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2691:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2702:4:16","type":""}],"src":"2589:313:16"},{"body":{"nodeType":"YulBlock","src":"2953:32:16","statements":[{"nodeType":"YulAssignment","src":"2963:16:16","value":{"name":"value","nodeType":"YulIdentifier","src":"2974:5:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2963:7:16"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2935:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2945:7:16","type":""}],"src":"2908:77:16"},{"body":{"nodeType":"YulBlock","src":"3034:79:16","statements":[{"body":{"nodeType":"YulBlock","src":"3091:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3100:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3103:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3093:6:16"},"nodeType":"YulFunctionCall","src":"3093:12:16"},"nodeType":"YulExpressionStatement","src":"3093:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3057:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3082:5:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3064:17:16"},"nodeType":"YulFunctionCall","src":"3064:24:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3054:2:16"},"nodeType":"YulFunctionCall","src":"3054:35:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3047:6:16"},"nodeType":"YulFunctionCall","src":"3047:43:16"},"nodeType":"YulIf","src":"3044:63:16"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3027:5:16","type":""}],"src":"2991:122:16"},{"body":{"nodeType":"YulBlock","src":"3171:87:16","statements":[{"nodeType":"YulAssignment","src":"3181:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3203:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3190:12:16"},"nodeType":"YulFunctionCall","src":"3190:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3181:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3246:5:16"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"3219:26:16"},"nodeType":"YulFunctionCall","src":"3219:33:16"},"nodeType":"YulExpressionStatement","src":"3219:33:16"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3149:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"3157:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3165:5:16","type":""}],"src":"3119:139:16"},{"body":{"nodeType":"YulBlock","src":"3330:263:16","statements":[{"body":{"nodeType":"YulBlock","src":"3376:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3378:77:16"},"nodeType":"YulFunctionCall","src":"3378:79:16"},"nodeType":"YulExpressionStatement","src":"3378:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3351:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"3360:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3347:3:16"},"nodeType":"YulFunctionCall","src":"3347:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"3372:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3343:3:16"},"nodeType":"YulFunctionCall","src":"3343:32:16"},"nodeType":"YulIf","src":"3340:119:16"},{"nodeType":"YulBlock","src":"3469:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"3484:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"3498:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3488:6:16","type":""}]},{"nodeType":"YulAssignment","src":"3513:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"3559:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3544:3:16"},"nodeType":"YulFunctionCall","src":"3544:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3568:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3523:20:16"},"nodeType":"YulFunctionCall","src":"3523:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3513:6:16"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3300:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3311:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3323:6:16","type":""}],"src":"3264:329:16"},{"body":{"nodeType":"YulBlock","src":"3644:81:16","statements":[{"nodeType":"YulAssignment","src":"3654:65:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3669:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"3676:42:16","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3665:3:16"},"nodeType":"YulFunctionCall","src":"3665:54:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3654:7:16"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3626:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3636:7:16","type":""}],"src":"3599:126:16"},{"body":{"nodeType":"YulBlock","src":"3776:51:16","statements":[{"nodeType":"YulAssignment","src":"3786:35:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3815:5:16"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"3797:17:16"},"nodeType":"YulFunctionCall","src":"3797:24:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3786:7:16"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3758:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3768:7:16","type":""}],"src":"3731:96:16"},{"body":{"nodeType":"YulBlock","src":"3898:53:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3915:3:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3938:5:16"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"3920:17:16"},"nodeType":"YulFunctionCall","src":"3920:24:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3908:6:16"},"nodeType":"YulFunctionCall","src":"3908:37:16"},"nodeType":"YulExpressionStatement","src":"3908:37:16"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3886:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3893:3:16","type":""}],"src":"3833:118:16"},{"body":{"nodeType":"YulBlock","src":"4055:124:16","statements":[{"nodeType":"YulAssignment","src":"4065:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4077:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"4088:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4073:3:16"},"nodeType":"YulFunctionCall","src":"4073:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4065:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4145:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4158:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"4169:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4154:3:16"},"nodeType":"YulFunctionCall","src":"4154:17:16"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"4101:43:16"},"nodeType":"YulFunctionCall","src":"4101:71:16"},"nodeType":"YulExpressionStatement","src":"4101:71:16"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4027:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4039:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4050:4:16","type":""}],"src":"3957:222:16"},{"body":{"nodeType":"YulBlock","src":"4228:79:16","statements":[{"body":{"nodeType":"YulBlock","src":"4285:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4294:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4297:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4287:6:16"},"nodeType":"YulFunctionCall","src":"4287:12:16"},"nodeType":"YulExpressionStatement","src":"4287:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4251:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4276:5:16"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"4258:17:16"},"nodeType":"YulFunctionCall","src":"4258:24:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4248:2:16"},"nodeType":"YulFunctionCall","src":"4248:35:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4241:6:16"},"nodeType":"YulFunctionCall","src":"4241:43:16"},"nodeType":"YulIf","src":"4238:63:16"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4221:5:16","type":""}],"src":"4185:122:16"},{"body":{"nodeType":"YulBlock","src":"4365:87:16","statements":[{"nodeType":"YulAssignment","src":"4375:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4397:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4384:12:16"},"nodeType":"YulFunctionCall","src":"4384:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4375:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4440:5:16"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4413:26:16"},"nodeType":"YulFunctionCall","src":"4413:33:16"},"nodeType":"YulExpressionStatement","src":"4413:33:16"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4343:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"4351:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4359:5:16","type":""}],"src":"4313:139:16"},{"body":{"nodeType":"YulBlock","src":"4541:391:16","statements":[{"body":{"nodeType":"YulBlock","src":"4587:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4589:77:16"},"nodeType":"YulFunctionCall","src":"4589:79:16"},"nodeType":"YulExpressionStatement","src":"4589:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4562:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4558:3:16"},"nodeType":"YulFunctionCall","src":"4558:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"4583:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4554:3:16"},"nodeType":"YulFunctionCall","src":"4554:32:16"},"nodeType":"YulIf","src":"4551:119:16"},{"nodeType":"YulBlock","src":"4680:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4695:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"4709:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4699:6:16","type":""}]},{"nodeType":"YulAssignment","src":"4724:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4759:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"4770:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4755:3:16"},"nodeType":"YulFunctionCall","src":"4755:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4779:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4734:20:16"},"nodeType":"YulFunctionCall","src":"4734:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4724:6:16"}]}]},{"nodeType":"YulBlock","src":"4807:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4822:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"4836:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4826:6:16","type":""}]},{"nodeType":"YulAssignment","src":"4852:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"4898:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4883:3:16"},"nodeType":"YulFunctionCall","src":"4883:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4907:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4862:20:16"},"nodeType":"YulFunctionCall","src":"4862:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4852:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4503:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4514:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4526:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4534:6:16","type":""}],"src":"4458:474:16"},{"body":{"nodeType":"YulBlock","src":"5003:53:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5020:3:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5043:5:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5025:17:16"},"nodeType":"YulFunctionCall","src":"5025:24:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5013:6:16"},"nodeType":"YulFunctionCall","src":"5013:37:16"},"nodeType":"YulExpressionStatement","src":"5013:37:16"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4991:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4998:3:16","type":""}],"src":"4938:118:16"},{"body":{"nodeType":"YulBlock","src":"5160:124:16","statements":[{"nodeType":"YulAssignment","src":"5170:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5182:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"5193:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5178:3:16"},"nodeType":"YulFunctionCall","src":"5178:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5170:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5250:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5263:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"5274:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5259:3:16"},"nodeType":"YulFunctionCall","src":"5259:17:16"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5206:43:16"},"nodeType":"YulFunctionCall","src":"5206:71:16"},"nodeType":"YulExpressionStatement","src":"5206:71:16"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5132:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5144:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5155:4:16","type":""}],"src":"5062:222:16"},{"body":{"nodeType":"YulBlock","src":"5390:519:16","statements":[{"body":{"nodeType":"YulBlock","src":"5436:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5438:77:16"},"nodeType":"YulFunctionCall","src":"5438:79:16"},"nodeType":"YulExpressionStatement","src":"5438:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5411:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"5420:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5407:3:16"},"nodeType":"YulFunctionCall","src":"5407:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"5432:2:16","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5403:3:16"},"nodeType":"YulFunctionCall","src":"5403:32:16"},"nodeType":"YulIf","src":"5400:119:16"},{"nodeType":"YulBlock","src":"5529:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5544:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5558:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5548:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5573:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5608:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5619:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5604:3:16"},"nodeType":"YulFunctionCall","src":"5604:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5628:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5583:20:16"},"nodeType":"YulFunctionCall","src":"5583:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5573:6:16"}]}]},{"nodeType":"YulBlock","src":"5656:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5671:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5685:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5675:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5701:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5736:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5747:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5732:3:16"},"nodeType":"YulFunctionCall","src":"5732:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5756:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5711:20:16"},"nodeType":"YulFunctionCall","src":"5711:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5701:6:16"}]}]},{"nodeType":"YulBlock","src":"5784:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5799:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5813:2:16","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5803:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5829:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5864:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5875:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5860:3:16"},"nodeType":"YulFunctionCall","src":"5860:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5884:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5839:20:16"},"nodeType":"YulFunctionCall","src":"5839:53:16"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5829:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5344:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5355:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5367:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5375:6:16","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5383:6:16","type":""}],"src":"5290:619:16"},{"body":{"nodeType":"YulBlock","src":"5981:263:16","statements":[{"body":{"nodeType":"YulBlock","src":"6027:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6029:77:16"},"nodeType":"YulFunctionCall","src":"6029:79:16"},"nodeType":"YulExpressionStatement","src":"6029:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6002:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"6011:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5998:3:16"},"nodeType":"YulFunctionCall","src":"5998:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"6023:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5994:3:16"},"nodeType":"YulFunctionCall","src":"5994:32:16"},"nodeType":"YulIf","src":"5991:119:16"},{"nodeType":"YulBlock","src":"6120:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"6135:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"6149:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6139:6:16","type":""}]},{"nodeType":"YulAssignment","src":"6164:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6199:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"6210:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6195:3:16"},"nodeType":"YulFunctionCall","src":"6195:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6219:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6174:20:16"},"nodeType":"YulFunctionCall","src":"6174:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6164:6:16"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5951:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5962:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5974:6:16","type":""}],"src":"5915:329:16"},{"body":{"nodeType":"YulBlock","src":"6290:76:16","statements":[{"body":{"nodeType":"YulBlock","src":"6344:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6353:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6356:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6346:6:16"},"nodeType":"YulFunctionCall","src":"6346:12:16"},"nodeType":"YulExpressionStatement","src":"6346:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6313:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6335:5:16"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6320:14:16"},"nodeType":"YulFunctionCall","src":"6320:21:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6310:2:16"},"nodeType":"YulFunctionCall","src":"6310:32:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6303:6:16"},"nodeType":"YulFunctionCall","src":"6303:40:16"},"nodeType":"YulIf","src":"6300:60:16"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6283:5:16","type":""}],"src":"6250:116:16"},{"body":{"nodeType":"YulBlock","src":"6421:84:16","statements":[{"nodeType":"YulAssignment","src":"6431:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6453:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6440:12:16"},"nodeType":"YulFunctionCall","src":"6440:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6431:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6493:5:16"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6469:23:16"},"nodeType":"YulFunctionCall","src":"6469:30:16"},"nodeType":"YulExpressionStatement","src":"6469:30:16"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6399:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"6407:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6415:5:16","type":""}],"src":"6372:133:16"},{"body":{"nodeType":"YulBlock","src":"6591:388:16","statements":[{"body":{"nodeType":"YulBlock","src":"6637:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6639:77:16"},"nodeType":"YulFunctionCall","src":"6639:79:16"},"nodeType":"YulExpressionStatement","src":"6639:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6612:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"6621:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6608:3:16"},"nodeType":"YulFunctionCall","src":"6608:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"6633:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6604:3:16"},"nodeType":"YulFunctionCall","src":"6604:32:16"},"nodeType":"YulIf","src":"6601:119:16"},{"nodeType":"YulBlock","src":"6730:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"6745:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"6759:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6749:6:16","type":""}]},{"nodeType":"YulAssignment","src":"6774:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6809:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"6820:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6805:3:16"},"nodeType":"YulFunctionCall","src":"6805:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6829:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6784:20:16"},"nodeType":"YulFunctionCall","src":"6784:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6774:6:16"}]}]},{"nodeType":"YulBlock","src":"6857:115:16","statements":[{"nodeType":"YulVariableDeclaration","src":"6872:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"6886:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6876:6:16","type":""}]},{"nodeType":"YulAssignment","src":"6902:60:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6934:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"6945:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6930:3:16"},"nodeType":"YulFunctionCall","src":"6930:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6954:7:16"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"6912:17:16"},"nodeType":"YulFunctionCall","src":"6912:50:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6902:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6553:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6564:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6576:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6584:6:16","type":""}],"src":"6511:468:16"},{"body":{"nodeType":"YulBlock","src":"7074:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7091:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7094:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7084:6:16"},"nodeType":"YulFunctionCall","src":"7084:12:16"},"nodeType":"YulExpressionStatement","src":"7084:12:16"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"6985:117:16"},{"body":{"nodeType":"YulBlock","src":"7197:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7214:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7217:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7207:6:16"},"nodeType":"YulFunctionCall","src":"7207:12:16"},"nodeType":"YulExpressionStatement","src":"7207:12:16"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"7108:117:16"},{"body":{"nodeType":"YulBlock","src":"7259:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7276:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7279:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7269:6:16"},"nodeType":"YulFunctionCall","src":"7269:88:16"},"nodeType":"YulExpressionStatement","src":"7269:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7373:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7376:4:16","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7366:6:16"},"nodeType":"YulFunctionCall","src":"7366:15:16"},"nodeType":"YulExpressionStatement","src":"7366:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7397:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7400:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7390:6:16"},"nodeType":"YulFunctionCall","src":"7390:15:16"},"nodeType":"YulExpressionStatement","src":"7390:15:16"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7231:180:16"},{"body":{"nodeType":"YulBlock","src":"7460:238:16","statements":[{"nodeType":"YulVariableDeclaration","src":"7470:58:16","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7492:6:16"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7522:4:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7500:21:16"},"nodeType":"YulFunctionCall","src":"7500:27:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7488:3:16"},"nodeType":"YulFunctionCall","src":"7488:40:16"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7474:10:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"7639:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7641:16:16"},"nodeType":"YulFunctionCall","src":"7641:18:16"},"nodeType":"YulExpressionStatement","src":"7641:18:16"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7582:10:16"},{"kind":"number","nodeType":"YulLiteral","src":"7594:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7579:2:16"},"nodeType":"YulFunctionCall","src":"7579:34:16"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7618:10:16"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7630:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7615:2:16"},"nodeType":"YulFunctionCall","src":"7615:22:16"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7576:2:16"},"nodeType":"YulFunctionCall","src":"7576:62:16"},"nodeType":"YulIf","src":"7573:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7677:2:16","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7681:10:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7670:6:16"},"nodeType":"YulFunctionCall","src":"7670:22:16"},"nodeType":"YulExpressionStatement","src":"7670:22:16"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7446:6:16","type":""},{"name":"size","nodeType":"YulTypedName","src":"7454:4:16","type":""}],"src":"7417:281:16"},{"body":{"nodeType":"YulBlock","src":"7745:88:16","statements":[{"nodeType":"YulAssignment","src":"7755:30:16","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7765:18:16"},"nodeType":"YulFunctionCall","src":"7765:20:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7755:6:16"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7814:6:16"},{"name":"size","nodeType":"YulIdentifier","src":"7822:4:16"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7794:19:16"},"nodeType":"YulFunctionCall","src":"7794:33:16"},"nodeType":"YulExpressionStatement","src":"7794:33:16"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7729:4:16","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7738:6:16","type":""}],"src":"7704:129:16"},{"body":{"nodeType":"YulBlock","src":"7905:241:16","statements":[{"body":{"nodeType":"YulBlock","src":"8010:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"8012:16:16"},"nodeType":"YulFunctionCall","src":"8012:18:16"},"nodeType":"YulExpressionStatement","src":"8012:18:16"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7982:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"7990:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7979:2:16"},"nodeType":"YulFunctionCall","src":"7979:30:16"},"nodeType":"YulIf","src":"7976:56:16"},{"nodeType":"YulAssignment","src":"8042:37:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8072:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8050:21:16"},"nodeType":"YulFunctionCall","src":"8050:29:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8042:4:16"}]},{"nodeType":"YulAssignment","src":"8116:23:16","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"8128:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"8134:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8124:3:16"},"nodeType":"YulFunctionCall","src":"8124:15:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8116:4:16"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7889:6:16","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7900:4:16","type":""}],"src":"7839:307:16"},{"body":{"nodeType":"YulBlock","src":"8203:103:16","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8226:3:16"},{"name":"src","nodeType":"YulIdentifier","src":"8231:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8236:6:16"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8213:12:16"},"nodeType":"YulFunctionCall","src":"8213:30:16"},"nodeType":"YulExpressionStatement","src":"8213:30:16"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8284:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8289:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8280:3:16"},"nodeType":"YulFunctionCall","src":"8280:16:16"},{"kind":"number","nodeType":"YulLiteral","src":"8298:1:16","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8273:6:16"},"nodeType":"YulFunctionCall","src":"8273:27:16"},"nodeType":"YulExpressionStatement","src":"8273:27:16"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8185:3:16","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8190:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"8195:6:16","type":""}],"src":"8152:154:16"},{"body":{"nodeType":"YulBlock","src":"8395:327:16","statements":[{"nodeType":"YulAssignment","src":"8405:74:16","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8471:6:16"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8430:40:16"},"nodeType":"YulFunctionCall","src":"8430:48:16"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8414:15:16"},"nodeType":"YulFunctionCall","src":"8414:65:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8405:5:16"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8495:5:16"},{"name":"length","nodeType":"YulIdentifier","src":"8502:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8488:6:16"},"nodeType":"YulFunctionCall","src":"8488:21:16"},"nodeType":"YulExpressionStatement","src":"8488:21:16"},{"nodeType":"YulVariableDeclaration","src":"8518:27:16","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8533:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"8540:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8529:3:16"},"nodeType":"YulFunctionCall","src":"8529:16:16"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8522:3:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"8583:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"8585:77:16"},"nodeType":"YulFunctionCall","src":"8585:79:16"},"nodeType":"YulExpressionStatement","src":"8585:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8564:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8569:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8560:3:16"},"nodeType":"YulFunctionCall","src":"8560:16:16"},{"name":"end","nodeType":"YulIdentifier","src":"8578:3:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8557:2:16"},"nodeType":"YulFunctionCall","src":"8557:25:16"},"nodeType":"YulIf","src":"8554:112:16"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8699:3:16"},{"name":"dst","nodeType":"YulIdentifier","src":"8704:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8709:6:16"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"8675:23:16"},"nodeType":"YulFunctionCall","src":"8675:41:16"},"nodeType":"YulExpressionStatement","src":"8675:41:16"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8368:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"8373:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"8381:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8389:5:16","type":""}],"src":"8312:410:16"},{"body":{"nodeType":"YulBlock","src":"8802:277:16","statements":[{"body":{"nodeType":"YulBlock","src":"8851:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"8853:77:16"},"nodeType":"YulFunctionCall","src":"8853:79:16"},"nodeType":"YulExpressionStatement","src":"8853:79:16"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8830:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"8838:4:16","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8826:3:16"},"nodeType":"YulFunctionCall","src":"8826:17:16"},{"name":"end","nodeType":"YulIdentifier","src":"8845:3:16"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8822:3:16"},"nodeType":"YulFunctionCall","src":"8822:27:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8815:6:16"},"nodeType":"YulFunctionCall","src":"8815:35:16"},"nodeType":"YulIf","src":"8812:122:16"},{"nodeType":"YulVariableDeclaration","src":"8943:34:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8970:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8957:12:16"},"nodeType":"YulFunctionCall","src":"8957:20:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8947:6:16","type":""}]},{"nodeType":"YulAssignment","src":"8986:87:16","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9046:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"9054:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9042:3:16"},"nodeType":"YulFunctionCall","src":"9042:17:16"},{"name":"length","nodeType":"YulIdentifier","src":"9061:6:16"},{"name":"end","nodeType":"YulIdentifier","src":"9069:3:16"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8995:46:16"},"nodeType":"YulFunctionCall","src":"8995:78:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8986:5:16"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8780:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"8788:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8796:5:16","type":""}],"src":"8741:338:16"},{"body":{"nodeType":"YulBlock","src":"9211:817:16","statements":[{"body":{"nodeType":"YulBlock","src":"9258:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9260:77:16"},"nodeType":"YulFunctionCall","src":"9260:79:16"},"nodeType":"YulExpressionStatement","src":"9260:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9232:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"9241:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9228:3:16"},"nodeType":"YulFunctionCall","src":"9228:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"9253:3:16","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9224:3:16"},"nodeType":"YulFunctionCall","src":"9224:33:16"},"nodeType":"YulIf","src":"9221:120:16"},{"nodeType":"YulBlock","src":"9351:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9366:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"9380:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9370:6:16","type":""}]},{"nodeType":"YulAssignment","src":"9395:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9430:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9441:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9426:3:16"},"nodeType":"YulFunctionCall","src":"9426:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9450:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9405:20:16"},"nodeType":"YulFunctionCall","src":"9405:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9395:6:16"}]}]},{"nodeType":"YulBlock","src":"9478:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9493:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"9507:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9497:6:16","type":""}]},{"nodeType":"YulAssignment","src":"9523:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9558:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9569:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9554:3:16"},"nodeType":"YulFunctionCall","src":"9554:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9578:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9533:20:16"},"nodeType":"YulFunctionCall","src":"9533:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9523:6:16"}]}]},{"nodeType":"YulBlock","src":"9606:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9621:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"9635:2:16","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9625:6:16","type":""}]},{"nodeType":"YulAssignment","src":"9651:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9686:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9697:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9682:3:16"},"nodeType":"YulFunctionCall","src":"9682:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9706:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"9661:20:16"},"nodeType":"YulFunctionCall","src":"9661:53:16"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9651:6:16"}]}]},{"nodeType":"YulBlock","src":"9734:287:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9749:46:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9780:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"9791:2:16","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9776:3:16"},"nodeType":"YulFunctionCall","src":"9776:18:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9763:12:16"},"nodeType":"YulFunctionCall","src":"9763:32:16"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9753:6:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"9842:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9844:77:16"},"nodeType":"YulFunctionCall","src":"9844:79:16"},"nodeType":"YulExpressionStatement","src":"9844:79:16"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9814:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"9822:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9811:2:16"},"nodeType":"YulFunctionCall","src":"9811:30:16"},"nodeType":"YulIf","src":"9808:117:16"},{"nodeType":"YulAssignment","src":"9939:72:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9983:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9994:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:16"},"nodeType":"YulFunctionCall","src":"9979:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10003:7:16"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"9949:29:16"},"nodeType":"YulFunctionCall","src":"9949:62:16"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9939:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9157:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9168:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9180:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9188:6:16","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9196:6:16","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9204:6:16","type":""}],"src":"9085:943:16"},{"body":{"nodeType":"YulBlock","src":"10117:391:16","statements":[{"body":{"nodeType":"YulBlock","src":"10163:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10165:77:16"},"nodeType":"YulFunctionCall","src":"10165:79:16"},"nodeType":"YulExpressionStatement","src":"10165:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10138:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"10147:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10134:3:16"},"nodeType":"YulFunctionCall","src":"10134:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"10159:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10130:3:16"},"nodeType":"YulFunctionCall","src":"10130:32:16"},"nodeType":"YulIf","src":"10127:119:16"},{"nodeType":"YulBlock","src":"10256:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"10271:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"10285:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10275:6:16","type":""}]},{"nodeType":"YulAssignment","src":"10300:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10335:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"10346:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10331:3:16"},"nodeType":"YulFunctionCall","src":"10331:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10355:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10310:20:16"},"nodeType":"YulFunctionCall","src":"10310:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10300:6:16"}]}]},{"nodeType":"YulBlock","src":"10383:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"10398:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"10412:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10402:6:16","type":""}]},{"nodeType":"YulAssignment","src":"10428:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10463:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"10474:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10459:3:16"},"nodeType":"YulFunctionCall","src":"10459:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10483:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10438:20:16"},"nodeType":"YulFunctionCall","src":"10438:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10428:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10079:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10090:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10102:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10110:6:16","type":""}],"src":"10034:474:16"},{"body":{"nodeType":"YulBlock","src":"10542:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10559:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10562:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10552:6:16"},"nodeType":"YulFunctionCall","src":"10552:88:16"},"nodeType":"YulExpressionStatement","src":"10552:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10656:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10659:4:16","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10649:6:16"},"nodeType":"YulFunctionCall","src":"10649:15:16"},"nodeType":"YulExpressionStatement","src":"10649:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10680:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10683:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10673:6:16"},"nodeType":"YulFunctionCall","src":"10673:15:16"},"nodeType":"YulExpressionStatement","src":"10673:15:16"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"10514:180:16"},{"body":{"nodeType":"YulBlock","src":"10751:269:16","statements":[{"nodeType":"YulAssignment","src":"10761:22:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10775:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"10781:1:16","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10771:3:16"},"nodeType":"YulFunctionCall","src":"10771:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10761:6:16"}]},{"nodeType":"YulVariableDeclaration","src":"10792:38:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10822:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"10828:1:16","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10818:3:16"},"nodeType":"YulFunctionCall","src":"10818:12:16"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"10796:18:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"10869:51:16","statements":[{"nodeType":"YulAssignment","src":"10883:27:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10897:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"10905:4:16","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10893:3:16"},"nodeType":"YulFunctionCall","src":"10893:17:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10883:6:16"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10849:18:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10842:6:16"},"nodeType":"YulFunctionCall","src":"10842:26:16"},"nodeType":"YulIf","src":"10839:81:16"},{"body":{"nodeType":"YulBlock","src":"10972:42:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"10986:16:16"},"nodeType":"YulFunctionCall","src":"10986:18:16"},"nodeType":"YulExpressionStatement","src":"10986:18:16"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10936:18:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10959:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"10967:2:16","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10956:2:16"},"nodeType":"YulFunctionCall","src":"10956:14:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10933:2:16"},"nodeType":"YulFunctionCall","src":"10933:38:16"},"nodeType":"YulIf","src":"10930:84:16"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"10735:4:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"10744:6:16","type":""}],"src":"10700:320:16"},{"body":{"nodeType":"YulBlock","src":"11132:114:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11154:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"11162:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11150:3:16"},"nodeType":"YulFunctionCall","src":"11150:14:16"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"11166:34:16","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11143:6:16"},"nodeType":"YulFunctionCall","src":"11143:58:16"},"nodeType":"YulExpressionStatement","src":"11143:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11222:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"11230:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11218:3:16"},"nodeType":"YulFunctionCall","src":"11218:15:16"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"11235:3:16","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11211:6:16"},"nodeType":"YulFunctionCall","src":"11211:28:16"},"nodeType":"YulExpressionStatement","src":"11211:28:16"}]},"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11124:6:16","type":""}],"src":"11026:220:16"},{"body":{"nodeType":"YulBlock","src":"11398:220:16","statements":[{"nodeType":"YulAssignment","src":"11408:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11474:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"11479:2:16","type":"","value":"33"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11415:58:16"},"nodeType":"YulFunctionCall","src":"11415:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11408:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11580:3:16"}],"functionName":{"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulIdentifier","src":"11491:88:16"},"nodeType":"YulFunctionCall","src":"11491:93:16"},"nodeType":"YulExpressionStatement","src":"11491:93:16"},{"nodeType":"YulAssignment","src":"11593:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11604:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"11609:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11600:3:16"},"nodeType":"YulFunctionCall","src":"11600:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11593:3:16"}]}]},"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11386:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11394:3:16","type":""}],"src":"11252:366:16"},{"body":{"nodeType":"YulBlock","src":"11795:248:16","statements":[{"nodeType":"YulAssignment","src":"11805:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11817:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"11828:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11813:3:16"},"nodeType":"YulFunctionCall","src":"11813:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11805:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11852:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"11863:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11848:3:16"},"nodeType":"YulFunctionCall","src":"11848:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11871:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"11877:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11867:3:16"},"nodeType":"YulFunctionCall","src":"11867:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11841:6:16"},"nodeType":"YulFunctionCall","src":"11841:47:16"},"nodeType":"YulExpressionStatement","src":"11841:47:16"},{"nodeType":"YulAssignment","src":"11897:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12031:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11905:124:16"},"nodeType":"YulFunctionCall","src":"11905:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11897:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11775:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11790:4:16","type":""}],"src":"11624:419:16"},{"body":{"nodeType":"YulBlock","src":"12155:143:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12177:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"12185:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12173:3:16"},"nodeType":"YulFunctionCall","src":"12173:14:16"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"12189:34:16","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12166:6:16"},"nodeType":"YulFunctionCall","src":"12166:58:16"},"nodeType":"YulExpressionStatement","src":"12166:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12245:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"12253:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12241:3:16"},"nodeType":"YulFunctionCall","src":"12241:15:16"},{"hexValue":"6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"12258:32:16","type":"","value":"ken owner nor approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12234:6:16"},"nodeType":"YulFunctionCall","src":"12234:57:16"},"nodeType":"YulExpressionStatement","src":"12234:57:16"}]},"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12147:6:16","type":""}],"src":"12049:249:16"},{"body":{"nodeType":"YulBlock","src":"12450:220:16","statements":[{"nodeType":"YulAssignment","src":"12460:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12526:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"12531:2:16","type":"","value":"62"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12467:58:16"},"nodeType":"YulFunctionCall","src":"12467:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12460:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12632:3:16"}],"functionName":{"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulIdentifier","src":"12543:88:16"},"nodeType":"YulFunctionCall","src":"12543:93:16"},"nodeType":"YulExpressionStatement","src":"12543:93:16"},{"nodeType":"YulAssignment","src":"12645:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12656:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"12661:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12652:3:16"},"nodeType":"YulFunctionCall","src":"12652:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12645:3:16"}]}]},"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12438:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12446:3:16","type":""}],"src":"12304:366:16"},{"body":{"nodeType":"YulBlock","src":"12847:248:16","statements":[{"nodeType":"YulAssignment","src":"12857:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12869:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"12880:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12865:3:16"},"nodeType":"YulFunctionCall","src":"12865:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12857:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12904:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"12915:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12900:3:16"},"nodeType":"YulFunctionCall","src":"12900:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12923:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"12929:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12919:3:16"},"nodeType":"YulFunctionCall","src":"12919:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12893:6:16"},"nodeType":"YulFunctionCall","src":"12893:47:16"},"nodeType":"YulExpressionStatement","src":"12893:47:16"},{"nodeType":"YulAssignment","src":"12949:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13083:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12957:124:16"},"nodeType":"YulFunctionCall","src":"12957:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12949:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12827:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12842:4:16","type":""}],"src":"12676:419:16"},{"body":{"nodeType":"YulBlock","src":"13207:127:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13229:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"13237:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13225:3:16"},"nodeType":"YulFunctionCall","src":"13225:14:16"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"13241:34:16","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13218:6:16"},"nodeType":"YulFunctionCall","src":"13218:58:16"},"nodeType":"YulExpressionStatement","src":"13218:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13297:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"13305:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13293:3:16"},"nodeType":"YulFunctionCall","src":"13293:15:16"},{"hexValue":"72206e6f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"13310:16:16","type":"","value":"r nor approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13286:6:16"},"nodeType":"YulFunctionCall","src":"13286:41:16"},"nodeType":"YulExpressionStatement","src":"13286:41:16"}]},"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"13199:6:16","type":""}],"src":"13101:233:16"},{"body":{"nodeType":"YulBlock","src":"13486:220:16","statements":[{"nodeType":"YulAssignment","src":"13496:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13562:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"13567:2:16","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13503:58:16"},"nodeType":"YulFunctionCall","src":"13503:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13496:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13668:3:16"}],"functionName":{"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulIdentifier","src":"13579:88:16"},"nodeType":"YulFunctionCall","src":"13579:93:16"},"nodeType":"YulExpressionStatement","src":"13579:93:16"},{"nodeType":"YulAssignment","src":"13681:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13692:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"13697:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13688:3:16"},"nodeType":"YulFunctionCall","src":"13688:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13681:3:16"}]}]},"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13474:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13482:3:16","type":""}],"src":"13340:366:16"},{"body":{"nodeType":"YulBlock","src":"13883:248:16","statements":[{"nodeType":"YulAssignment","src":"13893:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13905:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"13916:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13901:3:16"},"nodeType":"YulFunctionCall","src":"13901:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13893:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13940:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"13951:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13936:3:16"},"nodeType":"YulFunctionCall","src":"13936:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13959:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"13965:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13955:3:16"},"nodeType":"YulFunctionCall","src":"13955:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13929:6:16"},"nodeType":"YulFunctionCall","src":"13929:47:16"},"nodeType":"YulExpressionStatement","src":"13929:47:16"},{"nodeType":"YulAssignment","src":"13985:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14119:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13993:124:16"},"nodeType":"YulFunctionCall","src":"13993:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13985:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13863:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13878:4:16","type":""}],"src":"13712:419:16"},{"body":{"nodeType":"YulBlock","src":"14243:124:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14265:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"14273:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14261:3:16"},"nodeType":"YulFunctionCall","src":"14261:14:16"},{"hexValue":"455243373231456e756d657261626c653a206f776e657220696e646578206f75","kind":"string","nodeType":"YulLiteral","src":"14277:34:16","type":"","value":"ERC721Enumerable: owner index ou"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14254:6:16"},"nodeType":"YulFunctionCall","src":"14254:58:16"},"nodeType":"YulExpressionStatement","src":"14254:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14333:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"14341:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14329:3:16"},"nodeType":"YulFunctionCall","src":"14329:15:16"},{"hexValue":"74206f6620626f756e6473","kind":"string","nodeType":"YulLiteral","src":"14346:13:16","type":"","value":"t of bounds"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14322:6:16"},"nodeType":"YulFunctionCall","src":"14322:38:16"},"nodeType":"YulExpressionStatement","src":"14322:38:16"}]},"name":"store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14235:6:16","type":""}],"src":"14137:230:16"},{"body":{"nodeType":"YulBlock","src":"14519:220:16","statements":[{"nodeType":"YulAssignment","src":"14529:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14595:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"14600:2:16","type":"","value":"43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14536:58:16"},"nodeType":"YulFunctionCall","src":"14536:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14529:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14701:3:16"}],"functionName":{"name":"store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","nodeType":"YulIdentifier","src":"14612:88:16"},"nodeType":"YulFunctionCall","src":"14612:93:16"},"nodeType":"YulExpressionStatement","src":"14612:93:16"},{"nodeType":"YulAssignment","src":"14714:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14725:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"14730:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14721:3:16"},"nodeType":"YulFunctionCall","src":"14721:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14714:3:16"}]}]},"name":"abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14507:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14515:3:16","type":""}],"src":"14373:366:16"},{"body":{"nodeType":"YulBlock","src":"14916:248:16","statements":[{"nodeType":"YulAssignment","src":"14926:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14938:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"14949:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14934:3:16"},"nodeType":"YulFunctionCall","src":"14934:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14926:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14973:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"14984:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14969:3:16"},"nodeType":"YulFunctionCall","src":"14969:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14992:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"14998:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14988:3:16"},"nodeType":"YulFunctionCall","src":"14988:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14962:6:16"},"nodeType":"YulFunctionCall","src":"14962:47:16"},"nodeType":"YulExpressionStatement","src":"14962:47:16"},{"nodeType":"YulAssignment","src":"15018:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15152:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15026:124:16"},"nodeType":"YulFunctionCall","src":"15026:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15018:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14896:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14911:4:16","type":""}],"src":"14745:419:16"},{"body":{"nodeType":"YulBlock","src":"15198:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15215:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15218:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15208:6:16"},"nodeType":"YulFunctionCall","src":"15208:88:16"},"nodeType":"YulExpressionStatement","src":"15208:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15312:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"15315:4:16","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15305:6:16"},"nodeType":"YulFunctionCall","src":"15305:15:16"},"nodeType":"YulExpressionStatement","src":"15305:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15336:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15339:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15329:6:16"},"nodeType":"YulFunctionCall","src":"15329:15:16"},"nodeType":"YulExpressionStatement","src":"15329:15:16"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"15170:180:16"},{"body":{"nodeType":"YulBlock","src":"15400:261:16","statements":[{"nodeType":"YulAssignment","src":"15410:25:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15433:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"15415:17:16"},"nodeType":"YulFunctionCall","src":"15415:20:16"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"15410:1:16"}]},{"nodeType":"YulAssignment","src":"15444:25:16","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15467:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"15449:17:16"},"nodeType":"YulFunctionCall","src":"15449:20:16"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"15444:1:16"}]},{"body":{"nodeType":"YulBlock","src":"15607:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"15609:16:16"},"nodeType":"YulFunctionCall","src":"15609:18:16"},"nodeType":"YulExpressionStatement","src":"15609:18:16"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15528:1:16"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15535:66:16","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"15603:1:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15531:3:16"},"nodeType":"YulFunctionCall","src":"15531:74:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15525:2:16"},"nodeType":"YulFunctionCall","src":"15525:81:16"},"nodeType":"YulIf","src":"15522:107:16"},{"nodeType":"YulAssignment","src":"15639:16:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15650:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"15653:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15646:3:16"},"nodeType":"YulFunctionCall","src":"15646:9:16"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"15639:3:16"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15387:1:16","type":""},{"name":"y","nodeType":"YulTypedName","src":"15390:1:16","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"15396:3:16","type":""}],"src":"15356:305:16"},{"body":{"nodeType":"YulBlock","src":"15712:146:16","statements":[{"nodeType":"YulAssignment","src":"15722:25:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15745:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"15727:17:16"},"nodeType":"YulFunctionCall","src":"15727:20:16"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"15722:1:16"}]},{"nodeType":"YulAssignment","src":"15756:25:16","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15779:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"15761:17:16"},"nodeType":"YulFunctionCall","src":"15761:20:16"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"15756:1:16"}]},{"body":{"nodeType":"YulBlock","src":"15803:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"15805:16:16"},"nodeType":"YulFunctionCall","src":"15805:18:16"},"nodeType":"YulExpressionStatement","src":"15805:18:16"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15797:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"15800:1:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15794:2:16"},"nodeType":"YulFunctionCall","src":"15794:8:16"},"nodeType":"YulIf","src":"15791:34:16"},{"nodeType":"YulAssignment","src":"15835:17:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15847:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"15850:1:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15843:3:16"},"nodeType":"YulFunctionCall","src":"15843:9:16"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"15835:4:16"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15698:1:16","type":""},{"name":"y","nodeType":"YulTypedName","src":"15701:1:16","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"15707:4:16","type":""}],"src":"15667:191:16"},{"body":{"nodeType":"YulBlock","src":"15907:190:16","statements":[{"nodeType":"YulAssignment","src":"15917:33:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15944:5:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"15926:17:16"},"nodeType":"YulFunctionCall","src":"15926:24:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"15917:5:16"}]},{"body":{"nodeType":"YulBlock","src":"16040:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"16042:16:16"},"nodeType":"YulFunctionCall","src":"16042:18:16"},"nodeType":"YulExpressionStatement","src":"16042:18:16"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15965:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"15972:66:16","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15962:2:16"},"nodeType":"YulFunctionCall","src":"15962:77:16"},"nodeType":"YulIf","src":"15959:103:16"},{"nodeType":"YulAssignment","src":"16071:20:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16082:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"16089:1:16","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16078:3:16"},"nodeType":"YulFunctionCall","src":"16078:13:16"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"16071:3:16"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15893:5:16","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"15903:3:16","type":""}],"src":"15864:233:16"},{"body":{"nodeType":"YulBlock","src":"16209:125:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"16231:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"16239:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16227:3:16"},"nodeType":"YulFunctionCall","src":"16227:14:16"},{"hexValue":"455243373231456e756d657261626c653a20676c6f62616c20696e646578206f","kind":"string","nodeType":"YulLiteral","src":"16243:34:16","type":"","value":"ERC721Enumerable: global index o"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16220:6:16"},"nodeType":"YulFunctionCall","src":"16220:58:16"},"nodeType":"YulExpressionStatement","src":"16220:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"16299:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"16307:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16295:3:16"},"nodeType":"YulFunctionCall","src":"16295:15:16"},{"hexValue":"7574206f6620626f756e6473","kind":"string","nodeType":"YulLiteral","src":"16312:14:16","type":"","value":"ut of bounds"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16288:6:16"},"nodeType":"YulFunctionCall","src":"16288:39:16"},"nodeType":"YulExpressionStatement","src":"16288:39:16"}]},"name":"store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"16201:6:16","type":""}],"src":"16103:231:16"},{"body":{"nodeType":"YulBlock","src":"16486:220:16","statements":[{"nodeType":"YulAssignment","src":"16496:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16562:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"16567:2:16","type":"","value":"44"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16503:58:16"},"nodeType":"YulFunctionCall","src":"16503:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16496:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16668:3:16"}],"functionName":{"name":"store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","nodeType":"YulIdentifier","src":"16579:88:16"},"nodeType":"YulFunctionCall","src":"16579:93:16"},"nodeType":"YulExpressionStatement","src":"16579:93:16"},{"nodeType":"YulAssignment","src":"16681:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16692:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"16697:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16688:3:16"},"nodeType":"YulFunctionCall","src":"16688:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16681:3:16"}]}]},"name":"abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16474:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16482:3:16","type":""}],"src":"16340:366:16"},{"body":{"nodeType":"YulBlock","src":"16883:248:16","statements":[{"nodeType":"YulAssignment","src":"16893:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16905:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"16916:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16901:3:16"},"nodeType":"YulFunctionCall","src":"16901:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16893:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16940:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"16951:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16936:3:16"},"nodeType":"YulFunctionCall","src":"16936:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16959:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"16965:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16955:3:16"},"nodeType":"YulFunctionCall","src":"16955:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16929:6:16"},"nodeType":"YulFunctionCall","src":"16929:47:16"},"nodeType":"YulExpressionStatement","src":"16929:47:16"},{"nodeType":"YulAssignment","src":"16985:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17119:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16993:124:16"},"nodeType":"YulFunctionCall","src":"16993:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16985:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16863:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16878:4:16","type":""}],"src":"16712:419:16"},{"body":{"nodeType":"YulBlock","src":"17243:122:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17265:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"17273:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17261:3:16"},"nodeType":"YulFunctionCall","src":"17261:14:16"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"17277:34:16","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17254:6:16"},"nodeType":"YulFunctionCall","src":"17254:58:16"},"nodeType":"YulExpressionStatement","src":"17254:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17333:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"17341:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17329:3:16"},"nodeType":"YulFunctionCall","src":"17329:15:16"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"17346:11:16","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17322:6:16"},"nodeType":"YulFunctionCall","src":"17322:36:16"},"nodeType":"YulExpressionStatement","src":"17322:36:16"}]},"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17235:6:16","type":""}],"src":"17137:228:16"},{"body":{"nodeType":"YulBlock","src":"17517:220:16","statements":[{"nodeType":"YulAssignment","src":"17527:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17593:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"17598:2:16","type":"","value":"41"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17534:58:16"},"nodeType":"YulFunctionCall","src":"17534:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17527:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17699:3:16"}],"functionName":{"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulIdentifier","src":"17610:88:16"},"nodeType":"YulFunctionCall","src":"17610:93:16"},"nodeType":"YulExpressionStatement","src":"17610:93:16"},{"nodeType":"YulAssignment","src":"17712:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17723:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"17728:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17719:3:16"},"nodeType":"YulFunctionCall","src":"17719:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17712:3:16"}]}]},"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17505:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17513:3:16","type":""}],"src":"17371:366:16"},{"body":{"nodeType":"YulBlock","src":"17914:248:16","statements":[{"nodeType":"YulAssignment","src":"17924:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17936:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"17947:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17932:3:16"},"nodeType":"YulFunctionCall","src":"17932:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17924:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17971:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"17982:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17967:3:16"},"nodeType":"YulFunctionCall","src":"17967:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17990:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"17996:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17986:3:16"},"nodeType":"YulFunctionCall","src":"17986:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17960:6:16"},"nodeType":"YulFunctionCall","src":"17960:47:16"},"nodeType":"YulExpressionStatement","src":"17960:47:16"},{"nodeType":"YulAssignment","src":"18016:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18150:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18024:124:16"},"nodeType":"YulFunctionCall","src":"18024:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18016:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17894:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17909:4:16","type":""}],"src":"17743:419:16"},{"body":{"nodeType":"YulBlock","src":"18282:34:16","statements":[{"nodeType":"YulAssignment","src":"18292:18:16","value":{"name":"pos","nodeType":"YulIdentifier","src":"18307:3:16"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"18292:11:16"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18254:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"18259:6:16","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"18270:11:16","type":""}],"src":"18168:148:16"},{"body":{"nodeType":"YulBlock","src":"18432:267:16","statements":[{"nodeType":"YulVariableDeclaration","src":"18442:53:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18489:5:16"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"18456:32:16"},"nodeType":"YulFunctionCall","src":"18456:39:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"18446:6:16","type":""}]},{"nodeType":"YulAssignment","src":"18504:96:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18588:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"18593:6:16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"18511:76:16"},"nodeType":"YulFunctionCall","src":"18511:89:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18504:3:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18635:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"18642:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18631:3:16"},"nodeType":"YulFunctionCall","src":"18631:16:16"},{"name":"pos","nodeType":"YulIdentifier","src":"18649:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"18654:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"18609:21:16"},"nodeType":"YulFunctionCall","src":"18609:52:16"},"nodeType":"YulExpressionStatement","src":"18609:52:16"},{"nodeType":"YulAssignment","src":"18670:23:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18681:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"18686:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18677:3:16"},"nodeType":"YulFunctionCall","src":"18677:16:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18670:3:16"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18413:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18420:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18428:3:16","type":""}],"src":"18322:377:16"},{"body":{"nodeType":"YulBlock","src":"18889:251:16","statements":[{"nodeType":"YulAssignment","src":"18900:102:16","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18989:6:16"},{"name":"pos","nodeType":"YulIdentifier","src":"18998:3:16"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"18907:81:16"},"nodeType":"YulFunctionCall","src":"18907:95:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18900:3:16"}]},{"nodeType":"YulAssignment","src":"19012:102:16","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"19101:6:16"},{"name":"pos","nodeType":"YulIdentifier","src":"19110:3:16"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"19019:81:16"},"nodeType":"YulFunctionCall","src":"19019:95:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19012:3:16"}]},{"nodeType":"YulAssignment","src":"19124:10:16","value":{"name":"pos","nodeType":"YulIdentifier","src":"19131:3:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19124:3:16"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18860:3:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18866:6:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18874:6:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18885:3:16","type":""}],"src":"18705:435:16"},{"body":{"nodeType":"YulBlock","src":"19252:119:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19274:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"19282:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19270:3:16"},"nodeType":"YulFunctionCall","src":"19270:14:16"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"19286:34:16","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19263:6:16"},"nodeType":"YulFunctionCall","src":"19263:58:16"},"nodeType":"YulExpressionStatement","src":"19263:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19342:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"19350:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19338:3:16"},"nodeType":"YulFunctionCall","src":"19338:15:16"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"19355:8:16","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19331:6:16"},"nodeType":"YulFunctionCall","src":"19331:33:16"},"nodeType":"YulExpressionStatement","src":"19331:33:16"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19244:6:16","type":""}],"src":"19146:225:16"},{"body":{"nodeType":"YulBlock","src":"19523:220:16","statements":[{"nodeType":"YulAssignment","src":"19533:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19599:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"19604:2:16","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19540:58:16"},"nodeType":"YulFunctionCall","src":"19540:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19533:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19705:3:16"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"19616:88:16"},"nodeType":"YulFunctionCall","src":"19616:93:16"},"nodeType":"YulExpressionStatement","src":"19616:93:16"},{"nodeType":"YulAssignment","src":"19718:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19729:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"19734:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19725:3:16"},"nodeType":"YulFunctionCall","src":"19725:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19718:3:16"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"19511:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"19519:3:16","type":""}],"src":"19377:366:16"},{"body":{"nodeType":"YulBlock","src":"19920:248:16","statements":[{"nodeType":"YulAssignment","src":"19930:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19942:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"19953:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19938:3:16"},"nodeType":"YulFunctionCall","src":"19938:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19930:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19977:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"19988:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19973:3:16"},"nodeType":"YulFunctionCall","src":"19973:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19996:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"20002:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19992:3:16"},"nodeType":"YulFunctionCall","src":"19992:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19966:6:16"},"nodeType":"YulFunctionCall","src":"19966:47:16"},"nodeType":"YulExpressionStatement","src":"19966:47:16"},{"nodeType":"YulAssignment","src":"20022:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20156:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20030:124:16"},"nodeType":"YulFunctionCall","src":"20030:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20022:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19900:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19915:4:16","type":""}],"src":"19749:419:16"},{"body":{"nodeType":"YulBlock","src":"20280:68:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20302:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"20310:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20298:3:16"},"nodeType":"YulFunctionCall","src":"20298:14:16"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"20314:26:16","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20291:6:16"},"nodeType":"YulFunctionCall","src":"20291:50:16"},"nodeType":"YulExpressionStatement","src":"20291:50:16"}]},"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"20272:6:16","type":""}],"src":"20174:174:16"},{"body":{"nodeType":"YulBlock","src":"20500:220:16","statements":[{"nodeType":"YulAssignment","src":"20510:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20576:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"20581:2:16","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20517:58:16"},"nodeType":"YulFunctionCall","src":"20517:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"20510:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20682:3:16"}],"functionName":{"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulIdentifier","src":"20593:88:16"},"nodeType":"YulFunctionCall","src":"20593:93:16"},"nodeType":"YulExpressionStatement","src":"20593:93:16"},{"nodeType":"YulAssignment","src":"20695:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20706:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"20711:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20702:3:16"},"nodeType":"YulFunctionCall","src":"20702:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"20695:3:16"}]}]},"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"20488:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"20496:3:16","type":""}],"src":"20354:366:16"},{"body":{"nodeType":"YulBlock","src":"20897:248:16","statements":[{"nodeType":"YulAssignment","src":"20907:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20919:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"20930:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20915:3:16"},"nodeType":"YulFunctionCall","src":"20915:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20907:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20954:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"20965:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20950:3:16"},"nodeType":"YulFunctionCall","src":"20950:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20973:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"20979:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20969:3:16"},"nodeType":"YulFunctionCall","src":"20969:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20943:6:16"},"nodeType":"YulFunctionCall","src":"20943:47:16"},"nodeType":"YulExpressionStatement","src":"20943:47:16"},{"nodeType":"YulAssignment","src":"20999:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21133:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21007:124:16"},"nodeType":"YulFunctionCall","src":"21007:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20999:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20877:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20892:4:16","type":""}],"src":"20726:419:16"},{"body":{"nodeType":"YulBlock","src":"21257:118:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21279:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"21287:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21275:3:16"},"nodeType":"YulFunctionCall","src":"21275:14:16"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"21291:34:16","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21268:6:16"},"nodeType":"YulFunctionCall","src":"21268:58:16"},"nodeType":"YulExpressionStatement","src":"21268:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21347:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"21355:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21343:3:16"},"nodeType":"YulFunctionCall","src":"21343:15:16"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"21360:7:16","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21336:6:16"},"nodeType":"YulFunctionCall","src":"21336:32:16"},"nodeType":"YulExpressionStatement","src":"21336:32:16"}]},"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"21249:6:16","type":""}],"src":"21151:224:16"},{"body":{"nodeType":"YulBlock","src":"21527:220:16","statements":[{"nodeType":"YulAssignment","src":"21537:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21603:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"21608:2:16","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21544:58:16"},"nodeType":"YulFunctionCall","src":"21544:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"21537:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21709:3:16"}],"functionName":{"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulIdentifier","src":"21620:88:16"},"nodeType":"YulFunctionCall","src":"21620:93:16"},"nodeType":"YulExpressionStatement","src":"21620:93:16"},{"nodeType":"YulAssignment","src":"21722:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21733:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"21738:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21729:3:16"},"nodeType":"YulFunctionCall","src":"21729:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21722:3:16"}]}]},"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21515:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21523:3:16","type":""}],"src":"21381:366:16"},{"body":{"nodeType":"YulBlock","src":"21924:248:16","statements":[{"nodeType":"YulAssignment","src":"21934:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21946:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"21957:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21942:3:16"},"nodeType":"YulFunctionCall","src":"21942:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21934:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21981:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"21992:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21977:3:16"},"nodeType":"YulFunctionCall","src":"21977:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22000:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"22006:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21996:3:16"},"nodeType":"YulFunctionCall","src":"21996:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21970:6:16"},"nodeType":"YulFunctionCall","src":"21970:47:16"},"nodeType":"YulExpressionStatement","src":"21970:47:16"},{"nodeType":"YulAssignment","src":"22026:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22160:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22034:124:16"},"nodeType":"YulFunctionCall","src":"22034:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22026:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21904:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21919:4:16","type":""}],"src":"21753:419:16"},{"body":{"nodeType":"YulBlock","src":"22284:117:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"22306:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"22314:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22302:3:16"},"nodeType":"YulFunctionCall","src":"22302:14:16"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"22318:34:16","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22295:6:16"},"nodeType":"YulFunctionCall","src":"22295:58:16"},"nodeType":"YulExpressionStatement","src":"22295:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"22374:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"22382:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22370:3:16"},"nodeType":"YulFunctionCall","src":"22370:15:16"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"22387:6:16","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22363:6:16"},"nodeType":"YulFunctionCall","src":"22363:31:16"},"nodeType":"YulExpressionStatement","src":"22363:31:16"}]},"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"22276:6:16","type":""}],"src":"22178:223:16"},{"body":{"nodeType":"YulBlock","src":"22553:220:16","statements":[{"nodeType":"YulAssignment","src":"22563:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22629:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"22634:2:16","type":"","value":"36"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22570:58:16"},"nodeType":"YulFunctionCall","src":"22570:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"22563:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22735:3:16"}],"functionName":{"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulIdentifier","src":"22646:88:16"},"nodeType":"YulFunctionCall","src":"22646:93:16"},"nodeType":"YulExpressionStatement","src":"22646:93:16"},{"nodeType":"YulAssignment","src":"22748:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22759:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"22764:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22755:3:16"},"nodeType":"YulFunctionCall","src":"22755:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"22748:3:16"}]}]},"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"22541:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"22549:3:16","type":""}],"src":"22407:366:16"},{"body":{"nodeType":"YulBlock","src":"22950:248:16","statements":[{"nodeType":"YulAssignment","src":"22960:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22972:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"22983:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22968:3:16"},"nodeType":"YulFunctionCall","src":"22968:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22960:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23007:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"23018:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23003:3:16"},"nodeType":"YulFunctionCall","src":"23003:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23026:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"23032:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23022:3:16"},"nodeType":"YulFunctionCall","src":"23022:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22996:6:16"},"nodeType":"YulFunctionCall","src":"22996:47:16"},"nodeType":"YulExpressionStatement","src":"22996:47:16"},{"nodeType":"YulAssignment","src":"23052:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23186:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23060:124:16"},"nodeType":"YulFunctionCall","src":"23060:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23052:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22930:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22945:4:16","type":""}],"src":"22779:419:16"},{"body":{"nodeType":"YulBlock","src":"23310:76:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23332:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"23340:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23328:3:16"},"nodeType":"YulFunctionCall","src":"23328:14:16"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"23344:34:16","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23321:6:16"},"nodeType":"YulFunctionCall","src":"23321:58:16"},"nodeType":"YulExpressionStatement","src":"23321:58:16"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"23302:6:16","type":""}],"src":"23204:182:16"},{"body":{"nodeType":"YulBlock","src":"23538:220:16","statements":[{"nodeType":"YulAssignment","src":"23548:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23614:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"23619:2:16","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23555:58:16"},"nodeType":"YulFunctionCall","src":"23555:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"23548:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23720:3:16"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"23631:88:16"},"nodeType":"YulFunctionCall","src":"23631:93:16"},"nodeType":"YulExpressionStatement","src":"23631:93:16"},{"nodeType":"YulAssignment","src":"23733:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23744:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"23749:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23740:3:16"},"nodeType":"YulFunctionCall","src":"23740:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"23733:3:16"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"23526:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"23534:3:16","type":""}],"src":"23392:366:16"},{"body":{"nodeType":"YulBlock","src":"23935:248:16","statements":[{"nodeType":"YulAssignment","src":"23945:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23957:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"23968:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23953:3:16"},"nodeType":"YulFunctionCall","src":"23953:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23945:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23992:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"24003:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23988:3:16"},"nodeType":"YulFunctionCall","src":"23988:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24011:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"24017:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24007:3:16"},"nodeType":"YulFunctionCall","src":"24007:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23981:6:16"},"nodeType":"YulFunctionCall","src":"23981:47:16"},"nodeType":"YulExpressionStatement","src":"23981:47:16"},{"nodeType":"YulAssignment","src":"24037:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24171:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24045:124:16"},"nodeType":"YulFunctionCall","src":"24045:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24037:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23915:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23930:4:16","type":""}],"src":"23764:419:16"},{"body":{"nodeType":"YulBlock","src":"24295:69:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24317:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"24325:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24313:3:16"},"nodeType":"YulFunctionCall","src":"24313:14:16"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"24329:27:16","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24306:6:16"},"nodeType":"YulFunctionCall","src":"24306:51:16"},"nodeType":"YulExpressionStatement","src":"24306:51:16"}]},"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"24287:6:16","type":""}],"src":"24189:175:16"},{"body":{"nodeType":"YulBlock","src":"24516:220:16","statements":[{"nodeType":"YulAssignment","src":"24526:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24592:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"24597:2:16","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24533:58:16"},"nodeType":"YulFunctionCall","src":"24533:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"24526:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24698:3:16"}],"functionName":{"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulIdentifier","src":"24609:88:16"},"nodeType":"YulFunctionCall","src":"24609:93:16"},"nodeType":"YulExpressionStatement","src":"24609:93:16"},{"nodeType":"YulAssignment","src":"24711:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24722:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"24727:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24718:3:16"},"nodeType":"YulFunctionCall","src":"24718:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"24711:3:16"}]}]},"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"24504:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"24512:3:16","type":""}],"src":"24370:366:16"},{"body":{"nodeType":"YulBlock","src":"24913:248:16","statements":[{"nodeType":"YulAssignment","src":"24923:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24935:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"24946:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24931:3:16"},"nodeType":"YulFunctionCall","src":"24931:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24923:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24970:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"24981:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24966:3:16"},"nodeType":"YulFunctionCall","src":"24966:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24989:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"24995:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24985:3:16"},"nodeType":"YulFunctionCall","src":"24985:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24959:6:16"},"nodeType":"YulFunctionCall","src":"24959:47:16"},"nodeType":"YulExpressionStatement","src":"24959:47:16"},{"nodeType":"YulAssignment","src":"25015:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"25149:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"25023:124:16"},"nodeType":"YulFunctionCall","src":"25023:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"25015:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24893:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24908:4:16","type":""}],"src":"24742:419:16"},{"body":{"nodeType":"YulBlock","src":"25273:131:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"25295:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"25303:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25291:3:16"},"nodeType":"YulFunctionCall","src":"25291:14:16"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"25307:34:16","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25284:6:16"},"nodeType":"YulFunctionCall","src":"25284:58:16"},"nodeType":"YulExpressionStatement","src":"25284:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"25363:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"25371:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25359:3:16"},"nodeType":"YulFunctionCall","src":"25359:15:16"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"25376:20:16","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25352:6:16"},"nodeType":"YulFunctionCall","src":"25352:45:16"},"nodeType":"YulExpressionStatement","src":"25352:45:16"}]},"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"25265:6:16","type":""}],"src":"25167:237:16"},{"body":{"nodeType":"YulBlock","src":"25556:220:16","statements":[{"nodeType":"YulAssignment","src":"25566:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25632:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"25637:2:16","type":"","value":"50"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"25573:58:16"},"nodeType":"YulFunctionCall","src":"25573:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25566:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25738:3:16"}],"functionName":{"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulIdentifier","src":"25649:88:16"},"nodeType":"YulFunctionCall","src":"25649:93:16"},"nodeType":"YulExpressionStatement","src":"25649:93:16"},{"nodeType":"YulAssignment","src":"25751:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25762:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"25767:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25758:3:16"},"nodeType":"YulFunctionCall","src":"25758:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"25751:3:16"}]}]},"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"25544:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"25552:3:16","type":""}],"src":"25410:366:16"},{"body":{"nodeType":"YulBlock","src":"25953:248:16","statements":[{"nodeType":"YulAssignment","src":"25963:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25975:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"25986:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25971:3:16"},"nodeType":"YulFunctionCall","src":"25971:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"25963:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26010:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"26021:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26006:3:16"},"nodeType":"YulFunctionCall","src":"26006:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"26029:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"26035:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26025:3:16"},"nodeType":"YulFunctionCall","src":"26025:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25999:6:16"},"nodeType":"YulFunctionCall","src":"25999:47:16"},"nodeType":"YulExpressionStatement","src":"25999:47:16"},{"nodeType":"YulAssignment","src":"26055:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"26189:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26063:124:16"},"nodeType":"YulFunctionCall","src":"26063:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26055:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25933:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"25948:4:16","type":""}],"src":"25782:419:16"},{"body":{"nodeType":"YulBlock","src":"26235:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26252:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26255:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26245:6:16"},"nodeType":"YulFunctionCall","src":"26245:88:16"},"nodeType":"YulExpressionStatement","src":"26245:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26349:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"26352:4:16","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26342:6:16"},"nodeType":"YulFunctionCall","src":"26342:15:16"},"nodeType":"YulExpressionStatement","src":"26342:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26373:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26376:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26366:6:16"},"nodeType":"YulFunctionCall","src":"26366:15:16"},"nodeType":"YulExpressionStatement","src":"26366:15:16"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"26207:180:16"},{"body":{"nodeType":"YulBlock","src":"26451:40:16","statements":[{"nodeType":"YulAssignment","src":"26462:22:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26478:5:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26472:5:16"},"nodeType":"YulFunctionCall","src":"26472:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"26462:6:16"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26434:5:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"26444:6:16","type":""}],"src":"26393:98:16"},{"body":{"nodeType":"YulBlock","src":"26592:73:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26609:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"26614:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26602:6:16"},"nodeType":"YulFunctionCall","src":"26602:19:16"},"nodeType":"YulExpressionStatement","src":"26602:19:16"},{"nodeType":"YulAssignment","src":"26630:29:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26649:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"26654:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26645:3:16"},"nodeType":"YulFunctionCall","src":"26645:14:16"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"26630:11:16"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"26564:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"26569:6:16","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"26580:11:16","type":""}],"src":"26497:168:16"},{"body":{"nodeType":"YulBlock","src":"26761:270:16","statements":[{"nodeType":"YulVariableDeclaration","src":"26771:52:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26817:5:16"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"26785:31:16"},"nodeType":"YulFunctionCall","src":"26785:38:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"26775:6:16","type":""}]},{"nodeType":"YulAssignment","src":"26832:77:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26897:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"26902:6:16"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26839:57:16"},"nodeType":"YulFunctionCall","src":"26839:70:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"26832:3:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26944:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"26951:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26940:3:16"},"nodeType":"YulFunctionCall","src":"26940:16:16"},{"name":"pos","nodeType":"YulIdentifier","src":"26958:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"26963:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"26918:21:16"},"nodeType":"YulFunctionCall","src":"26918:52:16"},"nodeType":"YulExpressionStatement","src":"26918:52:16"},{"nodeType":"YulAssignment","src":"26979:46:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26990:3:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"27017:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"26995:21:16"},"nodeType":"YulFunctionCall","src":"26995:29:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26986:3:16"},"nodeType":"YulFunctionCall","src":"26986:39:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"26979:3:16"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26742:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"26749:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"26757:3:16","type":""}],"src":"26671:360:16"},{"body":{"nodeType":"YulBlock","src":"27237:440:16","statements":[{"nodeType":"YulAssignment","src":"27247:27:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27259:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"27270:3:16","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27255:3:16"},"nodeType":"YulFunctionCall","src":"27255:19:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27247:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"27328:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27341:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"27352:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27337:3:16"},"nodeType":"YulFunctionCall","src":"27337:17:16"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27284:43:16"},"nodeType":"YulFunctionCall","src":"27284:71:16"},"nodeType":"YulExpressionStatement","src":"27284:71:16"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"27409:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27422:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"27433:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27418:3:16"},"nodeType":"YulFunctionCall","src":"27418:18:16"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27365:43:16"},"nodeType":"YulFunctionCall","src":"27365:72:16"},"nodeType":"YulExpressionStatement","src":"27365:72:16"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"27491:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27504:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"27515:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27500:3:16"},"nodeType":"YulFunctionCall","src":"27500:18:16"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"27447:43:16"},"nodeType":"YulFunctionCall","src":"27447:72:16"},"nodeType":"YulExpressionStatement","src":"27447:72:16"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27540:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"27551:2:16","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27536:3:16"},"nodeType":"YulFunctionCall","src":"27536:18:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27560:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"27566:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27556:3:16"},"nodeType":"YulFunctionCall","src":"27556:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27529:6:16"},"nodeType":"YulFunctionCall","src":"27529:48:16"},"nodeType":"YulExpressionStatement","src":"27529:48:16"},{"nodeType":"YulAssignment","src":"27586:84:16","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"27656:6:16"},{"name":"tail","nodeType":"YulIdentifier","src":"27665:4:16"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27594:61:16"},"nodeType":"YulFunctionCall","src":"27594:76:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27586:4:16"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27185:9:16","type":""},{"name":"value3","nodeType":"YulTypedName","src":"27197:6:16","type":""},{"name":"value2","nodeType":"YulTypedName","src":"27205:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"27213:6:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"27221:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27232:4:16","type":""}],"src":"27037:640:16"},{"body":{"nodeType":"YulBlock","src":"27745:79:16","statements":[{"nodeType":"YulAssignment","src":"27755:22:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"27770:6:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27764:5:16"},"nodeType":"YulFunctionCall","src":"27764:13:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"27755:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"27812:5:16"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"27786:25:16"},"nodeType":"YulFunctionCall","src":"27786:32:16"},"nodeType":"YulExpressionStatement","src":"27786:32:16"}]},"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"27723:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"27731:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"27739:5:16","type":""}],"src":"27683:141:16"},{"body":{"nodeType":"YulBlock","src":"27906:273:16","statements":[{"body":{"nodeType":"YulBlock","src":"27952:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"27954:77:16"},"nodeType":"YulFunctionCall","src":"27954:79:16"},"nodeType":"YulExpressionStatement","src":"27954:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"27927:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"27936:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27923:3:16"},"nodeType":"YulFunctionCall","src":"27923:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"27948:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"27919:3:16"},"nodeType":"YulFunctionCall","src":"27919:32:16"},"nodeType":"YulIf","src":"27916:119:16"},{"nodeType":"YulBlock","src":"28045:127:16","statements":[{"nodeType":"YulVariableDeclaration","src":"28060:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"28074:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"28064:6:16","type":""}]},{"nodeType":"YulAssignment","src":"28089:73:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28134:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"28145:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28130:3:16"},"nodeType":"YulFunctionCall","src":"28130:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"28154:7:16"}],"functionName":{"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulIdentifier","src":"28099:30:16"},"nodeType":"YulFunctionCall","src":"28099:63:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"28089:6:16"}]}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27876:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"27887:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"27899:6:16","type":""}],"src":"27830:349:16"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approval to current owne\")\n\n mstore(add(memPtr, 32), \"r\")\n\n }\n\n function abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve caller is not to\")\n\n mstore(add(memPtr, 32), \"ken owner nor approved for all\")\n\n }\n\n function abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 62)\n store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: caller is not token owne\")\n\n mstore(add(memPtr, 32), \"r nor approved\")\n\n }\n\n function abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721Enumerable: owner index ou\")\n\n mstore(add(memPtr, 32), \"t of bounds\")\n\n }\n\n function abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721Enumerable: global index o\")\n\n mstore(add(memPtr, 32), \"ut of bounds\")\n\n }\n\n function abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 44)\n store_literal_in_memory_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: address zero is not a va\")\n\n mstore(add(memPtr, 32), \"lid owner\")\n\n }\n\n function abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: invalid token ID\")\n\n }\n\n function abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer from incorrect \")\n\n mstore(add(memPtr, 32), \"owner\")\n\n }\n\n function abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve to caller\")\n\n }\n\n function abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to non ERC721Re\")\n\n mstore(add(memPtr, 32), \"ceiver implementer\")\n\n }\n\n function abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 50)\n store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_decode_t_bytes4_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":16,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061012c5760003560e01c80636352211e116100ad578063a22cb46511610071578063a22cb46514610331578063b88d4fde1461034d578063c87b56dd14610369578063e985e9c514610399578063f2fde38b146103c95761012c565b80636352211e1461028b57806370a08231146102bb578063715018a6146102eb5780638da5cb5b146102f557806395d89b41146103135761012c565b806323b872dd116100f457806323b872dd146101e95780632f745c59146102055780633cd29ac81461023557806342842e0e1461023f5780634f6ccce71461025b5761012c565b806301ffc9a71461013157806306fdde0314610161578063081812fc1461017f578063095ea7b3146101af57806318160ddd146101cb575b600080fd5b61014b60048036038101906101469190611ec7565b6103e5565b6040516101589190611f0f565b60405180910390f35b61016961045f565b6040516101769190611fc3565b60405180910390f35b6101996004803603810190610194919061201b565b6104f1565b6040516101a69190612089565b60405180910390f35b6101c960048036038101906101c491906120d0565b610537565b005b6101d361064e565b6040516101e0919061211f565b60405180910390f35b61020360048036038101906101fe919061213a565b610658565b005b61021f600480360381019061021a91906120d0565b6106b8565b60405161022c919061211f565b60405180910390f35b61023d610871565b005b6102596004803603810190610254919061213a565b610883565b005b6102756004803603810190610270919061201b565b6108a3565b604051610282919061211f565b60405180910390f35b6102a560048036038101906102a0919061201b565b6108fd565b6040516102b29190612089565b60405180910390f35b6102d560048036038101906102d0919061218d565b6109b5565b6040516102e2919061211f565b60405180910390f35b6102f3610a6c565b005b6102fd610a80565b60405161030a9190612089565b60405180910390f35b61031b610aa9565b6040516103289190611fc3565b60405180910390f35b61034b600480360381019061034691906121e6565b610b3b565b005b6103676004803603810190610362919061235b565b610b51565b005b610383600480360381019061037e919061201b565b610bb3565b6040516103909190611fc3565b60405180910390f35b6103b360048036038101906103ae91906123de565b610c1b565b6040516103c09190611f0f565b60405180910390f35b6103e360048036038101906103de919061218d565b610caf565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610458575061045782610d32565b5b9050919050565b60606001805461046e9061244d565b80601f016020809104026020016040519081016040528092919081815260200182805461049a9061244d565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60006104fc82610e14565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610542826108fd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a9906124f0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105d1610e5f565b73ffffffffffffffffffffffffffffffffffffffff16148061060057506105ff816105fa610e5f565b610c1b565b5b61063f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063690612582565b60405180910390fd5b6106498383610e67565b505050565b6000600a54905090565b610669610663610e5f565b82610f20565b6106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069f90612614565b60405180910390fd5b6106b3838383610fb5565b505050565b60006106c3836109b5565b8210610704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fb906126a6565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361081757600061076361064e565b9050600080600190505b8281101561081357600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107b7826108fd565b73ffffffffffffffffffffffffffffffffffffffff1603610800576001826107df91906126f5565b9150846001836107ef919061274b565b036107ff5780935050505061086b565b5b808061080b9061277f565b91505061076d565b5050505b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000205490505b92915050565b61087961121b565b610881611299565b565b61089e83838360405180602001604052806000815250610b51565b505050565b6000600a5482106108e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e090612839565b60405180910390fd5b6001826108f691906126f5565b9050919050565b6000600a54821115610919576109128261138f565b90506109b0565b60006003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109ab57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b809150505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c906128cb565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a7461121b565b610a7e6000611440565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610ab89061244d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae49061244d565b8015610b315780601f10610b0657610100808354040283529160200191610b31565b820191906000526020600020905b815481529060010190602001808311610b1457829003601f168201915b5050505050905090565b610b4d610b46610e5f565b8383611504565b5050565b610b62610b5c610e5f565b83610f20565b610ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9890612614565b60405180910390fd5b610bad84848484611670565b50505050565b6060610bbe82610e14565b6000610bc86116cc565b90506000815111610be85760405180602001604052806000815250610c13565b80610bf28461175e565b604051602001610c03929190612927565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610cb761121b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1d906129bd565b60405180910390fd5b610d2f81611440565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610dfd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610e0d5750610e0c8261182c565b5b9050919050565b610e1d81611896565b610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5390612a29565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610eda836108fd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610f2c836108fd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610f6e5750610f6d8185610c1b565b5b80610fac57508373ffffffffffffffffffffffffffffffffffffffff16610f94846104f1565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610fd5826108fd565b73ffffffffffffffffffffffffffffffffffffffff161461102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102290612abb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190612b4d565b60405180910390fd5b6110a58383836118cc565b6110b0600082610e67565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611100919061274b565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461115791906126f5565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611216838383611924565b505050565b611223610e5f565b73ffffffffffffffffffffffffffffffffffffffff16611241610a80565b73ffffffffffffffffffffffffffffffffffffffff1614611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90612bb9565b60405180910390fd5b565b600a5460046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1660017fdeaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d600a54604051611385919061211f565b60405180910390a4565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90612a29565b60405180910390fd5b80915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156990612c25565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116639190611f0f565b60405180910390a3505050565b61167b848484610fb5565b61168784848484611929565b6116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90612cb7565b60405180910390fd5b50505050565b6060600b80546116db9061244d565b80601f01602080910402602001604051908101604052809291908181526020018280546117079061244d565b80156117545780601f1061172957610100808354040283529160200191611754565b820191906000526020600020905b81548152906001019060200180831161173757829003601f168201915b5050505050905090565b60606000600161176d84611aab565b01905060008167ffffffffffffffff81111561178c5761178b612230565b5b6040519080825280601f01601f1916602001820160405280156117be5781602001600182028036833780820191505090505b509050600082602001820190505b600115611821578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161181557611814612cd7565b5b049450600085036117cc575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000600a548211156118b2576118ab82611bfe565b90506118c7565b6000821180156118c45750600a548211155b90505b919050565b6118d7838383611c6a565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461191f576119148382611c6f565b61191e8282611ddc565b5b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115611a9e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261196e610e5f565b8786866040518563ffffffff1660e01b81526004016119909493929190612d5b565b6020604051808303816000875af19250505080156119cc57506040513d601f19601f820116820180604052508101906119c99190612dbc565b60015b611a4e573d80600081146119fc576040519150601f19603f3d011682016040523d82523d6000602084013e611a01565b606091505b506000815103611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d90612cb7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611aa3565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611b09577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611aff57611afe612cd7565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611b46576d04ee2d6d415b85acef81000000008381611b3c57611b3b612cd7565b5b0492506020810190505b662386f26fc100008310611b7557662386f26fc100008381611b6b57611b6a612cd7565b5b0492506010810190505b6305f5e1008310611b9e576305f5e1008381611b9457611b93612cd7565b5b0492506008810190505b6127108310611bc3576127108381611bb957611bb8612cd7565b5b0492506004810190505b60648310611be65760648381611bdc57611bdb612cd7565b5b0492506002810190505b600a8310611bf5576001810190505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b60006001611c7c846109b5565b611c86919061274b565b9050600060086000848152602001908152602001600020549050818114611d6b576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000611de7836109b5565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ea481611e6f565b8114611eaf57600080fd5b50565b600081359050611ec181611e9b565b92915050565b600060208284031215611edd57611edc611e65565b5b6000611eeb84828501611eb2565b91505092915050565b60008115159050919050565b611f0981611ef4565b82525050565b6000602082019050611f246000830184611f00565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f64578082015181840152602081019050611f49565b83811115611f73576000848401525b50505050565b6000601f19601f8301169050919050565b6000611f9582611f2a565b611f9f8185611f35565b9350611faf818560208601611f46565b611fb881611f79565b840191505092915050565b60006020820190508181036000830152611fdd8184611f8a565b905092915050565b6000819050919050565b611ff881611fe5565b811461200357600080fd5b50565b60008135905061201581611fef565b92915050565b60006020828403121561203157612030611e65565b5b600061203f84828501612006565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061207382612048565b9050919050565b61208381612068565b82525050565b600060208201905061209e600083018461207a565b92915050565b6120ad81612068565b81146120b857600080fd5b50565b6000813590506120ca816120a4565b92915050565b600080604083850312156120e7576120e6611e65565b5b60006120f5858286016120bb565b925050602061210685828601612006565b9150509250929050565b61211981611fe5565b82525050565b60006020820190506121346000830184612110565b92915050565b60008060006060848603121561215357612152611e65565b5b6000612161868287016120bb565b9350506020612172868287016120bb565b925050604061218386828701612006565b9150509250925092565b6000602082840312156121a3576121a2611e65565b5b60006121b1848285016120bb565b91505092915050565b6121c381611ef4565b81146121ce57600080fd5b50565b6000813590506121e0816121ba565b92915050565b600080604083850312156121fd576121fc611e65565b5b600061220b858286016120bb565b925050602061221c858286016121d1565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61226882611f79565b810181811067ffffffffffffffff8211171561228757612286612230565b5b80604052505050565b600061229a611e5b565b90506122a6828261225f565b919050565b600067ffffffffffffffff8211156122c6576122c5612230565b5b6122cf82611f79565b9050602081019050919050565b82818337600083830152505050565b60006122fe6122f9846122ab565b612290565b90508281526020810184848401111561231a5761231961222b565b5b6123258482856122dc565b509392505050565b600082601f83011261234257612341612226565b5b81356123528482602086016122eb565b91505092915050565b6000806000806080858703121561237557612374611e65565b5b6000612383878288016120bb565b9450506020612394878288016120bb565b93505060406123a587828801612006565b925050606085013567ffffffffffffffff8111156123c6576123c5611e6a565b5b6123d28782880161232d565b91505092959194509250565b600080604083850312156123f5576123f4611e65565b5b6000612403858286016120bb565b9250506020612414858286016120bb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061246557607f821691505b6020821081036124785761247761241e565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006124da602183611f35565b91506124e58261247e565b604082019050919050565b60006020820190508181036000830152612509816124cd565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b600061256c603e83611f35565b915061257782612510565b604082019050919050565b6000602082019050818103600083015261259b8161255f565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b60006125fe602e83611f35565b9150612609826125a2565b604082019050919050565b6000602082019050818103600083015261262d816125f1565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000612690602b83611f35565b915061269b82612634565b604082019050919050565b600060208201905081810360008301526126bf81612683565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061270082611fe5565b915061270b83611fe5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156127405761273f6126c6565b5b828201905092915050565b600061275682611fe5565b915061276183611fe5565b925082821015612774576127736126c6565b5b828203905092915050565b600061278a82611fe5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127bc576127bb6126c6565b5b600182019050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000612823602c83611f35565b915061282e826127c7565b604082019050919050565b6000602082019050818103600083015261285281612816565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006128b5602983611f35565b91506128c082612859565b604082019050919050565b600060208201905081810360008301526128e4816128a8565b9050919050565b600081905092915050565b600061290182611f2a565b61290b81856128eb565b935061291b818560208601611f46565b80840191505092915050565b600061293382856128f6565b915061293f82846128f6565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129a7602683611f35565b91506129b28261294b565b604082019050919050565b600060208201905081810360008301526129d68161299a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612a13601883611f35565b9150612a1e826129dd565b602082019050919050565b60006020820190508181036000830152612a4281612a06565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612aa5602583611f35565b9150612ab082612a49565b604082019050919050565b60006020820190508181036000830152612ad481612a98565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b37602483611f35565b9150612b4282612adb565b604082019050919050565b60006020820190508181036000830152612b6681612b2a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ba3602083611f35565b9150612bae82612b6d565b602082019050919050565b60006020820190508181036000830152612bd281612b96565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612c0f601983611f35565b9150612c1a82612bd9565b602082019050919050565b60006020820190508181036000830152612c3e81612c02565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000612ca1603283611f35565b9150612cac82612c45565b604082019050919050565b60006020820190508181036000830152612cd081612c94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000612d2d82612d06565b612d378185612d11565b9350612d47818560208601611f46565b612d5081611f79565b840191505092915050565b6000608082019050612d70600083018761207a565b612d7d602083018661207a565b612d8a6040830185612110565b8181036060830152612d9c8184612d22565b905095945050505050565b600081519050612db681611e9b565b92915050565b600060208284031215612dd257612dd1611e65565b5b6000612de084828501612da7565b9150509291505056fea2646970667358221220b45d17fb345108e1f5e95136d199cb2932d281c69cc816f10ee22fb0bb6f4a2a64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x331 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x399 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x3C9 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2BB JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x313 JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x3CD29AC8 EQ PUSH2 0x235 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x25B JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1AF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1CB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x146 SWAP2 SWAP1 PUSH2 0x1EC7 JUMP JUMPDEST PUSH2 0x3E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x158 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x169 PUSH2 0x45F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x176 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x194 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1A6 SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1C9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C4 SWAP2 SWAP1 PUSH2 0x20D0 JUMP JUMPDEST PUSH2 0x537 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D3 PUSH2 0x64E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E0 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x203 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x658 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x21F PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x21A SWAP2 SWAP1 PUSH2 0x20D0 JUMP JUMPDEST PUSH2 0x6B8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22C SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23D PUSH2 0x871 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x259 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x254 SWAP2 SWAP1 PUSH2 0x213A JUMP JUMPDEST PUSH2 0x883 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x275 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x270 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x282 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A0 SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B2 SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2D0 SWAP2 SWAP1 PUSH2 0x218D JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH2 0xA6C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2FD PUSH2 0xA80 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x30A SWAP2 SWAP1 PUSH2 0x2089 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x31B PUSH2 0xAA9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x328 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x34B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x346 SWAP2 SWAP1 PUSH2 0x21E6 JUMP JUMPDEST PUSH2 0xB3B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x367 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x362 SWAP2 SWAP1 PUSH2 0x235B JUMP JUMPDEST PUSH2 0xB51 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x383 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x37E SWAP2 SWAP1 PUSH2 0x201B JUMP JUMPDEST PUSH2 0xBB3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x390 SWAP2 SWAP1 PUSH2 0x1FC3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3B3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3AE SWAP2 SWAP1 PUSH2 0x23DE JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3C0 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3DE SWAP2 SWAP1 PUSH2 0x218D JUMP JUMPDEST PUSH2 0xCAF JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x780E9D6300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x458 JUMPI POP PUSH2 0x457 DUP3 PUSH2 0xD32 JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x46E SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x49A SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4E7 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4BC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4E7 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4CA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4FC DUP3 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x542 DUP3 PUSH2 0x8FD JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x5B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5A9 SWAP1 PUSH2 0x24F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5D1 PUSH2 0xE5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x600 JUMPI POP PUSH2 0x5FF DUP2 PUSH2 0x5FA PUSH2 0xE5F JUMP JUMPDEST PUSH2 0xC1B JUMP JUMPDEST JUMPDEST PUSH2 0x63F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x636 SWAP1 PUSH2 0x2582 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x649 DUP4 DUP4 PUSH2 0xE67 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x669 PUSH2 0x663 PUSH2 0xE5F JUMP JUMPDEST DUP3 PUSH2 0xF20 JUMP JUMPDEST PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x69F SWAP1 PUSH2 0x2614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6B3 DUP4 DUP4 DUP4 PUSH2 0xFB5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6C3 DUP4 PUSH2 0x9B5 JUMP JUMPDEST DUP3 LT PUSH2 0x704 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6FB SWAP1 PUSH2 0x26A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x817 JUMPI PUSH1 0x0 PUSH2 0x763 PUSH2 0x64E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x813 JUMPI PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x7B7 DUP3 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x800 JUMPI PUSH1 0x1 DUP3 PUSH2 0x7DF SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP2 POP DUP5 PUSH1 0x1 DUP4 PUSH2 0x7EF SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SUB PUSH2 0x7FF JUMPI DUP1 SWAP4 POP POP POP POP PUSH2 0x86B JUMP JUMPDEST JUMPDEST DUP1 DUP1 PUSH2 0x80B SWAP1 PUSH2 0x277F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x76D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x7 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x879 PUSH2 0x121B JUMP JUMPDEST PUSH2 0x881 PUSH2 0x1299 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x89E DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xB51 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 LT PUSH2 0x8E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8E0 SWAP1 PUSH2 0x2839 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP3 PUSH2 0x8F6 SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 GT ISZERO PUSH2 0x919 JUMPI PUSH2 0x912 DUP3 PUSH2 0x138F JUMP JUMPDEST SWAP1 POP PUSH2 0x9B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x9AB JUMPI PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xA25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA1C SWAP1 PUSH2 0x28CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA74 PUSH2 0x121B JUMP JUMPDEST PUSH2 0xA7E PUSH1 0x0 PUSH2 0x1440 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0xAB8 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xAE4 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB31 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB06 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB31 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xB14 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xB4D PUSH2 0xB46 PUSH2 0xE5F JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1504 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xB62 PUSH2 0xB5C PUSH2 0xE5F JUMP JUMPDEST DUP4 PUSH2 0xF20 JUMP JUMPDEST PUSH2 0xBA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB98 SWAP1 PUSH2 0x2614 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBAD DUP5 DUP5 DUP5 DUP5 PUSH2 0x1670 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xBBE DUP3 PUSH2 0xE14 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBC8 PUSH2 0x16CC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xBE8 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xC13 JUMP JUMPDEST DUP1 PUSH2 0xBF2 DUP5 PUSH2 0x175E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC03 SWAP3 SWAP2 SWAP1 PUSH2 0x2927 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xCB7 PUSH2 0x121B JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD26 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD1D SWAP1 PUSH2 0x29BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD2F DUP2 PUSH2 0x1440 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0xDFD JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0xE0D JUMPI POP PUSH2 0xE0C DUP3 PUSH2 0x182C JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xE1D DUP2 PUSH2 0x1896 JUMP JUMPDEST PUSH2 0xE5C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE53 SWAP1 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xEDA DUP4 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF2C DUP4 PUSH2 0x8FD JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xF6E JUMPI POP PUSH2 0xF6D DUP2 DUP6 PUSH2 0xC1B JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xFAC JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xF94 DUP5 PUSH2 0x4F1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xFD5 DUP3 PUSH2 0x8FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x102B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1022 SWAP1 PUSH2 0x2ABB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x109A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1091 SWAP1 PUSH2 0x2B4D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x10A5 DUP4 DUP4 DUP4 PUSH2 0x18CC JUMP JUMPDEST PUSH2 0x10B0 PUSH1 0x0 DUP3 PUSH2 0xE67 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1100 SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1157 SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1216 DUP4 DUP4 DUP4 PUSH2 0x1924 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1223 PUSH2 0xE5F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1241 PUSH2 0xA80 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1297 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x128E SWAP1 PUSH2 0x2BB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x4 PUSH1 0x0 PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x9 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH32 0xDEAA91B6123D068F5821D0FB0678463D1A8A6079FE8AF5DE3CE5E896DCF9133D PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH2 0x1385 SWAP2 SWAP1 PUSH2 0x211F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1437 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x142E SWAP1 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1569 SWAP1 PUSH2 0x2C25 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1663 SWAP2 SWAP1 PUSH2 0x1F0F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x167B DUP5 DUP5 DUP5 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0x1687 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1929 JUMP JUMPDEST PUSH2 0x16C6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x16BD SWAP1 PUSH2 0x2CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xB DUP1 SLOAD PUSH2 0x16DB SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1707 SWAP1 PUSH2 0x244D JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1754 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1729 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1754 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1737 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0x176D DUP5 PUSH2 0x1AAB JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x178C JUMPI PUSH2 0x178B PUSH2 0x2230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x17BE JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x1821 JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x1815 JUMPI PUSH2 0x1814 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x17CC JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA SLOAD DUP3 GT ISZERO PUSH2 0x18B2 JUMPI PUSH2 0x18AB DUP3 PUSH2 0x1BFE JUMP JUMPDEST SWAP1 POP PUSH2 0x18C7 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x18C4 JUMPI POP PUSH1 0xA SLOAD DUP3 GT ISZERO JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18D7 DUP4 DUP4 DUP4 PUSH2 0x1C6A JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x191F JUMPI PUSH2 0x1914 DUP4 DUP3 PUSH2 0x1C6F JUMP JUMPDEST PUSH2 0x191E DUP3 DUP3 PUSH2 0x1DDC JUMP JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x1A9E JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x196E PUSH2 0xE5F JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1990 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D5B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x19CC JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19C9 SWAP2 SWAP1 PUSH2 0x2DBC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1A4E JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x19FC 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 0x1A01 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x1A46 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A3D SWAP1 PUSH2 0x2CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x1AA3 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1B09 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x1AFF JUMPI PUSH2 0x1AFE PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1B46 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1B3C JUMPI PUSH2 0x1B3B PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1B75 JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1B6B JUMPI PUSH2 0x1B6A PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1B9E JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x1B94 JUMPI PUSH2 0x1B93 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x1BC3 JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x1BB9 JUMPI PUSH2 0x1BB8 PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1BE6 JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x1BDC JUMPI PUSH2 0x1BDB PUSH2 0x2CD7 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x1BF5 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x1C7C DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0x1C86 SWAP2 SWAP1 PUSH2 0x274B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1D6B JUMPI PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x8 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP JUMPDEST PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x7 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DE7 DUP4 PUSH2 0x9B5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x7 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EA4 DUP2 PUSH2 0x1E6F JUMP JUMPDEST DUP2 EQ PUSH2 0x1EAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1EC1 DUP2 PUSH2 0x1E9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EDD JUMPI PUSH2 0x1EDC PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1EEB DUP5 DUP3 DUP6 ADD PUSH2 0x1EB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F09 DUP2 PUSH2 0x1EF4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1F24 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1F00 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F64 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1F49 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1F73 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F95 DUP3 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x1F9F DUP2 DUP6 PUSH2 0x1F35 JUMP JUMPDEST SWAP4 POP PUSH2 0x1FAF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST PUSH2 0x1FB8 DUP2 PUSH2 0x1F79 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FDD DUP2 DUP5 PUSH2 0x1F8A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1FF8 DUP2 PUSH2 0x1FE5 JUMP JUMPDEST DUP2 EQ PUSH2 0x2003 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2015 DUP2 PUSH2 0x1FEF JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2031 JUMPI PUSH2 0x2030 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x203F DUP5 DUP3 DUP6 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2073 DUP3 PUSH2 0x2048 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2083 DUP2 PUSH2 0x2068 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x209E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x207A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x20AD DUP2 PUSH2 0x2068 JUMP JUMPDEST DUP2 EQ PUSH2 0x20B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x20CA DUP2 PUSH2 0x20A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20E7 JUMPI PUSH2 0x20E6 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20F5 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2106 DUP6 DUP3 DUP7 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2119 DUP2 PUSH2 0x1FE5 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2134 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2110 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2153 JUMPI PUSH2 0x2152 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2161 DUP7 DUP3 DUP8 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2172 DUP7 DUP3 DUP8 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2183 DUP7 DUP3 DUP8 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21A3 JUMPI PUSH2 0x21A2 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x21B1 DUP5 DUP3 DUP6 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x21C3 DUP2 PUSH2 0x1EF4 JUMP JUMPDEST DUP2 EQ PUSH2 0x21CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x21E0 DUP2 PUSH2 0x21BA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21FD JUMPI PUSH2 0x21FC PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x220B DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x221C DUP6 DUP3 DUP7 ADD PUSH2 0x21D1 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2268 DUP3 PUSH2 0x1F79 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2287 JUMPI PUSH2 0x2286 PUSH2 0x2230 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x229A PUSH2 0x1E5B JUMP JUMPDEST SWAP1 POP PUSH2 0x22A6 DUP3 DUP3 PUSH2 0x225F JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x22C6 JUMPI PUSH2 0x22C5 PUSH2 0x2230 JUMP JUMPDEST JUMPDEST PUSH2 0x22CF DUP3 PUSH2 0x1F79 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22FE PUSH2 0x22F9 DUP5 PUSH2 0x22AB JUMP JUMPDEST PUSH2 0x2290 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x231A JUMPI PUSH2 0x2319 PUSH2 0x222B JUMP JUMPDEST JUMPDEST PUSH2 0x2325 DUP5 DUP3 DUP6 PUSH2 0x22DC JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2342 JUMPI PUSH2 0x2341 PUSH2 0x2226 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2352 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x22EB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2375 JUMPI PUSH2 0x2374 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2383 DUP8 DUP3 DUP9 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x2394 DUP8 DUP3 DUP9 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x23A5 DUP8 DUP3 DUP9 ADD PUSH2 0x2006 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x23C6 JUMPI PUSH2 0x23C5 PUSH2 0x1E6A JUMP JUMPDEST JUMPDEST PUSH2 0x23D2 DUP8 DUP3 DUP9 ADD PUSH2 0x232D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23F5 JUMPI PUSH2 0x23F4 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2403 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2414 DUP6 DUP3 DUP7 ADD PUSH2 0x20BB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2465 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2478 JUMPI PUSH2 0x2477 PUSH2 0x241E JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24DA PUSH1 0x21 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x24E5 DUP3 PUSH2 0x247E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2509 DUP2 PUSH2 0x24CD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x256C PUSH1 0x3E DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2577 DUP3 PUSH2 0x2510 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x259B DUP2 PUSH2 0x255F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25FE PUSH1 0x2E DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2609 DUP3 PUSH2 0x25A2 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x262D DUP2 PUSH2 0x25F1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x455243373231456E756D657261626C653A206F776E657220696E646578206F75 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74206F6620626F756E6473000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2690 PUSH1 0x2B DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x269B DUP3 PUSH2 0x2634 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x26BF DUP2 PUSH2 0x2683 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2700 DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH2 0x270B DUP4 PUSH2 0x1FE5 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x2740 JUMPI PUSH2 0x273F PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2756 DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH2 0x2761 DUP4 PUSH2 0x1FE5 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x2774 JUMPI PUSH2 0x2773 PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x278A DUP3 PUSH2 0x1FE5 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x27BC JUMPI PUSH2 0x27BB PUSH2 0x26C6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x455243373231456E756D657261626C653A20676C6F62616C20696E646578206F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7574206F6620626F756E64730000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2823 PUSH1 0x2C DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x282E DUP3 PUSH2 0x27C7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2852 DUP2 PUSH2 0x2816 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B5 PUSH1 0x29 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x28C0 DUP3 PUSH2 0x2859 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x28E4 DUP2 PUSH2 0x28A8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2901 DUP3 PUSH2 0x1F2A JUMP JUMPDEST PUSH2 0x290B DUP2 DUP6 PUSH2 0x28EB JUMP JUMPDEST SWAP4 POP PUSH2 0x291B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2933 DUP3 DUP6 PUSH2 0x28F6 JUMP JUMPDEST SWAP2 POP PUSH2 0x293F DUP3 DUP5 PUSH2 0x28F6 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29A7 PUSH1 0x26 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x29B2 DUP3 PUSH2 0x294B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x29D6 DUP2 PUSH2 0x299A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A13 PUSH1 0x18 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A1E DUP3 PUSH2 0x29DD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2A42 DUP2 PUSH2 0x2A06 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA5 PUSH1 0x25 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2AB0 DUP3 PUSH2 0x2A49 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2AD4 DUP2 PUSH2 0x2A98 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B37 PUSH1 0x24 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B42 DUP3 PUSH2 0x2ADB JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2B66 DUP2 PUSH2 0x2B2A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BA3 PUSH1 0x20 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2BAE DUP3 PUSH2 0x2B6D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2BD2 DUP2 PUSH2 0x2B96 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C0F PUSH1 0x19 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2C1A DUP3 PUSH2 0x2BD9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2C3E DUP2 PUSH2 0x2C02 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CA1 PUSH1 0x32 DUP4 PUSH2 0x1F35 JUMP JUMPDEST SWAP2 POP PUSH2 0x2CAC DUP3 PUSH2 0x2C45 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2CD0 DUP2 PUSH2 0x2C94 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D2D DUP3 PUSH2 0x2D06 JUMP JUMPDEST PUSH2 0x2D37 DUP2 DUP6 PUSH2 0x2D11 JUMP JUMPDEST SWAP4 POP PUSH2 0x2D47 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1F46 JUMP JUMPDEST PUSH2 0x2D50 DUP2 PUSH2 0x1F79 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2D70 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x207A JUMP JUMPDEST PUSH2 0x2D7D PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x207A JUMP JUMPDEST PUSH2 0x2D8A PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2110 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x2D9C DUP2 DUP5 PUSH2 0x2D22 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2DB6 DUP2 PUSH2 0x1E9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DD2 JUMPI PUSH2 0x2DD1 PUSH2 0x1E65 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DE0 DUP5 DUP3 DUP6 ADD PUSH2 0x2DA7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0x5D OR 0xFB CALLVALUE MLOAD ADDMOD 0xE1 CREATE2 0xE9 MLOAD CALLDATASIZE 0xD1 SWAP10 0xCB 0x29 ORIGIN 0xD2 DUP2 0xC6 SWAP13 0xC8 AND CALL 0xE 0xE2 0x2F 0xB0 0xBB PUSH16 0x4A2A64736F6C634300080D0033000000 ","sourceMap":"998:1396:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:216:15;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3317:98:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4775:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4314:400;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2648:147:15;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5452:327:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2009:574:15;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2223:59:13;;;:::i;:::-;;5845:179:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2861:265:15;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3231:674;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:204:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1824:101:0;;;:::i;:::-;;1201:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3479:102:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5009:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6090:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3647:276;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2074:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1680:216:15;1782:4;1816:35;1801:50;;;:11;:50;;;;:90;;;;1855:36;1879:11;1855:23;:36::i;:::-;1801:90;1794:97;;1680:216;;;:::o;3317:98:14:-;3371:13;3403:5;3396:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3317:98;:::o;4775:167::-;4851:7;4870:23;4885:7;4870:14;:23::i;:::-;4911:15;:24;4927:7;4911:24;;;;;;;;;;;;;;;;;;;;;4904:31;;4775:167;;;:::o;4314:400::-;4394:13;4410:16;4418:7;4410;:16::i;:::-;4394:32;;4450:5;4444:11;;:2;:11;;;4436:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4541:5;4525:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;4550:37;4567:5;4574:12;:10;:12::i;:::-;4550:16;:37::i;:::-;4525:62;4504:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;4686:21;4695:2;4699:7;4686:8;:21::i;:::-;4384:330;4314:400;;:::o;2648:147:15:-;2709:7;2780:10;;2773:17;;2648:147;:::o;5452:327:14:-;5641:41;5660:12;:10;:12::i;:::-;5674:7;5641:18;:41::i;:::-;5633:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;5744:28;5754:4;5760:2;5764:7;5744:9;:28::i;:::-;5452:327;;;:::o;2009:574:15:-;2106:7;2137:23;2154:5;2137:16;:23::i;:::-;2129:5;:31;2121:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;2235:16;;;;;;;;;;;2218:34;;:5;:34;;;2214:326;;2262:14;2279:13;:11;:13::i;:::-;2262:30;;2300:15;2332:9;2344:1;2332:13;;2327:207;2351:6;2347:1;:10;2327:207;;;2400:16;;;;;;;;;;;2378:39;;:10;2386:1;2378:7;:10::i;:::-;:39;;;2374:152;;2442:1;2431:12;;;;;:::i;:::-;;;2474:5;2469:1;2459:7;:11;;;;:::i;:::-;:20;2455:61;;2502:1;2495:8;;;;;;;2455:61;2374:152;2359:3;;;;;:::i;:::-;;;;2327:207;;;;2254:286;;2214:326;2552:12;:19;2565:5;2552:19;;;;;;;;;;;;;;;:26;2572:5;2552:26;;;;;;;;;;;;2545:33;;2009:574;;;;;:::o;2223:59:13:-;1094:13:0;:11;:13::i;:::-;2267:10:13::1;:8;:10::i;:::-;2223:59::o:0;5845:179:14:-;5978:39;5995:4;6001:2;6005:7;5978:39;;;;;;;;;;;;:16;:39::i;:::-;5845:179;;;:::o;2861:265:15:-;2936:7;2967:10;;2959:5;:18;2951:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;3120:1;3112:5;:9;;;;:::i;:::-;3105:16;;2861:265;;;:::o;3231:674::-;3320:7;3426:10;;3416:7;:20;3412:70;;;3453:22;3467:7;3453:13;:22::i;:::-;3446:29;;;;3412:70;3777:14;3794:7;:16;3802:7;3794:16;;;;;;;;;;;;;;;;;;;;;3777:33;;3838:1;3820:20;;:6;:20;;;3816:66;;3859:16;;;;;;;;;;;3850:25;;3816:66;3894:6;3887:13;;;3231:674;;;;:::o;2776:204:14:-;2848:7;2892:1;2875:19;;:5;:19;;;2867:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2957:9;:16;2967:5;2957:16;;;;;;;;;;;;;;;;2950:23;;2776:204;;;:::o;1824:101:0:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1201:85::-;1247:7;1273:6;;;;;;;;;;;1266:13;;1201:85;:::o;3479:102:14:-;3535:13;3567:7;3560:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3479:102;:::o;5009:153::-;5103:52;5122:12;:10;:12::i;:::-;5136:8;5146;5103:18;:52::i;:::-;5009:153;;:::o;6090:315::-;6258:41;6277:12;:10;:12::i;:::-;6291:7;6258:18;:41::i;:::-;6250:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;6360:38;6374:4;6380:2;6384:7;6393:4;6360:13;:38::i;:::-;6090:315;;;;:::o;3647:276::-;3720:13;3745:23;3760:7;3745:14;:23::i;:::-;3779:21;3803:10;:8;:10::i;:::-;3779:34;;3854:1;3836:7;3830:21;:25;:86;;;;;;;;;;;;;;;;;3882:7;3891:18;:7;:16;:18::i;:::-;3865:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3830:86;3823:93;;;3647:276;;;:::o;5228:162::-;5325:4;5348:18;:25;5367:5;5348:25;;;;;;;;;;;;;;;:35;5374:8;5348:35;;;;;;;;;;;;;;;;;;;;;;;;;5341:42;;5228:162;;;;:::o;2074:198:0:-;1094:13;:11;:13::i;:::-;2182:1:::1;2162:22;;:8;:22;;::::0;2154:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;2417:300:14:-;2519:4;2569:25;2554:40;;;:11;:40;;;;:104;;;;2625:33;2610:48;;;:11;:48;;;;2554:104;:156;;;;2674:36;2698:11;2674:23;:36::i;:::-;2554:156;2535:175;;2417:300;;;:::o;12550:133::-;12631:16;12639:7;12631;:16::i;:::-;12623:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12550:133;:::o;640:96:6:-;693:7;719:10;712:17;;640:96;:::o;11859:164:14:-;11960:2;11933:15;:24;11949:7;11933:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12008:7;12004:2;11977:39;;11986:16;11994:7;11986;:16::i;:::-;11977:39;;;;;;;;;;;;11859:164;;:::o;8157:254::-;8250:4;8266:13;8282:16;8290:7;8282;:16::i;:::-;8266:32;;8327:5;8316:16;;:7;:16;;;:52;;;;8336:32;8353:5;8360:7;8336:16;:32::i;:::-;8316:52;:87;;;;8396:7;8372:31;;:20;8384:7;8372:11;:20::i;:::-;:31;;;8316:87;8308:96;;;8157:254;;;;:::o;11149:598::-;11296:4;11276:24;;:16;11284:7;11276;:16::i;:::-;:24;;;11268:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11374:1;11360:16;;:2;:16;;;11352:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11428:39;11449:4;11455:2;11459:7;11428:20;:39::i;:::-;11529:29;11546:1;11550:7;11529:8;:29::i;:::-;11588:1;11569:9;:15;11579:4;11569:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;11616:1;11599:9;:13;11609:2;11599:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;11646:2;11627:7;:16;11635:7;11627:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11683:7;11679:2;11664:27;;11673:4;11664:27;;;;;;;;;;;;11702:38;11722:4;11728:2;11732:7;11702:19;:38::i;:::-;11149:598;;;:::o;1359:130:0:-;1433:12;:10;:12::i;:::-;1422:23;;:7;:5;:7::i;:::-;:23;;;1414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1359:130::o;1957:262:13:-;2085:10;;2055:9;:27;2065:16;;;;;;;;;;;2055:27;;;;;;;;;;;;;;;:40;;;;2197:16;;;;;;;;;;;2150:64;;2193:1;2150:64;;2170:1;2150:64;2173:10;;2150:64;;;;;;:::i;:::-;;;;;;;;1957:262::o;3037:218:14:-;3109:7;3128:13;3144:7;:16;3152:7;3144:16;;;;;;;;;;;;;;;;;;;;;3128:32;;3195:1;3178:19;;:5;:19;;;3170:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3243:5;3236:12;;;3037:218;;;:::o;2426:187:0:-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;12159:307:14:-;12309:8;12300:17;;:5;:17;;;12292:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12395:8;12357:18;:25;12376:5;12357:25;;;;;;;;;;;;;;;:35;12383:8;12357:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12440:8;12418:41;;12433:5;12418:41;;;12450:8;12418:41;;;;;;:::i;:::-;;;;;;;;12159:307;;;:::o;7266:305::-;7416:28;7426:4;7432:2;7436:7;7416:9;:28::i;:::-;7462:47;7485:4;7491:2;7495:7;7504:4;7462:22;:47::i;:::-;7454:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7266:305;;;;:::o;2286:106:13:-;2346:13;2374;2367:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2286:106;:::o;447:696:7:-;503:13;552:14;589:1;569:17;580:5;569:10;:17::i;:::-;:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;604:41;;659:11;785:6;781:2;777:15;769:6;765:28;758:35;;820:280;827:4;820:280;;;851:5;;;;;;;;990:8;985:2;978:5;974:14;969:30;964:3;956:44;1044:2;1035:11;;;;;;:::i;:::-;;;;;1077:1;1068:5;:10;820:280;1064:21;820:280;1120:6;1113:13;;;;;447:696;;;:::o;829:155:8:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;4014:373:15:-;4096:4;4199:10;;4189:7;:20;4185:70;;;4226:22;4240:7;4226:13;:22::i;:::-;4219:29;;;;4185:70;4355:1;4345:7;:11;:36;;;;;4371:10;;4360:7;:21;;4345:36;4337:45;;4014:373;;;;:::o;4461:303::-;4582:45;4609:4;4615:2;4619:7;4582:26;:45::i;:::-;4646:2;4638:10;;:4;:10;;;4634:126;;4658:47;4691:4;4697:7;4658:32;:47::i;:::-;4713:40;4741:2;4745:7;4713:27;:40::i;:::-;4634:126;4461:303;;;:::o;15119:121:14:-;;;;:::o;13235:834::-;13384:4;13421:1;13404:2;:14;;;:18;13400:663;;;13458:2;13442:36;;;13479:12;:10;:12::i;:::-;13493:4;13499:7;13508:4;13442:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13438:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13697:1;13680:6;:13;:18;13676:321;;13722:60;;;;;;;;;;:::i;:::-;;;;;;;;13676:321;13949:6;13943:13;13934:6;13930:2;13926:15;13919:38;13438:573;13573:41;;;13563:51;;;:6;:51;;;;13556:58;;;;;13400:663;14048:4;14041:11;;13235:834;;;;;;;:::o;10139:916:10:-;10192:7;10211:14;10228:1;10211:18;;10276:8;10267:5;:17;10263:103;;10313:8;10304:17;;;;;;:::i;:::-;;;;;10349:2;10339:12;;;;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;;;;:::i;:::-;;;;;10465:2;10455:12;;;;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;;;;:::i;:::-;;;;;10581:2;10571:12;;;;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;;;;:::i;:::-;;;;;10695:1;10685:11;;;;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;;;;:::i;:::-;;;;;10808:1;10798:11;;;;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;;;;:::i;:::-;;;;;10921:1;10911:11;;;;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;;;;10950:66;11042:6;11035:13;;;10139:916;;;:::o;7874:125:14:-;7939:4;7990:1;7962:30;;:7;:16;7970:7;7962:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7955:37;;7874:125;;;:::o;14625:122::-;;;;:::o;5134:910:15:-;5384:22;5434:1;5409:22;5426:4;5409:16;:22::i;:::-;:26;;;;:::i;:::-;5384:51;;5441:18;5462:17;:26;5480:7;5462:26;;;;;;;;;;;;5441:47;;5598:14;5584:10;:28;5580:301;;5622:19;5644:12;:18;5657:4;5644:18;;;;;;;;;;;;;;;:34;5663:14;5644:34;;;;;;;;;;;;5622:56;;5720:11;5687:12;:18;5700:4;5687:18;;;;;;;;;;;;;;;:30;5706:10;5687:30;;;;;;;;;;;:44;;;;5830:10;5797:17;:30;5815:11;5797:30;;;;;;;;;;;:43;;;;5614:267;5580:301;5966:17;:26;5984:7;5966:26;;;;;;;;;;;5959:33;;;6005:12;:18;6018:4;6005:18;;;;;;;;;;;;;;;:34;6024:14;6005:34;;;;;;;;;;;5998:41;;;5215:829;;5134:910;;:::o;4845:203::-;4925:14;4942:20;4959:2;4942:16;:20::i;:::-;4925:37;;4995:7;4968:12;:16;4981:2;4968:16;;;;;;;;;;;;;;;:24;4985:6;4968:24;;;;;;;;;;;:34;;;;5037:6;5008:17;:26;5026:7;5008:26;;;;;;;;;;;:35;;;;4919:129;4845:203;;:::o;7:75:16:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:619::-;5367:6;5375;5383;5432:2;5420:9;5411:7;5407:23;5403:32;5400:119;;;5438:79;;:::i;:::-;5400:119;5558:1;5583:53;5628:7;5619:6;5608:9;5604:22;5583:53;:::i;:::-;5573:63;;5529:117;5685:2;5711:53;5756:7;5747:6;5736:9;5732:22;5711:53;:::i;:::-;5701:63;;5656:118;5813:2;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5784:118;5290:619;;;;;:::o;5915:329::-;5974:6;6023:2;6011:9;6002:7;5998:23;5994:32;5991:119;;;6029:79;;:::i;:::-;5991:119;6149:1;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6120:117;5915:329;;;;:::o;6250:116::-;6320:21;6335:5;6320:21;:::i;:::-;6313:5;6310:32;6300:60;;6356:1;6353;6346:12;6300:60;6250:116;:::o;6372:133::-;6415:5;6453:6;6440:20;6431:29;;6469:30;6493:5;6469:30;:::i;:::-;6372:133;;;;:::o;6511:468::-;6576:6;6584;6633:2;6621:9;6612:7;6608:23;6604:32;6601:119;;;6639:79;;:::i;:::-;6601:119;6759:1;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6730:117;6886:2;6912:50;6954:7;6945:6;6934:9;6930:22;6912:50;:::i;:::-;6902:60;;6857:115;6511:468;;;;;:::o;6985:117::-;7094:1;7091;7084:12;7108:117;7217:1;7214;7207:12;7231:180;7279:77;7276:1;7269:88;7376:4;7373:1;7366:15;7400:4;7397:1;7390:15;7417:281;7500:27;7522:4;7500:27;:::i;:::-;7492:6;7488:40;7630:6;7618:10;7615:22;7594:18;7582:10;7579:34;7576:62;7573:88;;;7641:18;;:::i;:::-;7573:88;7681:10;7677:2;7670:22;7460:238;7417:281;;:::o;7704:129::-;7738:6;7765:20;;:::i;:::-;7755:30;;7794:33;7822:4;7814:6;7794:33;:::i;:::-;7704:129;;;:::o;7839:307::-;7900:4;7990:18;7982:6;7979:30;7976:56;;;8012:18;;:::i;:::-;7976:56;8050:29;8072:6;8050:29;:::i;:::-;8042:37;;8134:4;8128;8124:15;8116:23;;7839:307;;;:::o;8152:154::-;8236:6;8231:3;8226;8213:30;8298:1;8289:6;8284:3;8280:16;8273:27;8152:154;;;:::o;8312:410::-;8389:5;8414:65;8430:48;8471:6;8430:48;:::i;:::-;8414:65;:::i;:::-;8405:74;;8502:6;8495:5;8488:21;8540:4;8533:5;8529:16;8578:3;8569:6;8564:3;8560:16;8557:25;8554:112;;;8585:79;;:::i;:::-;8554:112;8675:41;8709:6;8704:3;8699;8675:41;:::i;:::-;8395:327;8312:410;;;;;:::o;8741:338::-;8796:5;8845:3;8838:4;8830:6;8826:17;8822:27;8812:122;;8853:79;;:::i;:::-;8812:122;8970:6;8957:20;8995:78;9069:3;9061:6;9054:4;9046:6;9042:17;8995:78;:::i;:::-;8986:87;;8802:277;8741:338;;;;:::o;9085:943::-;9180:6;9188;9196;9204;9253:3;9241:9;9232:7;9228:23;9224:33;9221:120;;;9260:79;;:::i;:::-;9221:120;9380:1;9405:53;9450:7;9441:6;9430:9;9426:22;9405:53;:::i;:::-;9395:63;;9351:117;9507:2;9533:53;9578:7;9569:6;9558:9;9554:22;9533:53;:::i;:::-;9523:63;;9478:118;9635:2;9661:53;9706:7;9697:6;9686:9;9682:22;9661:53;:::i;:::-;9651:63;;9606:118;9791:2;9780:9;9776:18;9763:32;9822:18;9814:6;9811:30;9808:117;;;9844:79;;:::i;:::-;9808:117;9949:62;10003:7;9994:6;9983:9;9979:22;9949:62;:::i;:::-;9939:72;;9734:287;9085:943;;;;;;;:::o;10034:474::-;10102:6;10110;10159:2;10147:9;10138:7;10134:23;10130:32;10127:119;;;10165:79;;:::i;:::-;10127:119;10285:1;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;:::i;:::-;10300:63;;10256:117;10412:2;10438:53;10483:7;10474:6;10463:9;10459:22;10438:53;:::i;:::-;10428:63;;10383:118;10034:474;;;;;:::o;10514:180::-;10562:77;10559:1;10552:88;10659:4;10656:1;10649:15;10683:4;10680:1;10673:15;10700:320;10744:6;10781:1;10775:4;10771:12;10761:22;;10828:1;10822:4;10818:12;10849:18;10839:81;;10905:4;10897:6;10893:17;10883:27;;10839:81;10967:2;10959:6;10956:14;10936:18;10933:38;10930:84;;10986:18;;:::i;:::-;10930:84;10751:269;10700:320;;;:::o;11026:220::-;11166:34;11162:1;11154:6;11150:14;11143:58;11235:3;11230:2;11222:6;11218:15;11211:28;11026:220;:::o;11252:366::-;11394:3;11415:67;11479:2;11474:3;11415:67;:::i;:::-;11408:74;;11491:93;11580:3;11491:93;:::i;:::-;11609:2;11604:3;11600:12;11593:19;;11252:366;;;:::o;11624:419::-;11790:4;11828:2;11817:9;11813:18;11805:26;;11877:9;11871:4;11867:20;11863:1;11852:9;11848:17;11841:47;11905:131;12031:4;11905:131;:::i;:::-;11897:139;;11624:419;;;:::o;12049:249::-;12189:34;12185:1;12177:6;12173:14;12166:58;12258:32;12253:2;12245:6;12241:15;12234:57;12049:249;:::o;12304:366::-;12446:3;12467:67;12531:2;12526:3;12467:67;:::i;:::-;12460:74;;12543:93;12632:3;12543:93;:::i;:::-;12661:2;12656:3;12652:12;12645:19;;12304:366;;;:::o;12676:419::-;12842:4;12880:2;12869:9;12865:18;12857:26;;12929:9;12923:4;12919:20;12915:1;12904:9;12900:17;12893:47;12957:131;13083:4;12957:131;:::i;:::-;12949:139;;12676:419;;;:::o;13101:233::-;13241:34;13237:1;13229:6;13225:14;13218:58;13310:16;13305:2;13297:6;13293:15;13286:41;13101:233;:::o;13340:366::-;13482:3;13503:67;13567:2;13562:3;13503:67;:::i;:::-;13496:74;;13579:93;13668:3;13579:93;:::i;:::-;13697:2;13692:3;13688:12;13681:19;;13340:366;;;:::o;13712:419::-;13878:4;13916:2;13905:9;13901:18;13893:26;;13965:9;13959:4;13955:20;13951:1;13940:9;13936:17;13929:47;13993:131;14119:4;13993:131;:::i;:::-;13985:139;;13712:419;;;:::o;14137:230::-;14277:34;14273:1;14265:6;14261:14;14254:58;14346:13;14341:2;14333:6;14329:15;14322:38;14137:230;:::o;14373:366::-;14515:3;14536:67;14600:2;14595:3;14536:67;:::i;:::-;14529:74;;14612:93;14701:3;14612:93;:::i;:::-;14730:2;14725:3;14721:12;14714:19;;14373:366;;;:::o;14745:419::-;14911:4;14949:2;14938:9;14934:18;14926:26;;14998:9;14992:4;14988:20;14984:1;14973:9;14969:17;14962:47;15026:131;15152:4;15026:131;:::i;:::-;15018:139;;14745:419;;;:::o;15170:180::-;15218:77;15215:1;15208:88;15315:4;15312:1;15305:15;15339:4;15336:1;15329:15;15356:305;15396:3;15415:20;15433:1;15415:20;:::i;:::-;15410:25;;15449:20;15467:1;15449:20;:::i;:::-;15444:25;;15603:1;15535:66;15531:74;15528:1;15525:81;15522:107;;;15609:18;;:::i;:::-;15522:107;15653:1;15650;15646:9;15639:16;;15356:305;;;;:::o;15667:191::-;15707:4;15727:20;15745:1;15727:20;:::i;:::-;15722:25;;15761:20;15779:1;15761:20;:::i;:::-;15756:25;;15800:1;15797;15794:8;15791:34;;;15805:18;;:::i;:::-;15791:34;15850:1;15847;15843:9;15835:17;;15667:191;;;;:::o;15864:233::-;15903:3;15926:24;15944:5;15926:24;:::i;:::-;15917:33;;15972:66;15965:5;15962:77;15959:103;;16042:18;;:::i;:::-;15959:103;16089:1;16082:5;16078:13;16071:20;;15864:233;;;:::o;16103:231::-;16243:34;16239:1;16231:6;16227:14;16220:58;16312:14;16307:2;16299:6;16295:15;16288:39;16103:231;:::o;16340:366::-;16482:3;16503:67;16567:2;16562:3;16503:67;:::i;:::-;16496:74;;16579:93;16668:3;16579:93;:::i;:::-;16697:2;16692:3;16688:12;16681:19;;16340:366;;;:::o;16712:419::-;16878:4;16916:2;16905:9;16901:18;16893:26;;16965:9;16959:4;16955:20;16951:1;16940:9;16936:17;16929:47;16993:131;17119:4;16993:131;:::i;:::-;16985:139;;16712:419;;;:::o;17137:228::-;17277:34;17273:1;17265:6;17261:14;17254:58;17346:11;17341:2;17333:6;17329:15;17322:36;17137:228;:::o;17371:366::-;17513:3;17534:67;17598:2;17593:3;17534:67;:::i;:::-;17527:74;;17610:93;17699:3;17610:93;:::i;:::-;17728:2;17723:3;17719:12;17712:19;;17371:366;;;:::o;17743:419::-;17909:4;17947:2;17936:9;17932:18;17924:26;;17996:9;17990:4;17986:20;17982:1;17971:9;17967:17;17960:47;18024:131;18150:4;18024:131;:::i;:::-;18016:139;;17743:419;;;:::o;18168:148::-;18270:11;18307:3;18292:18;;18168:148;;;;:::o;18322:377::-;18428:3;18456:39;18489:5;18456:39;:::i;:::-;18511:89;18593:6;18588:3;18511:89;:::i;:::-;18504:96;;18609:52;18654:6;18649:3;18642:4;18635:5;18631:16;18609:52;:::i;:::-;18686:6;18681:3;18677:16;18670:23;;18432:267;18322:377;;;;:::o;18705:435::-;18885:3;18907:95;18998:3;18989:6;18907:95;:::i;:::-;18900:102;;19019:95;19110:3;19101:6;19019:95;:::i;:::-;19012:102;;19131:3;19124:10;;18705:435;;;;;:::o;19146:225::-;19286:34;19282:1;19274:6;19270:14;19263:58;19355:8;19350:2;19342:6;19338:15;19331:33;19146:225;:::o;19377:366::-;19519:3;19540:67;19604:2;19599:3;19540:67;:::i;:::-;19533:74;;19616:93;19705:3;19616:93;:::i;:::-;19734:2;19729:3;19725:12;19718:19;;19377:366;;;:::o;19749:419::-;19915:4;19953:2;19942:9;19938:18;19930:26;;20002:9;19996:4;19992:20;19988:1;19977:9;19973:17;19966:47;20030:131;20156:4;20030:131;:::i;:::-;20022:139;;19749:419;;;:::o;20174:174::-;20314:26;20310:1;20302:6;20298:14;20291:50;20174:174;:::o;20354:366::-;20496:3;20517:67;20581:2;20576:3;20517:67;:::i;:::-;20510:74;;20593:93;20682:3;20593:93;:::i;:::-;20711:2;20706:3;20702:12;20695:19;;20354:366;;;:::o;20726:419::-;20892:4;20930:2;20919:9;20915:18;20907:26;;20979:9;20973:4;20969:20;20965:1;20954:9;20950:17;20943:47;21007:131;21133:4;21007:131;:::i;:::-;20999:139;;20726:419;;;:::o;21151:224::-;21291:34;21287:1;21279:6;21275:14;21268:58;21360:7;21355:2;21347:6;21343:15;21336:32;21151:224;:::o;21381:366::-;21523:3;21544:67;21608:2;21603:3;21544:67;:::i;:::-;21537:74;;21620:93;21709:3;21620:93;:::i;:::-;21738:2;21733:3;21729:12;21722:19;;21381:366;;;:::o;21753:419::-;21919:4;21957:2;21946:9;21942:18;21934:26;;22006:9;22000:4;21996:20;21992:1;21981:9;21977:17;21970:47;22034:131;22160:4;22034:131;:::i;:::-;22026:139;;21753:419;;;:::o;22178:223::-;22318:34;22314:1;22306:6;22302:14;22295:58;22387:6;22382:2;22374:6;22370:15;22363:31;22178:223;:::o;22407:366::-;22549:3;22570:67;22634:2;22629:3;22570:67;:::i;:::-;22563:74;;22646:93;22735:3;22646:93;:::i;:::-;22764:2;22759:3;22755:12;22748:19;;22407:366;;;:::o;22779:419::-;22945:4;22983:2;22972:9;22968:18;22960:26;;23032:9;23026:4;23022:20;23018:1;23007:9;23003:17;22996:47;23060:131;23186:4;23060:131;:::i;:::-;23052:139;;22779:419;;;:::o;23204:182::-;23344:34;23340:1;23332:6;23328:14;23321:58;23204:182;:::o;23392:366::-;23534:3;23555:67;23619:2;23614:3;23555:67;:::i;:::-;23548:74;;23631:93;23720:3;23631:93;:::i;:::-;23749:2;23744:3;23740:12;23733:19;;23392:366;;;:::o;23764:419::-;23930:4;23968:2;23957:9;23953:18;23945:26;;24017:9;24011:4;24007:20;24003:1;23992:9;23988:17;23981:47;24045:131;24171:4;24045:131;:::i;:::-;24037:139;;23764:419;;;:::o;24189:175::-;24329:27;24325:1;24317:6;24313:14;24306:51;24189:175;:::o;24370:366::-;24512:3;24533:67;24597:2;24592:3;24533:67;:::i;:::-;24526:74;;24609:93;24698:3;24609:93;:::i;:::-;24727:2;24722:3;24718:12;24711:19;;24370:366;;;:::o;24742:419::-;24908:4;24946:2;24935:9;24931:18;24923:26;;24995:9;24989:4;24985:20;24981:1;24970:9;24966:17;24959:47;25023:131;25149:4;25023:131;:::i;:::-;25015:139;;24742:419;;;:::o;25167:237::-;25307:34;25303:1;25295:6;25291:14;25284:58;25376:20;25371:2;25363:6;25359:15;25352:45;25167:237;:::o;25410:366::-;25552:3;25573:67;25637:2;25632:3;25573:67;:::i;:::-;25566:74;;25649:93;25738:3;25649:93;:::i;:::-;25767:2;25762:3;25758:12;25751:19;;25410:366;;;:::o;25782:419::-;25948:4;25986:2;25975:9;25971:18;25963:26;;26035:9;26029:4;26025:20;26021:1;26010:9;26006:17;25999:47;26063:131;26189:4;26063:131;:::i;:::-;26055:139;;25782:419;;;:::o;26207:180::-;26255:77;26252:1;26245:88;26352:4;26349:1;26342:15;26376:4;26373:1;26366:15;26393:98;26444:6;26478:5;26472:12;26462:22;;26393:98;;;:::o;26497:168::-;26580:11;26614:6;26609:3;26602:19;26654:4;26649:3;26645:14;26630:29;;26497:168;;;;:::o;26671:360::-;26757:3;26785:38;26817:5;26785:38;:::i;:::-;26839:70;26902:6;26897:3;26839:70;:::i;:::-;26832:77;;26918:52;26963:6;26958:3;26951:4;26944:5;26940:16;26918:52;:::i;:::-;26995:29;27017:6;26995:29;:::i;:::-;26990:3;26986:39;26979:46;;26761:270;26671:360;;;;:::o;27037:640::-;27232:4;27270:3;27259:9;27255:19;27247:27;;27284:71;27352:1;27341:9;27337:17;27328:6;27284:71;:::i;:::-;27365:72;27433:2;27422:9;27418:18;27409:6;27365:72;:::i;:::-;27447;27515:2;27504:9;27500:18;27491:6;27447:72;:::i;:::-;27566:9;27560:4;27556:20;27551:2;27540:9;27536:18;27529:48;27594:76;27665:4;27656:6;27594:76;:::i;:::-;27586:84;;27037:640;;;;;;;:::o;27683:141::-;27739:5;27770:6;27764:13;27755:22;;27786:32;27812:5;27786:32;:::i;:::-;27683:141;;;;:::o;27830:349::-;27899:6;27948:2;27936:9;27927:7;27923:23;27919:32;27916:119;;;27954:79;;:::i;:::-;27916:119;28074:1;28099:63;28154:7;28145:6;28134:9;28130:22;28099:63;:::i;:::-;28089:73;;28045:127;27830:349;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"2361400","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2921","getApproved(uint256)":"7437","isApprovedForAll(address,address)":"infinite","name()":"infinite","owner()":"2611","ownerOf(uint256)":"7207","preMint()":"35512","renounceOwnership()":"30465","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"infinite","supportsInterface(bytes4)":"886","symbol()":"infinite","tokenByIndex(uint256)":"infinite","tokenOfOwnerByIndex(address,uint256)":"infinite","tokenURI(uint256)":"infinite","totalSupply()":"2549","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"30854"},"internal":{"_baseURI()":"infinite","_preMint()":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","preMint()":"3cd29ac8","renounceOwnership()":"715018a6","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"baseUri\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"uint256\",\"name\":\"fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"}],\"name\":\"ConsecutiveTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This implements a Pre-Mint version of {ERC721} that adds the ability to Pre-Mint all the token ids in the contract as assign an initial owner for each token id. On-chain state for Pre-Mint does not need to be initially stored if Max-Supply is known. Minting is a simple matter of assigning a balance to the pre-mint receiver, and modifying the \\\"read\\\" methods to account for the pre-mint receiver as owner. We use the Consecutive Transfer Method as defined in EIP-2309 to signal inital ownership. Almost everything else remains standard. We also default to the contract \\\"owner\\\" as the pre-mint receiver, but this can be changed.\",\"events\":{\"ConsecutiveTransfer(uint256,uint256,address,address)\":{\"details\":\"EIP-2309: https://eips.ethereum.org/EIPS/eip-2309\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection, as well as a `minter` and a `maxSupply` for pre-minting the collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"Override the ERC721 \\\"ownerOf\\\" function to account for the Pre-Mint Receiver.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}. note: Fix contributed by surfer77\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"_baseTokenURI\":{\"details\":\"ERC721 Base Token URI\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC721i.sol\":\"ERC721i\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Enumerable is IERC721 {\\n /**\\n * @dev Returns the total amount of tokens stored by the contract.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\\n * Use along with {totalSupply} to enumerate all tokens.\\n */\\n function tokenByIndex(uint256 index) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/ERC721i.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Written by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity 0.8.13;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"./lib/ERC721iEnumerable.sol\\\";\\n\\n/**\\n * @dev This implements a Pre-Mint version of {ERC721} that adds the ability to Pre-Mint\\n * all the token ids in the contract as assign an initial owner for each token id.\\n *\\n * On-chain state for Pre-Mint does not need to be initially stored if Max-Supply is known.\\n * Minting is a simple matter of assigning a balance to the pre-mint receiver,\\n * and modifying the \\\"read\\\" methods to account for the pre-mint receiver as owner.\\n * We use the Consecutive Transfer Method as defined in EIP-2309 to signal inital ownership.\\n * Almost everything else remains standard.\\n * We also default to the contract \\\"owner\\\" as the pre-mint receiver, but this can be changed.\\n */\\ncontract ERC721i is\\n Ownable,\\n ERC721iEnumerable\\n{\\n /// @dev EIP-2309: https://eips.ethereum.org/EIPS/eip-2309\\n event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed fromAddress, address indexed toAddress);\\n\\n /// @dev ERC721 Base Token URI\\n string internal _baseTokenURI;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection,\\n * as well as a `minter` and a `maxSupply` for pre-minting the collection.\\n */\\n constructor(\\n string memory name,\\n string memory symbol,\\n string memory baseUri,\\n address minter,\\n uint256 maxSupply\\n )\\n ERC721(name, symbol)\\n Ownable()\\n {\\n _baseTokenURI = baseUri;\\n // Set vars defined in ERC721iEnumerable.sol\\n _maxSupply = maxSupply;\\n _preMintReceiver = minter;\\n }\\n\\n /**\\n * @dev Pre-mint the max-supply of token IDs to the minter account.\\n * Token IDs are in base-1 sequential order.\\n */\\n function _preMint() internal {\\n // Update balance for initial owner, defined in ERC721.sol\\n _balances[_preMintReceiver] = _maxSupply;\\n\\n // Emit the Consecutive Transfer Event\\n emit ConsecutiveTransfer(1, _maxSupply, address(0), _preMintReceiver);\\n }\\n\\n function preMint() external onlyOwner {\\n _preMint();\\n }\\n\\n function _baseURI() internal view virtual override returns (string memory) {\\n return _baseTokenURI;\\n }\\n}\\n\",\"keccak256\":\"0x545e7ae720fe4c8fde6b728370341991406ccbfb2de2373aa3886cadbc1d6c35\",\"license\":\"MIT\"},\"contracts/lib/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n *\\n * NOTE:\\n * The only changes made here are:\\n * - change scope of \\\"_owners\\\" from private to internal\\n * - change scope of \\\"_balances\\\" from private to internal\\n * - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\"\\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) internal _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) internal _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _owners[tokenId];\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _owners[tokenId] != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId);\\n\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n // Clear approvals\\n _approve(address(0), tokenId);\\n\\n _balances[owner] -= 1;\\n // Prevent re-assigning the token back to the Pre-Mint Receiver\\n _owners[tokenId] = _NULL_ADDRESS;\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.code.length > 0) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n * transferred to `to`.\\n * - When `from` is zero, `tokenId` will be minted for `to`.\\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x726960336df673d5fd509dde21ba3bed24645291d201f74762b945fe4d5aa016\",\"license\":\"MIT\"},\"contracts/lib/ERC721iEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modified from: OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\\\";\\n\\n/**\\n * @dev This implements an optional extension of {ERC721} defined in the EIP that adds\\n * enumerability of all the token ids in the contract as well as all token ids owned by each\\n * account.\\n *\\n * @dev This implementation also includes support for pre-minting a max-supply of tokens up-front.\\n *\\n * Note on pre-mint:\\n * Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs.\\n * For this reason, the \\\"allTokens\\\" state vars are unneccesary and have been removed.\\n * Also defines 2 light-weight state vars: \\\"_preMintReceiver\\\" & \\\"_maxSupply\\\"\\n * Overrides \\\"ownerOf\\\" & \\\"_exists\\\"\\n */\\nabstract contract ERC721iEnumerable is ERC721, IERC721Enumerable {\\n // Mapping from owner to list of owned token IDs\\n mapping(address => mapping(uint256 => uint256)) private _ownedTokens;\\n\\n // Mapping from token ID to index of the owner tokens list\\n mapping(uint256 => uint256) private _ownedTokensIndex;\\n\\n // Tracking for the Pre-Mint Receiver\\n address internal _preMintReceiver;\\n\\n // Max-Supply for Pre-Mint\\n uint256 internal _maxSupply;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n *\\n * Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\\n * note: Fix contributed by surfer77\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\\n require(index < ERC721.balanceOf(owner), \\\"ERC721Enumerable: owner index out of bounds\\\");\\n if (owner == address(_preMintReceiver)) {\\n uint256 supply = totalSupply();\\n uint256 matched = 0;\\n for (uint256 i = 1; i < supply; i++) {\\n if (ownerOf(i) == address(_preMintReceiver)) {\\n matched += 1;\\n if (matched - 1 == index) {\\n return i;\\n }\\n }\\n }\\n }\\n return _ownedTokens[owner][index];\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n // The Total Supply is simply the Max Supply\\n return _maxSupply;\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-tokenByIndex}.\\n */\\n function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\\n require(index < _maxSupply, \\\"ERC721Enumerable: global index out of bounds\\\");\\n // Array index is 0-based, whereas Token ID is 1-based (sequential).\\n return index + 1;\\n }\\n\\n /**\\n * @dev Override the ERC721 \\\"ownerOf\\\" function to account for the Pre-Mint Receiver.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override(IERC721, ERC721) returns (address) {\\n // Anything beyond the Pre-Minted supply will use the standard \\\"ownerOf\\\"\\n if (tokenId > _maxSupply) {\\n return super.ownerOf(tokenId);\\n }\\n\\n // Since we have Pre-Minted the Max-Supply to the \\\"Pre-Mint Receiver\\\" account, we know:\\n // - if the \\\"_owners\\\" mapping has not been assigned, then the owner is the Pre-Mint Receiver.\\n // - after the NFT is transferred, the \\\"_owners\\\" mapping will be updated with the new owner.\\n address owner_ = _owners[tokenId];\\n if (owner_ == address(0)) {\\n owner_ = _preMintReceiver;\\n }\\n return owner_;\\n }\\n\\n /**\\n * @dev Override the ERC721 \\\"_exists\\\" function to account for the Pre-Minted Max-Supply.\\n */\\n function _exists(uint256 tokenId) internal view virtual override(ERC721) returns (bool) {\\n // Anything beyond the Pre-Minted supply will use the standard \\\"_exists\\\"\\n if (tokenId > _maxSupply) {\\n return super._exists(tokenId);\\n }\\n\\n // We know the Max-Supply has been Pre-Minted with Sequential Token IDs\\n return (tokenId > 0 && tokenId <= _maxSupply);\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_beforeTokenTransfer}.\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual override {\\n super._beforeTokenTransfer(from, to, tokenId);\\n\\n if (from != to) {\\n _removeTokenFromOwnerEnumeration(from, tokenId);\\n _addTokenToOwnerEnumeration(to, tokenId);\\n }\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_addTokenToOwnerEnumeration}.\\n */\\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\\n uint256 length = ERC721.balanceOf(to);\\n _ownedTokens[to][length] = tokenId;\\n _ownedTokensIndex[tokenId] = length;\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_removeTokenFromOwnerEnumeration}.\\n */\\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\\n // then delete the last slot (swap and pop).\\n\\n uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;\\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\\n\\n // When the token to delete is the last token, the swap operation is unnecessary\\n if (tokenIndex != lastTokenIndex) {\\n uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\\n\\n _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\\n }\\n\\n // This also deletes the contents at the last position of the array\\n delete _ownedTokensIndex[tokenId];\\n delete _ownedTokens[from][lastTokenIndex];\\n }\\n}\\n\",\"keccak256\":\"0x99b0f077ef320163c0100348d120946ea6fefa3d3f0148a8880e01d4a1924752\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7,"contract":"contracts/ERC721i.sol:ERC721i","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":2327,"contract":"contracts/ERC721i.sol:ERC721i","label":"_name","offset":0,"slot":"1","type":"t_string_storage"},{"astId":2329,"contract":"contracts/ERC721i.sol:ERC721i","label":"_symbol","offset":0,"slot":"2","type":"t_string_storage"},{"astId":2333,"contract":"contracts/ERC721i.sol:ERC721i","label":"_owners","offset":0,"slot":"3","type":"t_mapping(t_uint256,t_address)"},{"astId":2337,"contract":"contracts/ERC721i.sol:ERC721i","label":"_balances","offset":0,"slot":"4","type":"t_mapping(t_address,t_uint256)"},{"astId":2341,"contract":"contracts/ERC721i.sol:ERC721i","label":"_tokenApprovals","offset":0,"slot":"5","type":"t_mapping(t_uint256,t_address)"},{"astId":2347,"contract":"contracts/ERC721i.sol:ERC721i","label":"_operatorApprovals","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":3181,"contract":"contracts/ERC721i.sol:ERC721i","label":"_ownedTokens","offset":0,"slot":"7","type":"t_mapping(t_address,t_mapping(t_uint256,t_uint256))"},{"astId":3185,"contract":"contracts/ERC721i.sol:ERC721i","label":"_ownedTokensIndex","offset":0,"slot":"8","type":"t_mapping(t_uint256,t_uint256)"},{"astId":3187,"contract":"contracts/ERC721i.sol:ERC721i","label":"_preMintReceiver","offset":0,"slot":"9","type":"t_address"},{"astId":3189,"contract":"contracts/ERC721i.sol:ERC721i","label":"_maxSupply","offset":0,"slot":"10","type":"t_uint256"},{"astId":2225,"contract":"contracts/ERC721i.sol:ERC721i","label":"_baseTokenURI","offset":0,"slot":"11","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_mapping(t_uint256,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => uint256))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}. NOTE: The only changes made here are: - change scope of \"_owners\" from private to internal - change scope of \"_balances\" from private to internal - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\" - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2364":{"entryPoint":null,"id":2364,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr_fromMemory":{"entryPoint":576,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_string_memory_ptr_fromMemory":{"entryPoint":651,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":702,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_memory":{"entryPoint":437,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":289,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":468,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":522,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":882,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":383,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x22":{"entryPoint":835,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":336,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":309,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":314,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":304,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":299,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":319,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4093:16","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:16","statements":[{"nodeType":"YulAssignment","src":"57:19:16","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:16","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:16"},"nodeType":"YulFunctionCall","src":"67:9:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:16"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:16","type":""}],"src":"7:75:16"},{"body":{"nodeType":"YulBlock","src":"177:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:16"},"nodeType":"YulFunctionCall","src":"187:12:16"},"nodeType":"YulExpressionStatement","src":"187:12:16"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:16"},{"body":{"nodeType":"YulBlock","src":"300:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:16"},"nodeType":"YulFunctionCall","src":"310:12:16"},"nodeType":"YulExpressionStatement","src":"310:12:16"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:16"},{"body":{"nodeType":"YulBlock","src":"423:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"440:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"443:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"433:6:16"},"nodeType":"YulFunctionCall","src":"433:12:16"},"nodeType":"YulExpressionStatement","src":"433:12:16"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"334:117:16"},{"body":{"nodeType":"YulBlock","src":"546:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:16"},"nodeType":"YulFunctionCall","src":"556:12:16"},"nodeType":"YulExpressionStatement","src":"556:12:16"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"457:117:16"},{"body":{"nodeType":"YulBlock","src":"628:54:16","statements":[{"nodeType":"YulAssignment","src":"638:38:16","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"656:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"663:2:16","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"652:3:16"},"nodeType":"YulFunctionCall","src":"652:14:16"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:16","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"668:3:16"},"nodeType":"YulFunctionCall","src":"668:7:16"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"648:3:16"},"nodeType":"YulFunctionCall","src":"648:28:16"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"638:6:16"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"611:5:16","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"621:6:16","type":""}],"src":"580:102:16"},{"body":{"nodeType":"YulBlock","src":"716:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"733:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"736:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"726:6:16"},"nodeType":"YulFunctionCall","src":"726:88:16"},"nodeType":"YulExpressionStatement","src":"726:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"830:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"833:4:16","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"823:6:16"},"nodeType":"YulFunctionCall","src":"823:15:16"},"nodeType":"YulExpressionStatement","src":"823:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"854:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"857:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"847:6:16"},"nodeType":"YulFunctionCall","src":"847:15:16"},"nodeType":"YulExpressionStatement","src":"847:15:16"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"688:180:16"},{"body":{"nodeType":"YulBlock","src":"917:238:16","statements":[{"nodeType":"YulVariableDeclaration","src":"927:58:16","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"949:6:16"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"979:4:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"957:21:16"},"nodeType":"YulFunctionCall","src":"957:27:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"945:3:16"},"nodeType":"YulFunctionCall","src":"945:40:16"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"931:10:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"1096:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1098:16:16"},"nodeType":"YulFunctionCall","src":"1098:18:16"},"nodeType":"YulExpressionStatement","src":"1098:18:16"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1039:10:16"},{"kind":"number","nodeType":"YulLiteral","src":"1051:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1036:2:16"},"nodeType":"YulFunctionCall","src":"1036:34:16"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1075:10:16"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1087:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:16"},"nodeType":"YulFunctionCall","src":"1072:22:16"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1033:2:16"},"nodeType":"YulFunctionCall","src":"1033:62:16"},"nodeType":"YulIf","src":"1030:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1134:2:16","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1138:10:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1127:6:16"},"nodeType":"YulFunctionCall","src":"1127:22:16"},"nodeType":"YulExpressionStatement","src":"1127:22:16"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"903:6:16","type":""},{"name":"size","nodeType":"YulTypedName","src":"911:4:16","type":""}],"src":"874:281:16"},{"body":{"nodeType":"YulBlock","src":"1202:88:16","statements":[{"nodeType":"YulAssignment","src":"1212:30:16","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1222:18:16"},"nodeType":"YulFunctionCall","src":"1222:20:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1212:6:16"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1271:6:16"},{"name":"size","nodeType":"YulIdentifier","src":"1279:4:16"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1251:19:16"},"nodeType":"YulFunctionCall","src":"1251:33:16"},"nodeType":"YulExpressionStatement","src":"1251:33:16"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1186:4:16","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1195:6:16","type":""}],"src":"1161:129:16"},{"body":{"nodeType":"YulBlock","src":"1363:241:16","statements":[{"body":{"nodeType":"YulBlock","src":"1468:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1470:16:16"},"nodeType":"YulFunctionCall","src":"1470:18:16"},"nodeType":"YulExpressionStatement","src":"1470:18:16"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1440:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"1448:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1437:2:16"},"nodeType":"YulFunctionCall","src":"1437:30:16"},"nodeType":"YulIf","src":"1434:56:16"},{"nodeType":"YulAssignment","src":"1500:37:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1530:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1508:21:16"},"nodeType":"YulFunctionCall","src":"1508:29:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1500:4:16"}]},{"nodeType":"YulAssignment","src":"1574:23:16","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1586:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"1592:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1582:3:16"},"nodeType":"YulFunctionCall","src":"1582:15:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1574:4:16"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1347:6:16","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1358:4:16","type":""}],"src":"1296:308:16"},{"body":{"nodeType":"YulBlock","src":"1659:258:16","statements":[{"nodeType":"YulVariableDeclaration","src":"1669:10:16","value":{"kind":"number","nodeType":"YulLiteral","src":"1678:1:16","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1673:1:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"1738:63:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1763:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1768:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1759:3:16"},"nodeType":"YulFunctionCall","src":"1759:11:16"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1782:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1787:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1778:3:16"},"nodeType":"YulFunctionCall","src":"1778:11:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1772:5:16"},"nodeType":"YulFunctionCall","src":"1772:18:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:16"},"nodeType":"YulFunctionCall","src":"1752:39:16"},"nodeType":"YulExpressionStatement","src":"1752:39:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1699:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"1702:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1696:2:16"},"nodeType":"YulFunctionCall","src":"1696:13:16"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1710:19:16","statements":[{"nodeType":"YulAssignment","src":"1712:15:16","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1721:1:16"},{"kind":"number","nodeType":"YulLiteral","src":"1724:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1717:3:16"},"nodeType":"YulFunctionCall","src":"1717:10:16"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1712:1:16"}]}]},"pre":{"nodeType":"YulBlock","src":"1692:3:16","statements":[]},"src":"1688:113:16"},{"body":{"nodeType":"YulBlock","src":"1835:76:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1885:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1881:3:16"},"nodeType":"YulFunctionCall","src":"1881:16:16"},{"kind":"number","nodeType":"YulLiteral","src":"1899:1:16","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1874:6:16"},"nodeType":"YulFunctionCall","src":"1874:27:16"},"nodeType":"YulExpressionStatement","src":"1874:27:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1816:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"1819:6:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1813:2:16"},"nodeType":"YulFunctionCall","src":"1813:13:16"},"nodeType":"YulIf","src":"1810:101:16"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1641:3:16","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1646:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1651:6:16","type":""}],"src":"1610:307:16"},{"body":{"nodeType":"YulBlock","src":"2018:326:16","statements":[{"nodeType":"YulAssignment","src":"2028:75:16","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2095:6:16"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2053:41:16"},"nodeType":"YulFunctionCall","src":"2053:49:16"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2037:15:16"},"nodeType":"YulFunctionCall","src":"2037:66:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2028:5:16"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2119:5:16"},{"name":"length","nodeType":"YulIdentifier","src":"2126:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2112:6:16"},"nodeType":"YulFunctionCall","src":"2112:21:16"},"nodeType":"YulExpressionStatement","src":"2112:21:16"},{"nodeType":"YulVariableDeclaration","src":"2142:27:16","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2157:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"2164:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2153:3:16"},"nodeType":"YulFunctionCall","src":"2153:16:16"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2146:3:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"2207:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"2209:77:16"},"nodeType":"YulFunctionCall","src":"2209:79:16"},"nodeType":"YulExpressionStatement","src":"2209:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2188:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2193:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:16"},"nodeType":"YulFunctionCall","src":"2184:16:16"},{"name":"end","nodeType":"YulIdentifier","src":"2202:3:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2181:2:16"},"nodeType":"YulFunctionCall","src":"2181:25:16"},"nodeType":"YulIf","src":"2178:112:16"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2321:3:16"},{"name":"dst","nodeType":"YulIdentifier","src":"2326:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2331:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2299:21:16"},"nodeType":"YulFunctionCall","src":"2299:39:16"},"nodeType":"YulExpressionStatement","src":"2299:39:16"}]},"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1991:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1996:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"2004:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2012:5:16","type":""}],"src":"1923:421:16"},{"body":{"nodeType":"YulBlock","src":"2437:282:16","statements":[{"body":{"nodeType":"YulBlock","src":"2486:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"2488:77:16"},"nodeType":"YulFunctionCall","src":"2488:79:16"},"nodeType":"YulExpressionStatement","src":"2488:79:16"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2465:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"2473:4:16","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2461:3:16"},"nodeType":"YulFunctionCall","src":"2461:17:16"},{"name":"end","nodeType":"YulIdentifier","src":"2480:3:16"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2457:3:16"},"nodeType":"YulFunctionCall","src":"2457:27:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2450:6:16"},"nodeType":"YulFunctionCall","src":"2450:35:16"},"nodeType":"YulIf","src":"2447:122:16"},{"nodeType":"YulVariableDeclaration","src":"2578:27:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2598:6:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2592:5:16"},"nodeType":"YulFunctionCall","src":"2592:13:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2582:6:16","type":""}]},{"nodeType":"YulAssignment","src":"2614:99:16","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2686:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"2694:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2682:3:16"},"nodeType":"YulFunctionCall","src":"2682:17:16"},{"name":"length","nodeType":"YulIdentifier","src":"2701:6:16"},{"name":"end","nodeType":"YulIdentifier","src":"2709:3:16"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"2623:58:16"},"nodeType":"YulFunctionCall","src":"2623:90:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2614:5:16"}]}]},"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2415:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"2423:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2431:5:16","type":""}],"src":"2364:355:16"},{"body":{"nodeType":"YulBlock","src":"2839:739:16","statements":[{"body":{"nodeType":"YulBlock","src":"2885:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2887:77:16"},"nodeType":"YulFunctionCall","src":"2887:79:16"},"nodeType":"YulExpressionStatement","src":"2887:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2860:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"2869:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2856:3:16"},"nodeType":"YulFunctionCall","src":"2856:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"2881:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2852:3:16"},"nodeType":"YulFunctionCall","src":"2852:32:16"},"nodeType":"YulIf","src":"2849:119:16"},{"nodeType":"YulBlock","src":"2978:291:16","statements":[{"nodeType":"YulVariableDeclaration","src":"2993:38:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3017:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"3028:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3013:3:16"},"nodeType":"YulFunctionCall","src":"3013:17:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3007:5:16"},"nodeType":"YulFunctionCall","src":"3007:24:16"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2997:6:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"3078:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3080:77:16"},"nodeType":"YulFunctionCall","src":"3080:79:16"},"nodeType":"YulExpressionStatement","src":"3080:79:16"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3050:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"3058:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3047:2:16"},"nodeType":"YulFunctionCall","src":"3047:30:16"},"nodeType":"YulIf","src":"3044:117:16"},{"nodeType":"YulAssignment","src":"3175:84:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3231:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"3242:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3227:3:16"},"nodeType":"YulFunctionCall","src":"3227:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3251:7:16"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3185:41:16"},"nodeType":"YulFunctionCall","src":"3185:74:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3175:6:16"}]}]},{"nodeType":"YulBlock","src":"3279:292:16","statements":[{"nodeType":"YulVariableDeclaration","src":"3294:39:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3318:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"3329:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3314:3:16"},"nodeType":"YulFunctionCall","src":"3314:18:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3308:5:16"},"nodeType":"YulFunctionCall","src":"3308:25:16"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3298:6:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"3380:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3382:77:16"},"nodeType":"YulFunctionCall","src":"3382:79:16"},"nodeType":"YulExpressionStatement","src":"3382:79:16"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3352:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"3360:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3349:2:16"},"nodeType":"YulFunctionCall","src":"3349:30:16"},"nodeType":"YulIf","src":"3346:117:16"},{"nodeType":"YulAssignment","src":"3477:84:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3533:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"3544:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3529:3:16"},"nodeType":"YulFunctionCall","src":"3529:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3553:7:16"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3487:41:16"},"nodeType":"YulFunctionCall","src":"3487:74:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3477:6:16"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2801:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2812:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2824:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2832:6:16","type":""}],"src":"2725:853:16"},{"body":{"nodeType":"YulBlock","src":"3612:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3629:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3632:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:16"},"nodeType":"YulFunctionCall","src":"3622:88:16"},"nodeType":"YulExpressionStatement","src":"3622:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3726:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3729:4:16","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3719:6:16"},"nodeType":"YulFunctionCall","src":"3719:15:16"},"nodeType":"YulExpressionStatement","src":"3719:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3750:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3753:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3743:6:16"},"nodeType":"YulFunctionCall","src":"3743:15:16"},"nodeType":"YulExpressionStatement","src":"3743:15:16"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"3584:180:16"},{"body":{"nodeType":"YulBlock","src":"3821:269:16","statements":[{"nodeType":"YulAssignment","src":"3831:22:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3845:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"3851:1:16","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3841:3:16"},"nodeType":"YulFunctionCall","src":"3841:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3831:6:16"}]},{"nodeType":"YulVariableDeclaration","src":"3862:38:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3892:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"3898:1:16","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3888:3:16"},"nodeType":"YulFunctionCall","src":"3888:12:16"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"3866:18:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"3939:51:16","statements":[{"nodeType":"YulAssignment","src":"3953:27:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3967:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"3975:4:16","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3963:3:16"},"nodeType":"YulFunctionCall","src":"3963:17:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3953:6:16"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3919:18:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3912:6:16"},"nodeType":"YulFunctionCall","src":"3912:26:16"},"nodeType":"YulIf","src":"3909:81:16"},{"body":{"nodeType":"YulBlock","src":"4042:42:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"4056:16:16"},"nodeType":"YulFunctionCall","src":"4056:18:16"},"nodeType":"YulExpressionStatement","src":"4056:18:16"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4006:18:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4029:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"4037:2:16","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4026:2:16"},"nodeType":"YulFunctionCall","src":"4026:14:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4003:2:16"},"nodeType":"YulFunctionCall","src":"4003:38:16"},"nodeType":"YulIf","src":"4000:84:16"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"3805:4:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3814:6:16","type":""}],"src":"3770:320:16"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n}\n","id":16,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620024f5380380620024f58339818101604052810190620000379190620002be565b81600090805190602001906200004f92919062000071565b5080600190805190602001906200006892919062000071565b505050620003a7565b8280546200007f9062000372565b90600052602060002090601f016020900481019282620000a35760008555620000ef565b82601f10620000be57805160ff1916838001178555620000ef565b82800160010185558215620000ef579182015b82811115620000ee578251825591602001919060010190620000d1565b5b509050620000fe919062000102565b5090565b5b808211156200011d57600081600090555060010162000103565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200018a826200013f565b810181811067ffffffffffffffff82111715620001ac57620001ab62000150565b5b80604052505050565b6000620001c162000121565b9050620001cf82826200017f565b919050565b600067ffffffffffffffff821115620001f257620001f162000150565b5b620001fd826200013f565b9050602081019050919050565b60005b838110156200022a5780820151818401526020810190506200020d565b838111156200023a576000848401525b50505050565b6000620002576200025184620001d4565b620001b5565b9050828152602081018484840111156200027657620002756200013a565b5b620002838482856200020a565b509392505050565b600082601f830112620002a357620002a262000135565b5b8151620002b584826020860162000240565b91505092915050565b60008060408385031215620002d857620002d76200012b565b5b600083015167ffffffffffffffff811115620002f957620002f862000130565b5b62000307858286016200028b565b925050602083015167ffffffffffffffff8111156200032b576200032a62000130565b5b62000339858286016200028b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200038b57607f821691505b602082108103620003a157620003a062000343565b5b50919050565b61213e80620003b76000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e99190611450565b6102bc565b6040516100fb9190611498565b60405180910390f35b61010c61039e565b604051610119919061154c565b60405180910390f35b61013c600480360381019061013791906115a4565b610430565b6040516101499190611612565b60405180910390f35b61016c60048036038101906101679190611659565b610476565b005b61018860048036038101906101839190611699565b61058d565b005b6101a4600480360381019061019f9190611699565b6105ed565b005b6101c060048036038101906101bb91906115a4565b61060d565b6040516101cd9190611612565b60405180910390f35b6101f060048036038101906101eb91906116ec565b6106be565b6040516101fd9190611728565b60405180910390f35b61020e610775565b60405161021b919061154c565b60405180910390f35b61023e6004803603810190610239919061176f565b610807565b005b61025a600480360381019061025591906118e4565b61081d565b005b610276600480360381019061027191906115a4565b61087f565b604051610283919061154c565b60405180910390f35b6102a660048036038101906102a19190611967565b6108e7565b6040516102b39190611498565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061039757506103968261097b565b5b9050919050565b6060600080546103ad906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d9906119d6565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b826109e5565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104818261060d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e890611a79565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610510610a30565b73ffffffffffffffffffffffffffffffffffffffff16148061053f575061053e81610539610a30565b6108e7565b5b61057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057590611b0b565b60405180910390fd5b6105888383610a38565b505050565b61059e610598610a30565b82610af1565b6105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d490611b9d565b60405180910390fd5b6105e8838383610b86565b505050565b6106088383836040518060200160405280600081525061081d565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90611c09565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590611c9b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610784906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546107b0906119d6565b80156107fd5780601f106107d2576101008083540402835291602001916107fd565b820191906000526020600020905b8154815290600101906020018083116107e057829003601f168201915b5050505050905090565b610819610812610a30565b8383610dec565b5050565b61082e610828610a30565b83610af1565b61086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086490611b9d565b60405180910390fd5b61087984848484610f58565b50505050565b606061088a826109e5565b6000610894610fb4565b905060008151116108b457604051806020016040528060008152506108df565b806108be84610fcb565b6040516020016108cf929190611cf7565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6109ee81611099565b610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490611c09565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610aab8361060d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610afd8361060d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b3f5750610b3e81856108e7565b5b80610b7d57508373ffffffffffffffffffffffffffffffffffffffff16610b6584610430565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ba68261060d565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390611d8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290611e1f565b60405180910390fd5b610c76838383611105565b610c81600082610a38565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cd19190611e6e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d289190611ea2565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610de783838361110a565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190611f44565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f4b9190611498565b60405180910390a3505050565b610f63848484610b86565b610f6f8484848461110f565b610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590611fd6565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060006001610fda84611291565b01905060008167ffffffffffffffff811115610ff957610ff86117b9565b5b6040519080825280601f01601f19166020018201604052801561102b5781602001600182028036833780820191505090505b509050600082602001820190505b60011561108e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161108257611081611ff6565b5b04945060008503611039575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115611284578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611154610a30565b8786866040518563ffffffff1660e01b8152600401611176949392919061207a565b6020604051808303816000875af19250505080156111b257506040513d601f19601f820116820180604052508101906111af91906120db565b60015b611234573d80600081146111e2576040519150601f19603f3d011682016040523d82523d6000602084013e6111e7565b606091505b50600081510361122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390611fd6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611289565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106112ef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816112e5576112e4611ff6565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061132c576d04ee2d6d415b85acef8100000000838161132257611321611ff6565b5b0492506020810190505b662386f26fc10000831061135b57662386f26fc10000838161135157611350611ff6565b5b0492506010810190505b6305f5e1008310611384576305f5e100838161137a57611379611ff6565b5b0492506008810190505b61271083106113a957612710838161139f5761139e611ff6565b5b0492506004810190505b606483106113cc57606483816113c2576113c1611ff6565b5b0492506002810190505b600a83106113db576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61142d816113f8565b811461143857600080fd5b50565b60008135905061144a81611424565b92915050565b600060208284031215611466576114656113ee565b5b60006114748482850161143b565b91505092915050565b60008115159050919050565b6114928161147d565b82525050565b60006020820190506114ad6000830184611489565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114ed5780820151818401526020810190506114d2565b838111156114fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061151e826114b3565b61152881856114be565b93506115388185602086016114cf565b61154181611502565b840191505092915050565b600060208201905081810360008301526115668184611513565b905092915050565b6000819050919050565b6115818161156e565b811461158c57600080fd5b50565b60008135905061159e81611578565b92915050565b6000602082840312156115ba576115b96113ee565b5b60006115c88482850161158f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115fc826115d1565b9050919050565b61160c816115f1565b82525050565b60006020820190506116276000830184611603565b92915050565b611636816115f1565b811461164157600080fd5b50565b6000813590506116538161162d565b92915050565b600080604083850312156116705761166f6113ee565b5b600061167e85828601611644565b925050602061168f8582860161158f565b9150509250929050565b6000806000606084860312156116b2576116b16113ee565b5b60006116c086828701611644565b93505060206116d186828701611644565b92505060406116e28682870161158f565b9150509250925092565b600060208284031215611702576117016113ee565b5b600061171084828501611644565b91505092915050565b6117228161156e565b82525050565b600060208201905061173d6000830184611719565b92915050565b61174c8161147d565b811461175757600080fd5b50565b60008135905061176981611743565b92915050565b60008060408385031215611786576117856113ee565b5b600061179485828601611644565b92505060206117a58582860161175a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6117f182611502565b810181811067ffffffffffffffff821117156118105761180f6117b9565b5b80604052505050565b60006118236113e4565b905061182f82826117e8565b919050565b600067ffffffffffffffff82111561184f5761184e6117b9565b5b61185882611502565b9050602081019050919050565b82818337600083830152505050565b600061188761188284611834565b611819565b9050828152602081018484840111156118a3576118a26117b4565b5b6118ae848285611865565b509392505050565b600082601f8301126118cb576118ca6117af565b5b81356118db848260208601611874565b91505092915050565b600080600080608085870312156118fe576118fd6113ee565b5b600061190c87828801611644565b945050602061191d87828801611644565b935050604061192e8782880161158f565b925050606085013567ffffffffffffffff81111561194f5761194e6113f3565b5b61195b878288016118b6565b91505092959194509250565b6000806040838503121561197e5761197d6113ee565b5b600061198c85828601611644565b925050602061199d85828601611644565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ee57607f821691505b602082108103611a0157611a006119a7565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a636021836114be565b9150611a6e82611a07565b604082019050919050565b60006020820190508181036000830152611a9281611a56565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000611af5603e836114be565b9150611b0082611a99565b604082019050919050565b60006020820190508181036000830152611b2481611ae8565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000611b87602e836114be565b9150611b9282611b2b565b604082019050919050565b60006020820190508181036000830152611bb681611b7a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000611bf36018836114be565b9150611bfe82611bbd565b602082019050919050565b60006020820190508181036000830152611c2281611be6565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000611c856029836114be565b9150611c9082611c29565b604082019050919050565b60006020820190508181036000830152611cb481611c78565b9050919050565b600081905092915050565b6000611cd1826114b3565b611cdb8185611cbb565b9350611ceb8185602086016114cf565b80840191505092915050565b6000611d038285611cc6565b9150611d0f8284611cc6565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000611d776025836114be565b9150611d8282611d1b565b604082019050919050565b60006020820190508181036000830152611da681611d6a565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e096024836114be565b9150611e1482611dad565b604082019050919050565b60006020820190508181036000830152611e3881611dfc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e798261156e565b9150611e848361156e565b925082821015611e9757611e96611e3f565b5b828203905092915050565b6000611ead8261156e565b9150611eb88361156e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611eed57611eec611e3f565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000611f2e6019836114be565b9150611f3982611ef8565b602082019050919050565b60006020820190508181036000830152611f5d81611f21565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000611fc06032836114be565b9150611fcb82611f64565b604082019050919050565b60006020820190508181036000830152611fef81611fb3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061204c82612025565b6120568185612030565b93506120668185602086016114cf565b61206f81611502565b840191505092915050565b600060808201905061208f6000830187611603565b61209c6020830186611603565b6120a96040830185611719565b81810360608301526120bb8184612041565b905095945050505050565b6000815190506120d581611424565b92915050565b6000602082840312156120f1576120f06113ee565b5b60006120ff848285016120c6565b9150509291505056fea26469706673582212201befbb93823bb4d4f3dd3dd02315ac03aab291ca85b918aca37bea81708f233e64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x24F5 CODESIZE SUB DUP1 PUSH3 0x24F5 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x2BE JUMP JUMPDEST DUP2 PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x4F SWAP3 SWAP2 SWAP1 PUSH3 0x71 JUMP JUMPDEST POP DUP1 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x68 SWAP3 SWAP2 SWAP1 PUSH3 0x71 JUMP JUMPDEST POP POP POP PUSH3 0x3A7 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x7F SWAP1 PUSH3 0x372 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0xA3 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xEF JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xBE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xEF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xEF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xEE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xD1 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0xFE SWAP2 SWAP1 PUSH3 0x102 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x11D JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x103 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH3 0x18A DUP3 PUSH3 0x13F JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x1AC JUMPI PUSH3 0x1AB PUSH3 0x150 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C1 PUSH3 0x121 JUMP JUMPDEST SWAP1 POP PUSH3 0x1CF DUP3 DUP3 PUSH3 0x17F JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x1F2 JUMPI PUSH3 0x1F1 PUSH3 0x150 JUMP JUMPDEST JUMPDEST PUSH3 0x1FD DUP3 PUSH3 0x13F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x22A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x20D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x23A JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x257 PUSH3 0x251 DUP5 PUSH3 0x1D4 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x276 JUMPI PUSH3 0x275 PUSH3 0x13A JUMP JUMPDEST JUMPDEST PUSH3 0x283 DUP5 DUP3 DUP6 PUSH3 0x20A JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x2A3 JUMPI PUSH3 0x2A2 PUSH3 0x135 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0x2B5 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x240 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2D8 JUMPI PUSH3 0x2D7 PUSH3 0x12B JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x2F9 JUMPI PUSH3 0x2F8 PUSH3 0x130 JUMP JUMPDEST JUMPDEST PUSH3 0x307 DUP6 DUP3 DUP7 ADD PUSH3 0x28B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x32B JUMPI PUSH3 0x32A PUSH3 0x130 JUMP JUMPDEST JUMPDEST PUSH3 0x339 DUP6 DUP3 DUP7 ADD PUSH3 0x28B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x38B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x3A1 JUMPI PUSH3 0x3A0 PUSH3 0x343 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x213E DUP1 PUSH3 0x3B7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x28C JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x206 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x1450 JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x1659 JUMP JUMPDEST PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x188 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x183 SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x5ED JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BB SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CD SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FD SWAP2 SWAP1 PUSH2 0x1728 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x775 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21B SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x239 SWAP2 SWAP1 PUSH2 0x176F JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x255 SWAP2 SWAP1 PUSH2 0x18E4 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x276 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x271 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x1967 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x387 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x397 JUMPI POP PUSH2 0x396 DUP3 PUSH2 0x97B JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x3AD SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3D9 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x426 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3FB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x426 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x409 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43B DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x481 DUP3 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E8 SWAP1 PUSH2 0x1A79 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 PUSH2 0xA30 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x53F JUMPI POP PUSH2 0x53E DUP2 PUSH2 0x539 PUSH2 0xA30 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST PUSH2 0x57E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x575 SWAP1 PUSH2 0x1B0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x588 DUP4 DUP4 PUSH2 0xA38 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x59E PUSH2 0x598 PUSH2 0xA30 JUMP JUMPDEST DUP3 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x5DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D4 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E8 DUP4 DUP4 DUP4 PUSH2 0xB86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x608 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x81D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6AC SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x72E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x725 SWAP1 PUSH2 0x1C9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x784 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7B0 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7FD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x819 PUSH2 0x812 PUSH2 0xA30 JUMP JUMPDEST DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x82E PUSH2 0x828 PUSH2 0xA30 JUMP JUMPDEST DUP4 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x86D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x864 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x879 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF58 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x88A DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x894 PUSH2 0xFB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x8B4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x8DF JUMP JUMPDEST DUP1 PUSH2 0x8BE DUP5 PUSH2 0xFCB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8CF SWAP3 SWAP2 SWAP1 PUSH2 0x1CF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9EE DUP2 PUSH2 0x1099 JUMP JUMPDEST PUSH2 0xA2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA24 SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAAB DUP4 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAFD DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xB3F JUMPI POP PUSH2 0xB3E DUP2 DUP6 PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xB7D JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB65 DUP5 PUSH2 0x430 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBA6 DUP3 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBFC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF3 SWAP1 PUSH2 0x1D8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xC6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC62 SWAP1 PUSH2 0x1E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC76 DUP4 DUP4 DUP4 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0xC81 PUSH1 0x0 DUP3 PUSH2 0xA38 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xCD1 SWAP2 SWAP1 PUSH2 0x1E6E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD28 SWAP2 SWAP1 PUSH2 0x1EA2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xDE7 DUP4 DUP4 DUP4 PUSH2 0x110A JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE51 SWAP1 PUSH2 0x1F44 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0xF4B SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xF63 DUP5 DUP5 DUP5 PUSH2 0xB86 JUMP JUMPDEST PUSH2 0xF6F DUP5 DUP5 DUP5 DUP5 PUSH2 0x110F JUMP JUMPDEST PUSH2 0xFAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFA5 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0xFDA DUP5 PUSH2 0x1291 JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFF9 JUMPI PUSH2 0xFF8 PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x102B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x108E JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x1082 JUMPI PUSH2 0x1081 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x1039 JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x1284 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x1154 PUSH2 0xA30 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1176 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x207A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x11B2 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11AF SWAP2 SWAP1 PUSH2 0x20DB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1234 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11E2 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 0x11E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x122C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1223 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x1289 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x12EF JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x12E5 JUMPI PUSH2 0x12E4 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x132C JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1322 JUMPI PUSH2 0x1321 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x135B JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1351 JUMPI PUSH2 0x1350 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1384 JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x137A JUMPI PUSH2 0x1379 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x13A9 JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x139F JUMPI PUSH2 0x139E PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x13CC JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x13C2 JUMPI PUSH2 0x13C1 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x13DB JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x142D DUP2 PUSH2 0x13F8 JUMP JUMPDEST DUP2 EQ PUSH2 0x1438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x144A DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1466 JUMPI PUSH2 0x1465 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1474 DUP5 DUP3 DUP6 ADD PUSH2 0x143B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1492 DUP2 PUSH2 0x147D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x14AD PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1489 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14ED JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x14D2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14FC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x151E DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1528 DUP2 DUP6 PUSH2 0x14BE JUMP JUMPDEST SWAP4 POP PUSH2 0x1538 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x1541 DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1566 DUP2 DUP5 PUSH2 0x1513 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1581 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP2 EQ PUSH2 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x159E DUP2 PUSH2 0x1578 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15BA JUMPI PUSH2 0x15B9 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x15C8 DUP5 DUP3 DUP6 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FC DUP3 PUSH2 0x15D1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x160C DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1627 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1603 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1636 DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x1641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1653 DUP2 PUSH2 0x162D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1670 JUMPI PUSH2 0x166F PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x167E DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x168F DUP6 DUP3 DUP7 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x16B2 JUMPI PUSH2 0x16B1 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x16C0 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x16D1 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x16E2 DUP7 DUP3 DUP8 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1702 JUMPI PUSH2 0x1701 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1710 DUP5 DUP3 DUP6 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1722 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x173D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1719 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x174C DUP2 PUSH2 0x147D JUMP JUMPDEST DUP2 EQ PUSH2 0x1757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1769 DUP2 PUSH2 0x1743 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1786 JUMPI PUSH2 0x1785 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1794 DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x17A5 DUP6 DUP3 DUP7 ADD PUSH2 0x175A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x17F1 DUP3 PUSH2 0x1502 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1810 JUMPI PUSH2 0x180F PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1823 PUSH2 0x13E4 JUMP JUMPDEST SWAP1 POP PUSH2 0x182F DUP3 DUP3 PUSH2 0x17E8 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x184F JUMPI PUSH2 0x184E PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH2 0x1858 DUP3 PUSH2 0x1502 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1887 PUSH2 0x1882 DUP5 PUSH2 0x1834 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x18A3 JUMPI PUSH2 0x18A2 PUSH2 0x17B4 JUMP JUMPDEST JUMPDEST PUSH2 0x18AE DUP5 DUP3 DUP6 PUSH2 0x1865 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x18CB JUMPI PUSH2 0x18CA PUSH2 0x17AF JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x18DB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1874 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x18FE JUMPI PUSH2 0x18FD PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x190C DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x191D DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x192E DUP8 DUP3 DUP9 ADD PUSH2 0x158F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x194F JUMPI PUSH2 0x194E PUSH2 0x13F3 JUMP JUMPDEST JUMPDEST PUSH2 0x195B DUP8 DUP3 DUP9 ADD PUSH2 0x18B6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x197E JUMPI PUSH2 0x197D PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x198C DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x199D DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x19EE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1A01 JUMPI PUSH2 0x1A00 PUSH2 0x19A7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A63 PUSH1 0x21 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1A6E DUP3 PUSH2 0x1A07 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A92 DUP2 PUSH2 0x1A56 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AF5 PUSH1 0x3E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B00 DUP3 PUSH2 0x1A99 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B24 DUP2 PUSH2 0x1AE8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B87 PUSH1 0x2E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B92 DUP3 PUSH2 0x1B2B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BB6 DUP2 PUSH2 0x1B7A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF3 PUSH1 0x18 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1BFE DUP3 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C22 DUP2 PUSH2 0x1BE6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C85 PUSH1 0x29 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1C90 DUP3 PUSH2 0x1C29 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1CB4 DUP2 PUSH2 0x1C78 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CD1 DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1CDB DUP2 DUP6 PUSH2 0x1CBB JUMP JUMPDEST SWAP4 POP PUSH2 0x1CEB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D03 DUP3 DUP6 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D0F DUP3 DUP5 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D77 PUSH1 0x25 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1D82 DUP3 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1DA6 DUP2 PUSH2 0x1D6A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E09 PUSH1 0x24 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1E14 DUP3 PUSH2 0x1DAD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E38 DUP2 PUSH2 0x1DFC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E79 DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1E84 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x1E97 JUMPI PUSH2 0x1E96 PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EAD DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1EB8 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x1EED JUMPI PUSH2 0x1EEC PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F2E PUSH1 0x19 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1F39 DUP3 PUSH2 0x1EF8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F5D DUP2 PUSH2 0x1F21 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FC0 PUSH1 0x32 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1FCB DUP3 PUSH2 0x1F64 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FEF DUP2 PUSH2 0x1FB3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204C DUP3 PUSH2 0x2025 JUMP JUMPDEST PUSH2 0x2056 DUP2 DUP6 PUSH2 0x2030 JUMP JUMPDEST SWAP4 POP PUSH2 0x2066 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x206F DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x208F PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x20A9 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1719 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x20BB DUP2 DUP5 PUSH2 0x2041 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x20D5 DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20F1 JUMPI PUSH2 0x20F0 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20FF DUP5 DUP3 DUP6 ADD PUSH2 0x20C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xEF 0xBB SWAP4 DUP3 EXTCODESIZE 0xB4 0xD4 RETURN 0xDD RETURNDATASIZE 0xD0 0x23 ISZERO 0xAC SUB 0xAA 0xB2 SWAP2 0xCA DUP6 0xB9 XOR 0xAC LOG3 PUSH28 0xEA81708F233E64736F6C634300080D00330000000000000000000000 ","sourceMap":"1382:13860:14:-:0;;;2237:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2311:5;2303;:13;;;;;;;;;;;;:::i;:::-;;2336:7;2326;:17;;;;;;;;;;;;:::i;:::-;;2237:113;;1382:13860;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:16:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:853::-;2824:6;2832;2881:2;2869:9;2860:7;2856:23;2852:32;2849:119;;;2887:79;;:::i;:::-;2849:119;3028:1;3017:9;3013:17;3007:24;3058:18;3050:6;3047:30;3044:117;;;3080:79;;:::i;:::-;3044:117;3185:74;3251:7;3242:6;3231:9;3227:22;3185:74;:::i;:::-;3175:84;;2978:291;3329:2;3318:9;3314:18;3308:25;3360:18;3352:6;3349:30;3346:117;;;3382:79;;:::i;:::-;3346:117;3487:74;3553:7;3544:6;3533:9;3529:22;3487:74;:::i;:::-;3477:84;;3279:292;2725:853;;;;;:::o;3584:180::-;3632:77;3629:1;3622:88;3729:4;3726:1;3719:15;3753:4;3750:1;3743:15;3770:320;3814:6;3851:1;3845:4;3841:12;3831:22;;3898:1;3892:4;3888:12;3919:18;3909:81;;3975:4;3967:6;3963:17;3953:27;;3909:81;4037:2;4029:6;4026:14;4006:18;4003:38;4000:84;;4056:18;;:::i;:::-;4000:84;3821:269;3770:320;;;:::o;1382:13860:14:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_3165":{"entryPoint":4362,"id":3165,"parameterSlots":3,"returnSlots":0},"@_approve_3033":{"entryPoint":2616,"id":3033,"parameterSlots":2,"returnSlots":0},"@_baseURI_2515":{"entryPoint":4020,"id":2515,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_3154":{"entryPoint":4357,"id":3154,"parameterSlots":3,"returnSlots":0},"@_checkOnERC721Received_3143":{"entryPoint":4367,"id":3143,"parameterSlots":4,"returnSlots":1},"@_exists_2733":{"entryPoint":4249,"id":2733,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_2766":{"entryPoint":2801,"id":2766,"parameterSlots":2,"returnSlots":1},"@_msgSender_646":{"entryPoint":2608,"id":646,"parameterSlots":0,"returnSlots":1},"@_requireMinted_3079":{"entryPoint":2533,"id":3079,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_2715":{"entryPoint":3928,"id":2715,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_3065":{"entryPoint":3564,"id":3065,"parameterSlots":3,"returnSlots":0},"@_transfer_3010":{"entryPoint":2950,"id":3010,"parameterSlots":3,"returnSlots":0},"@approve_2557":{"entryPoint":1142,"id":2557,"parameterSlots":2,"returnSlots":0},"@balanceOf_2419":{"entryPoint":1726,"id":2419,"parameterSlots":1,"returnSlots":1},"@getApproved_2575":{"entryPoint":1072,"id":2575,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_2610":{"entryPoint":2279,"id":2610,"parameterSlots":2,"returnSlots":1},"@log10_1624":{"entryPoint":4753,"id":1624,"parameterSlots":1,"returnSlots":1},"@name_2457":{"entryPoint":926,"id":2457,"parameterSlots":0,"returnSlots":1},"@ownerOf_2447":{"entryPoint":1549,"id":2447,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_2656":{"entryPoint":1517,"id":2656,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_2686":{"entryPoint":2077,"id":2686,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_2592":{"entryPoint":2055,"id":2592,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2395":{"entryPoint":700,"id":2395,"parameterSlots":1,"returnSlots":1},"@supportsInterface_908":{"entryPoint":2427,"id":908,"parameterSlots":1,"returnSlots":1},"@symbol_2467":{"entryPoint":1909,"id":2467,"parameterSlots":0,"returnSlots":1},"@toString_715":{"entryPoint":4043,"id":715,"parameterSlots":1,"returnSlots":1},"@tokenURI_2506":{"entryPoint":2175,"id":2506,"parameterSlots":1,"returnSlots":1},"@transferFrom_2637":{"entryPoint":1421,"id":2637,"parameterSlots":3,"returnSlots":0},"abi_decode_available_length_t_bytes_memory_ptr":{"entryPoint":6260,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":5700,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":5978,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4":{"entryPoint":5179,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4_fromMemory":{"entryPoint":8390,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr":{"entryPoint":6326,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":5519,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":5868,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":6503,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":5785,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":6372,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":5999,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":5721,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":5200,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":8411,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":5540,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":5635,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":5257,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":8257,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":5395,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":7366,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack":{"entryPoint":8115,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack":{"entryPoint":7530,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack":{"entryPoint":7676,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack":{"entryPoint":7969,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack":{"entryPoint":7288,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack":{"entryPoint":6888,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack":{"entryPoint":7142,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack":{"entryPoint":6742,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack":{"entryPoint":7034,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":5913,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":7415,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":5650,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":8314,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":5272,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5452,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8150,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7565,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7711,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8004,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7323,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6923,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7177,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6777,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7069,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":5928,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":6169,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":5092,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":6196,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":8229,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":5299,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":8240,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":5310,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":7355,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":7842,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":7790,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":5617,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":5245,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":5112,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":5585,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":5486,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory":{"entryPoint":6245,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory":{"entryPoint":5327,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":6614,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":6120,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":7743,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":8182,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":6567,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":6073,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":6063,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":6068,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":5107,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":5102,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":5378,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e":{"entryPoint":8036,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48":{"entryPoint":7451,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4":{"entryPoint":7597,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05":{"entryPoint":7928,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159":{"entryPoint":7209,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304":{"entryPoint":6809,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f":{"entryPoint":7101,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942":{"entryPoint":6663,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b":{"entryPoint":6955,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":5677,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":5955,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes4":{"entryPoint":5156,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":5496,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:23863:16","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:16","statements":[{"nodeType":"YulAssignment","src":"57:19:16","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:16","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:16"},"nodeType":"YulFunctionCall","src":"67:9:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:16"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:16","type":""}],"src":"7:75:16"},{"body":{"nodeType":"YulBlock","src":"177:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:16"},"nodeType":"YulFunctionCall","src":"187:12:16"},"nodeType":"YulExpressionStatement","src":"187:12:16"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:16"},{"body":{"nodeType":"YulBlock","src":"300:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:16"},"nodeType":"YulFunctionCall","src":"310:12:16"},"nodeType":"YulExpressionStatement","src":"310:12:16"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:16"},{"body":{"nodeType":"YulBlock","src":"378:105:16","statements":[{"nodeType":"YulAssignment","src":"388:89:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"410:66:16","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"399:3:16"},"nodeType":"YulFunctionCall","src":"399:78:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"388:7:16"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"360:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"370:7:16","type":""}],"src":"334:149:16"},{"body":{"nodeType":"YulBlock","src":"531:78:16","statements":[{"body":{"nodeType":"YulBlock","src":"587:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"596:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"599:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"589:6:16"},"nodeType":"YulFunctionCall","src":"589:12:16"},"nodeType":"YulExpressionStatement","src":"589:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"554:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"578:5:16"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"561:16:16"},"nodeType":"YulFunctionCall","src":"561:23:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"551:2:16"},"nodeType":"YulFunctionCall","src":"551:34:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"544:6:16"},"nodeType":"YulFunctionCall","src":"544:42:16"},"nodeType":"YulIf","src":"541:62:16"}]},"name":"validator_revert_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"524:5:16","type":""}],"src":"489:120:16"},{"body":{"nodeType":"YulBlock","src":"666:86:16","statements":[{"nodeType":"YulAssignment","src":"676:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"698:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:16"},"nodeType":"YulFunctionCall","src":"685:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"676:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"740:5:16"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"714:25:16"},"nodeType":"YulFunctionCall","src":"714:32:16"},"nodeType":"YulExpressionStatement","src":"714:32:16"}]},"name":"abi_decode_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"644:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"652:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"660:5:16","type":""}],"src":"615:137:16"},{"body":{"nodeType":"YulBlock","src":"823:262:16","statements":[{"body":{"nodeType":"YulBlock","src":"869:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"871:77:16"},"nodeType":"YulFunctionCall","src":"871:79:16"},"nodeType":"YulExpressionStatement","src":"871:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"844:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"853:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"840:3:16"},"nodeType":"YulFunctionCall","src":"840:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"865:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"836:3:16"},"nodeType":"YulFunctionCall","src":"836:32:16"},"nodeType":"YulIf","src":"833:119:16"},{"nodeType":"YulBlock","src":"962:116:16","statements":[{"nodeType":"YulVariableDeclaration","src":"977:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"991:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"981:6:16","type":""}]},{"nodeType":"YulAssignment","src":"1006:62:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1040:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"1051:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1036:3:16"},"nodeType":"YulFunctionCall","src":"1036:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1060:7:16"}],"functionName":{"name":"abi_decode_t_bytes4","nodeType":"YulIdentifier","src":"1016:19:16"},"nodeType":"YulFunctionCall","src":"1016:52:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1006:6:16"}]}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"793:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"804:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"816:6:16","type":""}],"src":"758:327:16"},{"body":{"nodeType":"YulBlock","src":"1133:48:16","statements":[{"nodeType":"YulAssignment","src":"1143:32:16","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1161:6:16"},"nodeType":"YulFunctionCall","src":"1161:13:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1154:6:16"},"nodeType":"YulFunctionCall","src":"1154:21:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1143:7:16"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1115:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1125:7:16","type":""}],"src":"1091:90:16"},{"body":{"nodeType":"YulBlock","src":"1246:50:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1283:5:16"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"1268:14:16"},"nodeType":"YulFunctionCall","src":"1268:21:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1256:6:16"},"nodeType":"YulFunctionCall","src":"1256:34:16"},"nodeType":"YulExpressionStatement","src":"1256:34:16"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1234:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1241:3:16","type":""}],"src":"1187:109:16"},{"body":{"nodeType":"YulBlock","src":"1394:118:16","statements":[{"nodeType":"YulAssignment","src":"1404:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:16"},"nodeType":"YulFunctionCall","src":"1412:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1404:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1478:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1491:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"1502:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1487:3:16"},"nodeType":"YulFunctionCall","src":"1487:17:16"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"1440:37:16"},"nodeType":"YulFunctionCall","src":"1440:65:16"},"nodeType":"YulExpressionStatement","src":"1440:65:16"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1366:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1378:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1389:4:16","type":""}],"src":"1302:210:16"},{"body":{"nodeType":"YulBlock","src":"1577:40:16","statements":[{"nodeType":"YulAssignment","src":"1588:22:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1604:5:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1598:5:16"},"nodeType":"YulFunctionCall","src":"1598:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1588:6:16"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1560:5:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1570:6:16","type":""}],"src":"1518:99:16"},{"body":{"nodeType":"YulBlock","src":"1719:73:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1736:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"1741:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1729:6:16"},"nodeType":"YulFunctionCall","src":"1729:19:16"},"nodeType":"YulExpressionStatement","src":"1729:19:16"},{"nodeType":"YulAssignment","src":"1757:29:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1776:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"1781:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1772:3:16"},"nodeType":"YulFunctionCall","src":"1772:14:16"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1757:11:16"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1691:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1696:6:16","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1707:11:16","type":""}],"src":"1623:169:16"},{"body":{"nodeType":"YulBlock","src":"1847:258:16","statements":[{"nodeType":"YulVariableDeclaration","src":"1857:10:16","value":{"kind":"number","nodeType":"YulLiteral","src":"1866:1:16","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1861:1:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"1926:63:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1951:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1956:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1947:3:16"},"nodeType":"YulFunctionCall","src":"1947:11:16"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1970:3:16"},{"name":"i","nodeType":"YulIdentifier","src":"1975:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:16"},"nodeType":"YulFunctionCall","src":"1966:11:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1960:5:16"},"nodeType":"YulFunctionCall","src":"1960:18:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1940:6:16"},"nodeType":"YulFunctionCall","src":"1940:39:16"},"nodeType":"YulExpressionStatement","src":"1940:39:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1887:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1884:2:16"},"nodeType":"YulFunctionCall","src":"1884:13:16"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1898:19:16","statements":[{"nodeType":"YulAssignment","src":"1900:15:16","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1909:1:16"},{"kind":"number","nodeType":"YulLiteral","src":"1912:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1905:3:16"},"nodeType":"YulFunctionCall","src":"1905:10:16"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1900:1:16"}]}]},"pre":{"nodeType":"YulBlock","src":"1880:3:16","statements":[]},"src":"1876:113:16"},{"body":{"nodeType":"YulBlock","src":"2023:76:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2073:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2078:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2069:3:16"},"nodeType":"YulFunctionCall","src":"2069:16:16"},{"kind":"number","nodeType":"YulLiteral","src":"2087:1:16","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2062:6:16"},"nodeType":"YulFunctionCall","src":"2062:27:16"},"nodeType":"YulExpressionStatement","src":"2062:27:16"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2004:1:16"},{"name":"length","nodeType":"YulIdentifier","src":"2007:6:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2001:2:16"},"nodeType":"YulFunctionCall","src":"2001:13:16"},"nodeType":"YulIf","src":"1998:101:16"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1829:3:16","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1834:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"1839:6:16","type":""}],"src":"1798:307:16"},{"body":{"nodeType":"YulBlock","src":"2159:54:16","statements":[{"nodeType":"YulAssignment","src":"2169:38:16","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2187:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"2194:2:16","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2183:3:16"},"nodeType":"YulFunctionCall","src":"2183:14:16"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2203:2:16","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2199:3:16"},"nodeType":"YulFunctionCall","src":"2199:7:16"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2179:3:16"},"nodeType":"YulFunctionCall","src":"2179:28:16"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2169:6:16"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2142:5:16","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"2152:6:16","type":""}],"src":"2111:102:16"},{"body":{"nodeType":"YulBlock","src":"2311:272:16","statements":[{"nodeType":"YulVariableDeclaration","src":"2321:53:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2368:5:16"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2335:32:16"},"nodeType":"YulFunctionCall","src":"2335:39:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2325:6:16","type":""}]},{"nodeType":"YulAssignment","src":"2383:78:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2449:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2454:6:16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2390:58:16"},"nodeType":"YulFunctionCall","src":"2390:71:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2383:3:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2496:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"2503:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:16"},"nodeType":"YulFunctionCall","src":"2492:16:16"},{"name":"pos","nodeType":"YulIdentifier","src":"2510:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"2515:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2470:21:16"},"nodeType":"YulFunctionCall","src":"2470:52:16"},"nodeType":"YulExpressionStatement","src":"2470:52:16"},{"nodeType":"YulAssignment","src":"2531:46:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2542:3:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2569:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2547:21:16"},"nodeType":"YulFunctionCall","src":"2547:29:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2538:3:16"},"nodeType":"YulFunctionCall","src":"2538:39:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2531:3:16"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2292:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2299:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2307:3:16","type":""}],"src":"2219:364:16"},{"body":{"nodeType":"YulBlock","src":"2707:195:16","statements":[{"nodeType":"YulAssignment","src":"2717:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2729:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"2740:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2725:3:16"},"nodeType":"YulFunctionCall","src":"2725:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2717:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2764:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"2775:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2760:3:16"},"nodeType":"YulFunctionCall","src":"2760:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2783:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"2789:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2779:3:16"},"nodeType":"YulFunctionCall","src":"2779:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2753:6:16"},"nodeType":"YulFunctionCall","src":"2753:47:16"},"nodeType":"YulExpressionStatement","src":"2753:47:16"},{"nodeType":"YulAssignment","src":"2809:86:16","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2881:6:16"},{"name":"tail","nodeType":"YulIdentifier","src":"2890:4:16"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2817:63:16"},"nodeType":"YulFunctionCall","src":"2817:78:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2809:4:16"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2679:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2691:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2702:4:16","type":""}],"src":"2589:313:16"},{"body":{"nodeType":"YulBlock","src":"2953:32:16","statements":[{"nodeType":"YulAssignment","src":"2963:16:16","value":{"name":"value","nodeType":"YulIdentifier","src":"2974:5:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2963:7:16"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2935:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2945:7:16","type":""}],"src":"2908:77:16"},{"body":{"nodeType":"YulBlock","src":"3034:79:16","statements":[{"body":{"nodeType":"YulBlock","src":"3091:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3100:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3103:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3093:6:16"},"nodeType":"YulFunctionCall","src":"3093:12:16"},"nodeType":"YulExpressionStatement","src":"3093:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3057:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3082:5:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3064:17:16"},"nodeType":"YulFunctionCall","src":"3064:24:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3054:2:16"},"nodeType":"YulFunctionCall","src":"3054:35:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3047:6:16"},"nodeType":"YulFunctionCall","src":"3047:43:16"},"nodeType":"YulIf","src":"3044:63:16"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3027:5:16","type":""}],"src":"2991:122:16"},{"body":{"nodeType":"YulBlock","src":"3171:87:16","statements":[{"nodeType":"YulAssignment","src":"3181:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3203:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3190:12:16"},"nodeType":"YulFunctionCall","src":"3190:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3181:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3246:5:16"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"3219:26:16"},"nodeType":"YulFunctionCall","src":"3219:33:16"},"nodeType":"YulExpressionStatement","src":"3219:33:16"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3149:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"3157:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3165:5:16","type":""}],"src":"3119:139:16"},{"body":{"nodeType":"YulBlock","src":"3330:263:16","statements":[{"body":{"nodeType":"YulBlock","src":"3376:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3378:77:16"},"nodeType":"YulFunctionCall","src":"3378:79:16"},"nodeType":"YulExpressionStatement","src":"3378:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3351:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"3360:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3347:3:16"},"nodeType":"YulFunctionCall","src":"3347:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"3372:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3343:3:16"},"nodeType":"YulFunctionCall","src":"3343:32:16"},"nodeType":"YulIf","src":"3340:119:16"},{"nodeType":"YulBlock","src":"3469:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"3484:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"3498:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3488:6:16","type":""}]},{"nodeType":"YulAssignment","src":"3513:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"3559:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3544:3:16"},"nodeType":"YulFunctionCall","src":"3544:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3568:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3523:20:16"},"nodeType":"YulFunctionCall","src":"3523:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3513:6:16"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3300:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3311:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3323:6:16","type":""}],"src":"3264:329:16"},{"body":{"nodeType":"YulBlock","src":"3644:81:16","statements":[{"nodeType":"YulAssignment","src":"3654:65:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3669:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"3676:42:16","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3665:3:16"},"nodeType":"YulFunctionCall","src":"3665:54:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3654:7:16"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3626:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3636:7:16","type":""}],"src":"3599:126:16"},{"body":{"nodeType":"YulBlock","src":"3776:51:16","statements":[{"nodeType":"YulAssignment","src":"3786:35:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3815:5:16"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"3797:17:16"},"nodeType":"YulFunctionCall","src":"3797:24:16"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3786:7:16"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3758:5:16","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3768:7:16","type":""}],"src":"3731:96:16"},{"body":{"nodeType":"YulBlock","src":"3898:53:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3915:3:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3938:5:16"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"3920:17:16"},"nodeType":"YulFunctionCall","src":"3920:24:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3908:6:16"},"nodeType":"YulFunctionCall","src":"3908:37:16"},"nodeType":"YulExpressionStatement","src":"3908:37:16"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3886:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3893:3:16","type":""}],"src":"3833:118:16"},{"body":{"nodeType":"YulBlock","src":"4055:124:16","statements":[{"nodeType":"YulAssignment","src":"4065:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4077:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"4088:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4073:3:16"},"nodeType":"YulFunctionCall","src":"4073:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4065:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4145:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4158:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"4169:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4154:3:16"},"nodeType":"YulFunctionCall","src":"4154:17:16"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"4101:43:16"},"nodeType":"YulFunctionCall","src":"4101:71:16"},"nodeType":"YulExpressionStatement","src":"4101:71:16"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4027:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4039:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4050:4:16","type":""}],"src":"3957:222:16"},{"body":{"nodeType":"YulBlock","src":"4228:79:16","statements":[{"body":{"nodeType":"YulBlock","src":"4285:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4294:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4297:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4287:6:16"},"nodeType":"YulFunctionCall","src":"4287:12:16"},"nodeType":"YulExpressionStatement","src":"4287:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4251:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4276:5:16"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"4258:17:16"},"nodeType":"YulFunctionCall","src":"4258:24:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4248:2:16"},"nodeType":"YulFunctionCall","src":"4248:35:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4241:6:16"},"nodeType":"YulFunctionCall","src":"4241:43:16"},"nodeType":"YulIf","src":"4238:63:16"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4221:5:16","type":""}],"src":"4185:122:16"},{"body":{"nodeType":"YulBlock","src":"4365:87:16","statements":[{"nodeType":"YulAssignment","src":"4375:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4397:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4384:12:16"},"nodeType":"YulFunctionCall","src":"4384:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4375:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4440:5:16"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4413:26:16"},"nodeType":"YulFunctionCall","src":"4413:33:16"},"nodeType":"YulExpressionStatement","src":"4413:33:16"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4343:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"4351:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4359:5:16","type":""}],"src":"4313:139:16"},{"body":{"nodeType":"YulBlock","src":"4541:391:16","statements":[{"body":{"nodeType":"YulBlock","src":"4587:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4589:77:16"},"nodeType":"YulFunctionCall","src":"4589:79:16"},"nodeType":"YulExpressionStatement","src":"4589:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4562:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4558:3:16"},"nodeType":"YulFunctionCall","src":"4558:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"4583:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4554:3:16"},"nodeType":"YulFunctionCall","src":"4554:32:16"},"nodeType":"YulIf","src":"4551:119:16"},{"nodeType":"YulBlock","src":"4680:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4695:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"4709:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4699:6:16","type":""}]},{"nodeType":"YulAssignment","src":"4724:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4759:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"4770:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4755:3:16"},"nodeType":"YulFunctionCall","src":"4755:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4779:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4734:20:16"},"nodeType":"YulFunctionCall","src":"4734:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4724:6:16"}]}]},{"nodeType":"YulBlock","src":"4807:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4822:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"4836:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4826:6:16","type":""}]},{"nodeType":"YulAssignment","src":"4852:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"4898:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4883:3:16"},"nodeType":"YulFunctionCall","src":"4883:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4907:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4862:20:16"},"nodeType":"YulFunctionCall","src":"4862:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4852:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4503:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4514:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4526:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4534:6:16","type":""}],"src":"4458:474:16"},{"body":{"nodeType":"YulBlock","src":"5038:519:16","statements":[{"body":{"nodeType":"YulBlock","src":"5084:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5086:77:16"},"nodeType":"YulFunctionCall","src":"5086:79:16"},"nodeType":"YulExpressionStatement","src":"5086:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5059:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"5068:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5055:3:16"},"nodeType":"YulFunctionCall","src":"5055:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"5080:2:16","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5051:3:16"},"nodeType":"YulFunctionCall","src":"5051:32:16"},"nodeType":"YulIf","src":"5048:119:16"},{"nodeType":"YulBlock","src":"5177:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5192:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5206:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5196:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5221:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5256:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5267:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5252:3:16"},"nodeType":"YulFunctionCall","src":"5252:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5276:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5231:20:16"},"nodeType":"YulFunctionCall","src":"5231:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5221:6:16"}]}]},{"nodeType":"YulBlock","src":"5304:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5319:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5333:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5323:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5349:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5384:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5395:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5380:3:16"},"nodeType":"YulFunctionCall","src":"5380:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5404:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5359:20:16"},"nodeType":"YulFunctionCall","src":"5359:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5349:6:16"}]}]},{"nodeType":"YulBlock","src":"5432:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5447:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5461:2:16","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5451:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5477:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5512:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5523:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5508:3:16"},"nodeType":"YulFunctionCall","src":"5508:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5532:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5487:20:16"},"nodeType":"YulFunctionCall","src":"5487:53:16"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5477:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4992:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5003:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5015:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5023:6:16","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5031:6:16","type":""}],"src":"4938:619:16"},{"body":{"nodeType":"YulBlock","src":"5629:263:16","statements":[{"body":{"nodeType":"YulBlock","src":"5675:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5677:77:16"},"nodeType":"YulFunctionCall","src":"5677:79:16"},"nodeType":"YulExpressionStatement","src":"5677:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5650:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"5659:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5646:3:16"},"nodeType":"YulFunctionCall","src":"5646:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"5671:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5642:3:16"},"nodeType":"YulFunctionCall","src":"5642:32:16"},"nodeType":"YulIf","src":"5639:119:16"},{"nodeType":"YulBlock","src":"5768:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"5783:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"5797:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5787:6:16","type":""}]},{"nodeType":"YulAssignment","src":"5812:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5847:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"5858:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5843:3:16"},"nodeType":"YulFunctionCall","src":"5843:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5867:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5822:20:16"},"nodeType":"YulFunctionCall","src":"5822:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5812:6:16"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5599:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5610:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5622:6:16","type":""}],"src":"5563:329:16"},{"body":{"nodeType":"YulBlock","src":"5963:53:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5980:3:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6003:5:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5985:17:16"},"nodeType":"YulFunctionCall","src":"5985:24:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5973:6:16"},"nodeType":"YulFunctionCall","src":"5973:37:16"},"nodeType":"YulExpressionStatement","src":"5973:37:16"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5951:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5958:3:16","type":""}],"src":"5898:118:16"},{"body":{"nodeType":"YulBlock","src":"6120:124:16","statements":[{"nodeType":"YulAssignment","src":"6130:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6142:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"6153:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6138:3:16"},"nodeType":"YulFunctionCall","src":"6138:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6130:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6210:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6223:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"6234:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6219:3:16"},"nodeType":"YulFunctionCall","src":"6219:17:16"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6166:43:16"},"nodeType":"YulFunctionCall","src":"6166:71:16"},"nodeType":"YulExpressionStatement","src":"6166:71:16"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6092:9:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6104:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6115:4:16","type":""}],"src":"6022:222:16"},{"body":{"nodeType":"YulBlock","src":"6290:76:16","statements":[{"body":{"nodeType":"YulBlock","src":"6344:16:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6353:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6356:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6346:6:16"},"nodeType":"YulFunctionCall","src":"6346:12:16"},"nodeType":"YulExpressionStatement","src":"6346:12:16"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6313:5:16"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6335:5:16"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6320:14:16"},"nodeType":"YulFunctionCall","src":"6320:21:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6310:2:16"},"nodeType":"YulFunctionCall","src":"6310:32:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6303:6:16"},"nodeType":"YulFunctionCall","src":"6303:40:16"},"nodeType":"YulIf","src":"6300:60:16"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6283:5:16","type":""}],"src":"6250:116:16"},{"body":{"nodeType":"YulBlock","src":"6421:84:16","statements":[{"nodeType":"YulAssignment","src":"6431:29:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6453:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6440:12:16"},"nodeType":"YulFunctionCall","src":"6440:20:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6431:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6493:5:16"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6469:23:16"},"nodeType":"YulFunctionCall","src":"6469:30:16"},"nodeType":"YulExpressionStatement","src":"6469:30:16"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6399:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"6407:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6415:5:16","type":""}],"src":"6372:133:16"},{"body":{"nodeType":"YulBlock","src":"6591:388:16","statements":[{"body":{"nodeType":"YulBlock","src":"6637:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6639:77:16"},"nodeType":"YulFunctionCall","src":"6639:79:16"},"nodeType":"YulExpressionStatement","src":"6639:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6612:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"6621:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6608:3:16"},"nodeType":"YulFunctionCall","src":"6608:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"6633:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6604:3:16"},"nodeType":"YulFunctionCall","src":"6604:32:16"},"nodeType":"YulIf","src":"6601:119:16"},{"nodeType":"YulBlock","src":"6730:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"6745:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"6759:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6749:6:16","type":""}]},{"nodeType":"YulAssignment","src":"6774:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6809:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"6820:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6805:3:16"},"nodeType":"YulFunctionCall","src":"6805:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6829:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6784:20:16"},"nodeType":"YulFunctionCall","src":"6784:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6774:6:16"}]}]},{"nodeType":"YulBlock","src":"6857:115:16","statements":[{"nodeType":"YulVariableDeclaration","src":"6872:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"6886:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6876:6:16","type":""}]},{"nodeType":"YulAssignment","src":"6902:60:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6934:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"6945:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6930:3:16"},"nodeType":"YulFunctionCall","src":"6930:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6954:7:16"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"6912:17:16"},"nodeType":"YulFunctionCall","src":"6912:50:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6902:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6553:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6564:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6576:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6584:6:16","type":""}],"src":"6511:468:16"},{"body":{"nodeType":"YulBlock","src":"7074:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7091:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7094:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7084:6:16"},"nodeType":"YulFunctionCall","src":"7084:12:16"},"nodeType":"YulExpressionStatement","src":"7084:12:16"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"6985:117:16"},{"body":{"nodeType":"YulBlock","src":"7197:28:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7214:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7217:1:16","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7207:6:16"},"nodeType":"YulFunctionCall","src":"7207:12:16"},"nodeType":"YulExpressionStatement","src":"7207:12:16"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"7108:117:16"},{"body":{"nodeType":"YulBlock","src":"7259:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7276:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7279:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7269:6:16"},"nodeType":"YulFunctionCall","src":"7269:88:16"},"nodeType":"YulExpressionStatement","src":"7269:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7373:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7376:4:16","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7366:6:16"},"nodeType":"YulFunctionCall","src":"7366:15:16"},"nodeType":"YulExpressionStatement","src":"7366:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7397:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7400:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7390:6:16"},"nodeType":"YulFunctionCall","src":"7390:15:16"},"nodeType":"YulExpressionStatement","src":"7390:15:16"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7231:180:16"},{"body":{"nodeType":"YulBlock","src":"7460:238:16","statements":[{"nodeType":"YulVariableDeclaration","src":"7470:58:16","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7492:6:16"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7522:4:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7500:21:16"},"nodeType":"YulFunctionCall","src":"7500:27:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7488:3:16"},"nodeType":"YulFunctionCall","src":"7488:40:16"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7474:10:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"7639:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7641:16:16"},"nodeType":"YulFunctionCall","src":"7641:18:16"},"nodeType":"YulExpressionStatement","src":"7641:18:16"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7582:10:16"},{"kind":"number","nodeType":"YulLiteral","src":"7594:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7579:2:16"},"nodeType":"YulFunctionCall","src":"7579:34:16"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7618:10:16"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7630:6:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7615:2:16"},"nodeType":"YulFunctionCall","src":"7615:22:16"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7576:2:16"},"nodeType":"YulFunctionCall","src":"7576:62:16"},"nodeType":"YulIf","src":"7573:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7677:2:16","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7681:10:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7670:6:16"},"nodeType":"YulFunctionCall","src":"7670:22:16"},"nodeType":"YulExpressionStatement","src":"7670:22:16"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7446:6:16","type":""},{"name":"size","nodeType":"YulTypedName","src":"7454:4:16","type":""}],"src":"7417:281:16"},{"body":{"nodeType":"YulBlock","src":"7745:88:16","statements":[{"nodeType":"YulAssignment","src":"7755:30:16","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7765:18:16"},"nodeType":"YulFunctionCall","src":"7765:20:16"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7755:6:16"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7814:6:16"},{"name":"size","nodeType":"YulIdentifier","src":"7822:4:16"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7794:19:16"},"nodeType":"YulFunctionCall","src":"7794:33:16"},"nodeType":"YulExpressionStatement","src":"7794:33:16"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7729:4:16","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7738:6:16","type":""}],"src":"7704:129:16"},{"body":{"nodeType":"YulBlock","src":"7905:241:16","statements":[{"body":{"nodeType":"YulBlock","src":"8010:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"8012:16:16"},"nodeType":"YulFunctionCall","src":"8012:18:16"},"nodeType":"YulExpressionStatement","src":"8012:18:16"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7982:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"7990:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7979:2:16"},"nodeType":"YulFunctionCall","src":"7979:30:16"},"nodeType":"YulIf","src":"7976:56:16"},{"nodeType":"YulAssignment","src":"8042:37:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8072:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8050:21:16"},"nodeType":"YulFunctionCall","src":"8050:29:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8042:4:16"}]},{"nodeType":"YulAssignment","src":"8116:23:16","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"8128:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"8134:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8124:3:16"},"nodeType":"YulFunctionCall","src":"8124:15:16"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8116:4:16"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7889:6:16","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7900:4:16","type":""}],"src":"7839:307:16"},{"body":{"nodeType":"YulBlock","src":"8203:103:16","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8226:3:16"},{"name":"src","nodeType":"YulIdentifier","src":"8231:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8236:6:16"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8213:12:16"},"nodeType":"YulFunctionCall","src":"8213:30:16"},"nodeType":"YulExpressionStatement","src":"8213:30:16"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8284:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8289:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8280:3:16"},"nodeType":"YulFunctionCall","src":"8280:16:16"},{"kind":"number","nodeType":"YulLiteral","src":"8298:1:16","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8273:6:16"},"nodeType":"YulFunctionCall","src":"8273:27:16"},"nodeType":"YulExpressionStatement","src":"8273:27:16"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8185:3:16","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8190:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"8195:6:16","type":""}],"src":"8152:154:16"},{"body":{"nodeType":"YulBlock","src":"8395:327:16","statements":[{"nodeType":"YulAssignment","src":"8405:74:16","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8471:6:16"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8430:40:16"},"nodeType":"YulFunctionCall","src":"8430:48:16"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8414:15:16"},"nodeType":"YulFunctionCall","src":"8414:65:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8405:5:16"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8495:5:16"},{"name":"length","nodeType":"YulIdentifier","src":"8502:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8488:6:16"},"nodeType":"YulFunctionCall","src":"8488:21:16"},"nodeType":"YulExpressionStatement","src":"8488:21:16"},{"nodeType":"YulVariableDeclaration","src":"8518:27:16","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8533:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"8540:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8529:3:16"},"nodeType":"YulFunctionCall","src":"8529:16:16"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8522:3:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"8583:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"8585:77:16"},"nodeType":"YulFunctionCall","src":"8585:79:16"},"nodeType":"YulExpressionStatement","src":"8585:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8564:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8569:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8560:3:16"},"nodeType":"YulFunctionCall","src":"8560:16:16"},{"name":"end","nodeType":"YulIdentifier","src":"8578:3:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8557:2:16"},"nodeType":"YulFunctionCall","src":"8557:25:16"},"nodeType":"YulIf","src":"8554:112:16"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8699:3:16"},{"name":"dst","nodeType":"YulIdentifier","src":"8704:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"8709:6:16"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"8675:23:16"},"nodeType":"YulFunctionCall","src":"8675:41:16"},"nodeType":"YulExpressionStatement","src":"8675:41:16"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8368:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"8373:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"8381:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8389:5:16","type":""}],"src":"8312:410:16"},{"body":{"nodeType":"YulBlock","src":"8802:277:16","statements":[{"body":{"nodeType":"YulBlock","src":"8851:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"8853:77:16"},"nodeType":"YulFunctionCall","src":"8853:79:16"},"nodeType":"YulExpressionStatement","src":"8853:79:16"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8830:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"8838:4:16","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8826:3:16"},"nodeType":"YulFunctionCall","src":"8826:17:16"},{"name":"end","nodeType":"YulIdentifier","src":"8845:3:16"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8822:3:16"},"nodeType":"YulFunctionCall","src":"8822:27:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8815:6:16"},"nodeType":"YulFunctionCall","src":"8815:35:16"},"nodeType":"YulIf","src":"8812:122:16"},{"nodeType":"YulVariableDeclaration","src":"8943:34:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8970:6:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8957:12:16"},"nodeType":"YulFunctionCall","src":"8957:20:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8947:6:16","type":""}]},{"nodeType":"YulAssignment","src":"8986:87:16","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9046:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"9054:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9042:3:16"},"nodeType":"YulFunctionCall","src":"9042:17:16"},{"name":"length","nodeType":"YulIdentifier","src":"9061:6:16"},{"name":"end","nodeType":"YulIdentifier","src":"9069:3:16"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8995:46:16"},"nodeType":"YulFunctionCall","src":"8995:78:16"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8986:5:16"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8780:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"8788:3:16","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8796:5:16","type":""}],"src":"8741:338:16"},{"body":{"nodeType":"YulBlock","src":"9211:817:16","statements":[{"body":{"nodeType":"YulBlock","src":"9258:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9260:77:16"},"nodeType":"YulFunctionCall","src":"9260:79:16"},"nodeType":"YulExpressionStatement","src":"9260:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9232:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"9241:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9228:3:16"},"nodeType":"YulFunctionCall","src":"9228:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"9253:3:16","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9224:3:16"},"nodeType":"YulFunctionCall","src":"9224:33:16"},"nodeType":"YulIf","src":"9221:120:16"},{"nodeType":"YulBlock","src":"9351:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9366:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"9380:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9370:6:16","type":""}]},{"nodeType":"YulAssignment","src":"9395:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9430:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9441:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9426:3:16"},"nodeType":"YulFunctionCall","src":"9426:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9450:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9405:20:16"},"nodeType":"YulFunctionCall","src":"9405:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9395:6:16"}]}]},{"nodeType":"YulBlock","src":"9478:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9493:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"9507:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9497:6:16","type":""}]},{"nodeType":"YulAssignment","src":"9523:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9558:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9569:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9554:3:16"},"nodeType":"YulFunctionCall","src":"9554:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9578:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9533:20:16"},"nodeType":"YulFunctionCall","src":"9533:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9523:6:16"}]}]},{"nodeType":"YulBlock","src":"9606:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9621:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"9635:2:16","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9625:6:16","type":""}]},{"nodeType":"YulAssignment","src":"9651:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9686:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9697:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9682:3:16"},"nodeType":"YulFunctionCall","src":"9682:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9706:7:16"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"9661:20:16"},"nodeType":"YulFunctionCall","src":"9661:53:16"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9651:6:16"}]}]},{"nodeType":"YulBlock","src":"9734:287:16","statements":[{"nodeType":"YulVariableDeclaration","src":"9749:46:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9780:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"9791:2:16","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9776:3:16"},"nodeType":"YulFunctionCall","src":"9776:18:16"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9763:12:16"},"nodeType":"YulFunctionCall","src":"9763:32:16"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9753:6:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"9842:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9844:77:16"},"nodeType":"YulFunctionCall","src":"9844:79:16"},"nodeType":"YulExpressionStatement","src":"9844:79:16"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9814:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"9822:18:16","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9811:2:16"},"nodeType":"YulFunctionCall","src":"9811:30:16"},"nodeType":"YulIf","src":"9808:117:16"},{"nodeType":"YulAssignment","src":"9939:72:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9983:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"9994:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:16"},"nodeType":"YulFunctionCall","src":"9979:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10003:7:16"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"9949:29:16"},"nodeType":"YulFunctionCall","src":"9949:62:16"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9939:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9157:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9168:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9180:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9188:6:16","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9196:6:16","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9204:6:16","type":""}],"src":"9085:943:16"},{"body":{"nodeType":"YulBlock","src":"10117:391:16","statements":[{"body":{"nodeType":"YulBlock","src":"10163:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10165:77:16"},"nodeType":"YulFunctionCall","src":"10165:79:16"},"nodeType":"YulExpressionStatement","src":"10165:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10138:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"10147:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10134:3:16"},"nodeType":"YulFunctionCall","src":"10134:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"10159:2:16","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10130:3:16"},"nodeType":"YulFunctionCall","src":"10130:32:16"},"nodeType":"YulIf","src":"10127:119:16"},{"nodeType":"YulBlock","src":"10256:117:16","statements":[{"nodeType":"YulVariableDeclaration","src":"10271:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"10285:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10275:6:16","type":""}]},{"nodeType":"YulAssignment","src":"10300:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10335:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"10346:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10331:3:16"},"nodeType":"YulFunctionCall","src":"10331:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10355:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10310:20:16"},"nodeType":"YulFunctionCall","src":"10310:53:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10300:6:16"}]}]},{"nodeType":"YulBlock","src":"10383:118:16","statements":[{"nodeType":"YulVariableDeclaration","src":"10398:16:16","value":{"kind":"number","nodeType":"YulLiteral","src":"10412:2:16","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10402:6:16","type":""}]},{"nodeType":"YulAssignment","src":"10428:63:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10463:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"10474:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10459:3:16"},"nodeType":"YulFunctionCall","src":"10459:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10483:7:16"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10438:20:16"},"nodeType":"YulFunctionCall","src":"10438:53:16"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10428:6:16"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10079:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10090:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10102:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10110:6:16","type":""}],"src":"10034:474:16"},{"body":{"nodeType":"YulBlock","src":"10542:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10559:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10562:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10552:6:16"},"nodeType":"YulFunctionCall","src":"10552:88:16"},"nodeType":"YulExpressionStatement","src":"10552:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10656:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10659:4:16","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10649:6:16"},"nodeType":"YulFunctionCall","src":"10649:15:16"},"nodeType":"YulExpressionStatement","src":"10649:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10680:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10683:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10673:6:16"},"nodeType":"YulFunctionCall","src":"10673:15:16"},"nodeType":"YulExpressionStatement","src":"10673:15:16"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"10514:180:16"},{"body":{"nodeType":"YulBlock","src":"10751:269:16","statements":[{"nodeType":"YulAssignment","src":"10761:22:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10775:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"10781:1:16","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10771:3:16"},"nodeType":"YulFunctionCall","src":"10771:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10761:6:16"}]},{"nodeType":"YulVariableDeclaration","src":"10792:38:16","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10822:4:16"},{"kind":"number","nodeType":"YulLiteral","src":"10828:1:16","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10818:3:16"},"nodeType":"YulFunctionCall","src":"10818:12:16"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"10796:18:16","type":""}]},{"body":{"nodeType":"YulBlock","src":"10869:51:16","statements":[{"nodeType":"YulAssignment","src":"10883:27:16","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10897:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"10905:4:16","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10893:3:16"},"nodeType":"YulFunctionCall","src":"10893:17:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10883:6:16"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10849:18:16"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10842:6:16"},"nodeType":"YulFunctionCall","src":"10842:26:16"},"nodeType":"YulIf","src":"10839:81:16"},{"body":{"nodeType":"YulBlock","src":"10972:42:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"10986:16:16"},"nodeType":"YulFunctionCall","src":"10986:18:16"},"nodeType":"YulExpressionStatement","src":"10986:18:16"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10936:18:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10959:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"10967:2:16","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10956:2:16"},"nodeType":"YulFunctionCall","src":"10956:14:16"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10933:2:16"},"nodeType":"YulFunctionCall","src":"10933:38:16"},"nodeType":"YulIf","src":"10930:84:16"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"10735:4:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"10744:6:16","type":""}],"src":"10700:320:16"},{"body":{"nodeType":"YulBlock","src":"11132:114:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11154:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"11162:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11150:3:16"},"nodeType":"YulFunctionCall","src":"11150:14:16"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"11166:34:16","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11143:6:16"},"nodeType":"YulFunctionCall","src":"11143:58:16"},"nodeType":"YulExpressionStatement","src":"11143:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11222:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"11230:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11218:3:16"},"nodeType":"YulFunctionCall","src":"11218:15:16"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"11235:3:16","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11211:6:16"},"nodeType":"YulFunctionCall","src":"11211:28:16"},"nodeType":"YulExpressionStatement","src":"11211:28:16"}]},"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11124:6:16","type":""}],"src":"11026:220:16"},{"body":{"nodeType":"YulBlock","src":"11398:220:16","statements":[{"nodeType":"YulAssignment","src":"11408:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11474:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"11479:2:16","type":"","value":"33"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11415:58:16"},"nodeType":"YulFunctionCall","src":"11415:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11408:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11580:3:16"}],"functionName":{"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulIdentifier","src":"11491:88:16"},"nodeType":"YulFunctionCall","src":"11491:93:16"},"nodeType":"YulExpressionStatement","src":"11491:93:16"},{"nodeType":"YulAssignment","src":"11593:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11604:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"11609:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11600:3:16"},"nodeType":"YulFunctionCall","src":"11600:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11593:3:16"}]}]},"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11386:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11394:3:16","type":""}],"src":"11252:366:16"},{"body":{"nodeType":"YulBlock","src":"11795:248:16","statements":[{"nodeType":"YulAssignment","src":"11805:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11817:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"11828:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11813:3:16"},"nodeType":"YulFunctionCall","src":"11813:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11805:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11852:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"11863:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11848:3:16"},"nodeType":"YulFunctionCall","src":"11848:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11871:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"11877:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11867:3:16"},"nodeType":"YulFunctionCall","src":"11867:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11841:6:16"},"nodeType":"YulFunctionCall","src":"11841:47:16"},"nodeType":"YulExpressionStatement","src":"11841:47:16"},{"nodeType":"YulAssignment","src":"11897:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12031:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11905:124:16"},"nodeType":"YulFunctionCall","src":"11905:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11897:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11775:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11790:4:16","type":""}],"src":"11624:419:16"},{"body":{"nodeType":"YulBlock","src":"12155:143:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12177:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"12185:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12173:3:16"},"nodeType":"YulFunctionCall","src":"12173:14:16"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"12189:34:16","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12166:6:16"},"nodeType":"YulFunctionCall","src":"12166:58:16"},"nodeType":"YulExpressionStatement","src":"12166:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12245:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"12253:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12241:3:16"},"nodeType":"YulFunctionCall","src":"12241:15:16"},{"hexValue":"6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"12258:32:16","type":"","value":"ken owner nor approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12234:6:16"},"nodeType":"YulFunctionCall","src":"12234:57:16"},"nodeType":"YulExpressionStatement","src":"12234:57:16"}]},"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12147:6:16","type":""}],"src":"12049:249:16"},{"body":{"nodeType":"YulBlock","src":"12450:220:16","statements":[{"nodeType":"YulAssignment","src":"12460:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12526:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"12531:2:16","type":"","value":"62"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12467:58:16"},"nodeType":"YulFunctionCall","src":"12467:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12460:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12632:3:16"}],"functionName":{"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulIdentifier","src":"12543:88:16"},"nodeType":"YulFunctionCall","src":"12543:93:16"},"nodeType":"YulExpressionStatement","src":"12543:93:16"},{"nodeType":"YulAssignment","src":"12645:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12656:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"12661:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12652:3:16"},"nodeType":"YulFunctionCall","src":"12652:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12645:3:16"}]}]},"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12438:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12446:3:16","type":""}],"src":"12304:366:16"},{"body":{"nodeType":"YulBlock","src":"12847:248:16","statements":[{"nodeType":"YulAssignment","src":"12857:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12869:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"12880:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12865:3:16"},"nodeType":"YulFunctionCall","src":"12865:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12857:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12904:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"12915:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12900:3:16"},"nodeType":"YulFunctionCall","src":"12900:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12923:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"12929:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12919:3:16"},"nodeType":"YulFunctionCall","src":"12919:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12893:6:16"},"nodeType":"YulFunctionCall","src":"12893:47:16"},"nodeType":"YulExpressionStatement","src":"12893:47:16"},{"nodeType":"YulAssignment","src":"12949:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13083:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12957:124:16"},"nodeType":"YulFunctionCall","src":"12957:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12949:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12827:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12842:4:16","type":""}],"src":"12676:419:16"},{"body":{"nodeType":"YulBlock","src":"13207:127:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13229:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"13237:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13225:3:16"},"nodeType":"YulFunctionCall","src":"13225:14:16"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"13241:34:16","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13218:6:16"},"nodeType":"YulFunctionCall","src":"13218:58:16"},"nodeType":"YulExpressionStatement","src":"13218:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13297:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"13305:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13293:3:16"},"nodeType":"YulFunctionCall","src":"13293:15:16"},{"hexValue":"72206e6f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"13310:16:16","type":"","value":"r nor approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13286:6:16"},"nodeType":"YulFunctionCall","src":"13286:41:16"},"nodeType":"YulExpressionStatement","src":"13286:41:16"}]},"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"13199:6:16","type":""}],"src":"13101:233:16"},{"body":{"nodeType":"YulBlock","src":"13486:220:16","statements":[{"nodeType":"YulAssignment","src":"13496:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13562:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"13567:2:16","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13503:58:16"},"nodeType":"YulFunctionCall","src":"13503:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13496:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13668:3:16"}],"functionName":{"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulIdentifier","src":"13579:88:16"},"nodeType":"YulFunctionCall","src":"13579:93:16"},"nodeType":"YulExpressionStatement","src":"13579:93:16"},{"nodeType":"YulAssignment","src":"13681:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13692:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"13697:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13688:3:16"},"nodeType":"YulFunctionCall","src":"13688:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13681:3:16"}]}]},"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13474:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13482:3:16","type":""}],"src":"13340:366:16"},{"body":{"nodeType":"YulBlock","src":"13883:248:16","statements":[{"nodeType":"YulAssignment","src":"13893:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13905:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"13916:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13901:3:16"},"nodeType":"YulFunctionCall","src":"13901:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13893:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13940:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"13951:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13936:3:16"},"nodeType":"YulFunctionCall","src":"13936:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13959:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"13965:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13955:3:16"},"nodeType":"YulFunctionCall","src":"13955:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13929:6:16"},"nodeType":"YulFunctionCall","src":"13929:47:16"},"nodeType":"YulExpressionStatement","src":"13929:47:16"},{"nodeType":"YulAssignment","src":"13985:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14119:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13993:124:16"},"nodeType":"YulFunctionCall","src":"13993:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13985:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13863:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13878:4:16","type":""}],"src":"13712:419:16"},{"body":{"nodeType":"YulBlock","src":"14243:68:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14265:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"14273:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14261:3:16"},"nodeType":"YulFunctionCall","src":"14261:14:16"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"14277:26:16","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14254:6:16"},"nodeType":"YulFunctionCall","src":"14254:50:16"},"nodeType":"YulExpressionStatement","src":"14254:50:16"}]},"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14235:6:16","type":""}],"src":"14137:174:16"},{"body":{"nodeType":"YulBlock","src":"14463:220:16","statements":[{"nodeType":"YulAssignment","src":"14473:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14539:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"14544:2:16","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14480:58:16"},"nodeType":"YulFunctionCall","src":"14480:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14473:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14645:3:16"}],"functionName":{"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulIdentifier","src":"14556:88:16"},"nodeType":"YulFunctionCall","src":"14556:93:16"},"nodeType":"YulExpressionStatement","src":"14556:93:16"},{"nodeType":"YulAssignment","src":"14658:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14669:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"14674:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14665:3:16"},"nodeType":"YulFunctionCall","src":"14665:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14658:3:16"}]}]},"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14451:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14459:3:16","type":""}],"src":"14317:366:16"},{"body":{"nodeType":"YulBlock","src":"14860:248:16","statements":[{"nodeType":"YulAssignment","src":"14870:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14882:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"14893:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14878:3:16"},"nodeType":"YulFunctionCall","src":"14878:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14870:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14917:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"14928:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14913:3:16"},"nodeType":"YulFunctionCall","src":"14913:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14936:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"14942:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14932:3:16"},"nodeType":"YulFunctionCall","src":"14932:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14906:6:16"},"nodeType":"YulFunctionCall","src":"14906:47:16"},"nodeType":"YulExpressionStatement","src":"14906:47:16"},{"nodeType":"YulAssignment","src":"14962:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15096:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14970:124:16"},"nodeType":"YulFunctionCall","src":"14970:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14962:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14840:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14855:4:16","type":""}],"src":"14689:419:16"},{"body":{"nodeType":"YulBlock","src":"15220:122:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15242:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"15250:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15238:3:16"},"nodeType":"YulFunctionCall","src":"15238:14:16"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"15254:34:16","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15231:6:16"},"nodeType":"YulFunctionCall","src":"15231:58:16"},"nodeType":"YulExpressionStatement","src":"15231:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15310:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"15318:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15306:3:16"},"nodeType":"YulFunctionCall","src":"15306:15:16"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"15323:11:16","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15299:6:16"},"nodeType":"YulFunctionCall","src":"15299:36:16"},"nodeType":"YulExpressionStatement","src":"15299:36:16"}]},"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"15212:6:16","type":""}],"src":"15114:228:16"},{"body":{"nodeType":"YulBlock","src":"15494:220:16","statements":[{"nodeType":"YulAssignment","src":"15504:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15570:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"15575:2:16","type":"","value":"41"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15511:58:16"},"nodeType":"YulFunctionCall","src":"15511:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15504:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15676:3:16"}],"functionName":{"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulIdentifier","src":"15587:88:16"},"nodeType":"YulFunctionCall","src":"15587:93:16"},"nodeType":"YulExpressionStatement","src":"15587:93:16"},{"nodeType":"YulAssignment","src":"15689:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15700:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"15705:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15696:3:16"},"nodeType":"YulFunctionCall","src":"15696:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15689:3:16"}]}]},"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15482:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15490:3:16","type":""}],"src":"15348:366:16"},{"body":{"nodeType":"YulBlock","src":"15891:248:16","statements":[{"nodeType":"YulAssignment","src":"15901:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15913:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"15924:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15909:3:16"},"nodeType":"YulFunctionCall","src":"15909:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15901:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15948:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"15959:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15944:3:16"},"nodeType":"YulFunctionCall","src":"15944:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15967:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"15973:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15963:3:16"},"nodeType":"YulFunctionCall","src":"15963:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15937:6:16"},"nodeType":"YulFunctionCall","src":"15937:47:16"},"nodeType":"YulExpressionStatement","src":"15937:47:16"},{"nodeType":"YulAssignment","src":"15993:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16127:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16001:124:16"},"nodeType":"YulFunctionCall","src":"16001:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15993:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15871:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15886:4:16","type":""}],"src":"15720:419:16"},{"body":{"nodeType":"YulBlock","src":"16259:34:16","statements":[{"nodeType":"YulAssignment","src":"16269:18:16","value":{"name":"pos","nodeType":"YulIdentifier","src":"16284:3:16"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16269:11:16"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16231:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"16236:6:16","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16247:11:16","type":""}],"src":"16145:148:16"},{"body":{"nodeType":"YulBlock","src":"16409:267:16","statements":[{"nodeType":"YulVariableDeclaration","src":"16419:53:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16466:5:16"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"16433:32:16"},"nodeType":"YulFunctionCall","src":"16433:39:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16423:6:16","type":""}]},{"nodeType":"YulAssignment","src":"16481:96:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16565:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"16570:6:16"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16488:76:16"},"nodeType":"YulFunctionCall","src":"16488:89:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16481:3:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16612:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"16619:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16608:3:16"},"nodeType":"YulFunctionCall","src":"16608:16:16"},{"name":"pos","nodeType":"YulIdentifier","src":"16626:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"16631:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"16586:21:16"},"nodeType":"YulFunctionCall","src":"16586:52:16"},"nodeType":"YulExpressionStatement","src":"16586:52:16"},{"nodeType":"YulAssignment","src":"16647:23:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16658:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"16663:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16654:3:16"},"nodeType":"YulFunctionCall","src":"16654:16:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16647:3:16"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16390:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16397:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16405:3:16","type":""}],"src":"16299:377:16"},{"body":{"nodeType":"YulBlock","src":"16866:251:16","statements":[{"nodeType":"YulAssignment","src":"16877:102:16","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16966:6:16"},{"name":"pos","nodeType":"YulIdentifier","src":"16975:3:16"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16884:81:16"},"nodeType":"YulFunctionCall","src":"16884:95:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16877:3:16"}]},{"nodeType":"YulAssignment","src":"16989:102:16","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"17078:6:16"},{"name":"pos","nodeType":"YulIdentifier","src":"17087:3:16"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16996:81:16"},"nodeType":"YulFunctionCall","src":"16996:95:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16989:3:16"}]},{"nodeType":"YulAssignment","src":"17101:10:16","value":{"name":"pos","nodeType":"YulIdentifier","src":"17108:3:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17101:3:16"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16837:3:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16843:6:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16851:6:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16862:3:16","type":""}],"src":"16682:435:16"},{"body":{"nodeType":"YulBlock","src":"17229:118:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17251:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"17259:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17247:3:16"},"nodeType":"YulFunctionCall","src":"17247:14:16"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"17263:34:16","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17240:6:16"},"nodeType":"YulFunctionCall","src":"17240:58:16"},"nodeType":"YulExpressionStatement","src":"17240:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17319:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"17327:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17315:3:16"},"nodeType":"YulFunctionCall","src":"17315:15:16"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"17332:7:16","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17308:6:16"},"nodeType":"YulFunctionCall","src":"17308:32:16"},"nodeType":"YulExpressionStatement","src":"17308:32:16"}]},"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17221:6:16","type":""}],"src":"17123:224:16"},{"body":{"nodeType":"YulBlock","src":"17499:220:16","statements":[{"nodeType":"YulAssignment","src":"17509:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17575:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"17580:2:16","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17516:58:16"},"nodeType":"YulFunctionCall","src":"17516:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17509:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17681:3:16"}],"functionName":{"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulIdentifier","src":"17592:88:16"},"nodeType":"YulFunctionCall","src":"17592:93:16"},"nodeType":"YulExpressionStatement","src":"17592:93:16"},{"nodeType":"YulAssignment","src":"17694:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17705:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"17710:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17701:3:16"},"nodeType":"YulFunctionCall","src":"17701:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17694:3:16"}]}]},"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17487:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17495:3:16","type":""}],"src":"17353:366:16"},{"body":{"nodeType":"YulBlock","src":"17896:248:16","statements":[{"nodeType":"YulAssignment","src":"17906:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17918:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"17929:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17914:3:16"},"nodeType":"YulFunctionCall","src":"17914:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17906:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17953:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"17964:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17949:3:16"},"nodeType":"YulFunctionCall","src":"17949:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17972:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"17978:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17968:3:16"},"nodeType":"YulFunctionCall","src":"17968:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17942:6:16"},"nodeType":"YulFunctionCall","src":"17942:47:16"},"nodeType":"YulExpressionStatement","src":"17942:47:16"},{"nodeType":"YulAssignment","src":"17998:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18132:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18006:124:16"},"nodeType":"YulFunctionCall","src":"18006:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17998:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17876:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17891:4:16","type":""}],"src":"17725:419:16"},{"body":{"nodeType":"YulBlock","src":"18256:117:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18278:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"18286:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18274:3:16"},"nodeType":"YulFunctionCall","src":"18274:14:16"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"18290:34:16","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18267:6:16"},"nodeType":"YulFunctionCall","src":"18267:58:16"},"nodeType":"YulExpressionStatement","src":"18267:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18346:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"18354:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18342:3:16"},"nodeType":"YulFunctionCall","src":"18342:15:16"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"18359:6:16","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18335:6:16"},"nodeType":"YulFunctionCall","src":"18335:31:16"},"nodeType":"YulExpressionStatement","src":"18335:31:16"}]},"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18248:6:16","type":""}],"src":"18150:223:16"},{"body":{"nodeType":"YulBlock","src":"18525:220:16","statements":[{"nodeType":"YulAssignment","src":"18535:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18601:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"18606:2:16","type":"","value":"36"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18542:58:16"},"nodeType":"YulFunctionCall","src":"18542:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18535:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18707:3:16"}],"functionName":{"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulIdentifier","src":"18618:88:16"},"nodeType":"YulFunctionCall","src":"18618:93:16"},"nodeType":"YulExpressionStatement","src":"18618:93:16"},{"nodeType":"YulAssignment","src":"18720:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18731:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"18736:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18727:3:16"},"nodeType":"YulFunctionCall","src":"18727:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18720:3:16"}]}]},"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18513:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18521:3:16","type":""}],"src":"18379:366:16"},{"body":{"nodeType":"YulBlock","src":"18922:248:16","statements":[{"nodeType":"YulAssignment","src":"18932:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18944:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"18955:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18940:3:16"},"nodeType":"YulFunctionCall","src":"18940:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18932:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18979:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"18990:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18975:3:16"},"nodeType":"YulFunctionCall","src":"18975:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18998:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"19004:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18994:3:16"},"nodeType":"YulFunctionCall","src":"18994:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18968:6:16"},"nodeType":"YulFunctionCall","src":"18968:47:16"},"nodeType":"YulExpressionStatement","src":"18968:47:16"},{"nodeType":"YulAssignment","src":"19024:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19158:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19032:124:16"},"nodeType":"YulFunctionCall","src":"19032:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19024:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18902:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18917:4:16","type":""}],"src":"18751:419:16"},{"body":{"nodeType":"YulBlock","src":"19204:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19221:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19224:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19214:6:16"},"nodeType":"YulFunctionCall","src":"19214:88:16"},"nodeType":"YulExpressionStatement","src":"19214:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19318:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"19321:4:16","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19311:6:16"},"nodeType":"YulFunctionCall","src":"19311:15:16"},"nodeType":"YulExpressionStatement","src":"19311:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19342:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19345:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19335:6:16"},"nodeType":"YulFunctionCall","src":"19335:15:16"},"nodeType":"YulExpressionStatement","src":"19335:15:16"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"19176:180:16"},{"body":{"nodeType":"YulBlock","src":"19407:146:16","statements":[{"nodeType":"YulAssignment","src":"19417:25:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19440:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19422:17:16"},"nodeType":"YulFunctionCall","src":"19422:20:16"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19417:1:16"}]},{"nodeType":"YulAssignment","src":"19451:25:16","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19474:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19456:17:16"},"nodeType":"YulFunctionCall","src":"19456:20:16"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19451:1:16"}]},{"body":{"nodeType":"YulBlock","src":"19498:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19500:16:16"},"nodeType":"YulFunctionCall","src":"19500:18:16"},"nodeType":"YulExpressionStatement","src":"19500:18:16"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19492:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"19495:1:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"19489:2:16"},"nodeType":"YulFunctionCall","src":"19489:8:16"},"nodeType":"YulIf","src":"19486:34:16"},{"nodeType":"YulAssignment","src":"19530:17:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19542:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"19545:1:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19538:3:16"},"nodeType":"YulFunctionCall","src":"19538:9:16"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"19530:4:16"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19393:1:16","type":""},{"name":"y","nodeType":"YulTypedName","src":"19396:1:16","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"19402:4:16","type":""}],"src":"19362:191:16"},{"body":{"nodeType":"YulBlock","src":"19603:261:16","statements":[{"nodeType":"YulAssignment","src":"19613:25:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19636:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19618:17:16"},"nodeType":"YulFunctionCall","src":"19618:20:16"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19613:1:16"}]},{"nodeType":"YulAssignment","src":"19647:25:16","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19670:1:16"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19652:17:16"},"nodeType":"YulFunctionCall","src":"19652:20:16"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19647:1:16"}]},{"body":{"nodeType":"YulBlock","src":"19810:22:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19812:16:16"},"nodeType":"YulFunctionCall","src":"19812:18:16"},"nodeType":"YulExpressionStatement","src":"19812:18:16"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19731:1:16"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19738:66:16","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"19806:1:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19734:3:16"},"nodeType":"YulFunctionCall","src":"19734:74:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"19728:2:16"},"nodeType":"YulFunctionCall","src":"19728:81:16"},"nodeType":"YulIf","src":"19725:107:16"},{"nodeType":"YulAssignment","src":"19842:16:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19853:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"19856:1:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19849:3:16"},"nodeType":"YulFunctionCall","src":"19849:9:16"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"19842:3:16"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19590:1:16","type":""},{"name":"y","nodeType":"YulTypedName","src":"19593:1:16","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"19599:3:16","type":""}],"src":"19559:305:16"},{"body":{"nodeType":"YulBlock","src":"19976:69:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19998:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"20006:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19994:3:16"},"nodeType":"YulFunctionCall","src":"19994:14:16"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"20010:27:16","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19987:6:16"},"nodeType":"YulFunctionCall","src":"19987:51:16"},"nodeType":"YulExpressionStatement","src":"19987:51:16"}]},"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19968:6:16","type":""}],"src":"19870:175:16"},{"body":{"nodeType":"YulBlock","src":"20197:220:16","statements":[{"nodeType":"YulAssignment","src":"20207:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20273:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"20278:2:16","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20214:58:16"},"nodeType":"YulFunctionCall","src":"20214:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"20207:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20379:3:16"}],"functionName":{"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulIdentifier","src":"20290:88:16"},"nodeType":"YulFunctionCall","src":"20290:93:16"},"nodeType":"YulExpressionStatement","src":"20290:93:16"},{"nodeType":"YulAssignment","src":"20392:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20403:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"20408:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20399:3:16"},"nodeType":"YulFunctionCall","src":"20399:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"20392:3:16"}]}]},"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"20185:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"20193:3:16","type":""}],"src":"20051:366:16"},{"body":{"nodeType":"YulBlock","src":"20594:248:16","statements":[{"nodeType":"YulAssignment","src":"20604:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20616:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"20627:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20612:3:16"},"nodeType":"YulFunctionCall","src":"20612:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20604:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20651:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"20662:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20647:3:16"},"nodeType":"YulFunctionCall","src":"20647:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20670:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"20676:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20666:3:16"},"nodeType":"YulFunctionCall","src":"20666:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20640:6:16"},"nodeType":"YulFunctionCall","src":"20640:47:16"},"nodeType":"YulExpressionStatement","src":"20640:47:16"},{"nodeType":"YulAssignment","src":"20696:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20830:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20704:124:16"},"nodeType":"YulFunctionCall","src":"20704:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20696:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20574:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20589:4:16","type":""}],"src":"20423:419:16"},{"body":{"nodeType":"YulBlock","src":"20954:131:16","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20976:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"20984:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20972:3:16"},"nodeType":"YulFunctionCall","src":"20972:14:16"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"20988:34:16","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20965:6:16"},"nodeType":"YulFunctionCall","src":"20965:58:16"},"nodeType":"YulExpressionStatement","src":"20965:58:16"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21044:6:16"},{"kind":"number","nodeType":"YulLiteral","src":"21052:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21040:3:16"},"nodeType":"YulFunctionCall","src":"21040:15:16"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"21057:20:16","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21033:6:16"},"nodeType":"YulFunctionCall","src":"21033:45:16"},"nodeType":"YulExpressionStatement","src":"21033:45:16"}]},"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"20946:6:16","type":""}],"src":"20848:237:16"},{"body":{"nodeType":"YulBlock","src":"21237:220:16","statements":[{"nodeType":"YulAssignment","src":"21247:74:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21313:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"21318:2:16","type":"","value":"50"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21254:58:16"},"nodeType":"YulFunctionCall","src":"21254:67:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"21247:3:16"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21419:3:16"}],"functionName":{"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulIdentifier","src":"21330:88:16"},"nodeType":"YulFunctionCall","src":"21330:93:16"},"nodeType":"YulExpressionStatement","src":"21330:93:16"},{"nodeType":"YulAssignment","src":"21432:19:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21443:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"21448:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21439:3:16"},"nodeType":"YulFunctionCall","src":"21439:12:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21432:3:16"}]}]},"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21225:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21233:3:16","type":""}],"src":"21091:366:16"},{"body":{"nodeType":"YulBlock","src":"21634:248:16","statements":[{"nodeType":"YulAssignment","src":"21644:26:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21656:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"21667:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21652:3:16"},"nodeType":"YulFunctionCall","src":"21652:18:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21644:4:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21691:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"21702:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21687:3:16"},"nodeType":"YulFunctionCall","src":"21687:17:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21710:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"21716:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21706:3:16"},"nodeType":"YulFunctionCall","src":"21706:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21680:6:16"},"nodeType":"YulFunctionCall","src":"21680:47:16"},"nodeType":"YulExpressionStatement","src":"21680:47:16"},{"nodeType":"YulAssignment","src":"21736:139:16","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21870:4:16"}],"functionName":{"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21744:124:16"},"nodeType":"YulFunctionCall","src":"21744:131:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21736:4:16"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21614:9:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21629:4:16","type":""}],"src":"21463:419:16"},{"body":{"nodeType":"YulBlock","src":"21916:152:16","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21933:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"21936:77:16","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21926:6:16"},"nodeType":"YulFunctionCall","src":"21926:88:16"},"nodeType":"YulExpressionStatement","src":"21926:88:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22030:1:16","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"22033:4:16","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22023:6:16"},"nodeType":"YulFunctionCall","src":"22023:15:16"},"nodeType":"YulExpressionStatement","src":"22023:15:16"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22054:1:16","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22057:4:16","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"22047:6:16"},"nodeType":"YulFunctionCall","src":"22047:15:16"},"nodeType":"YulExpressionStatement","src":"22047:15:16"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"21888:180:16"},{"body":{"nodeType":"YulBlock","src":"22132:40:16","statements":[{"nodeType":"YulAssignment","src":"22143:22:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22159:5:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22153:5:16"},"nodeType":"YulFunctionCall","src":"22153:12:16"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"22143:6:16"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22115:5:16","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"22125:6:16","type":""}],"src":"22074:98:16"},{"body":{"nodeType":"YulBlock","src":"22273:73:16","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22290:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"22295:6:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22283:6:16"},"nodeType":"YulFunctionCall","src":"22283:19:16"},"nodeType":"YulExpressionStatement","src":"22283:19:16"},{"nodeType":"YulAssignment","src":"22311:29:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22330:3:16"},{"kind":"number","nodeType":"YulLiteral","src":"22335:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22326:3:16"},"nodeType":"YulFunctionCall","src":"22326:14:16"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"22311:11:16"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"22245:3:16","type":""},{"name":"length","nodeType":"YulTypedName","src":"22250:6:16","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"22261:11:16","type":""}],"src":"22178:168:16"},{"body":{"nodeType":"YulBlock","src":"22442:270:16","statements":[{"nodeType":"YulVariableDeclaration","src":"22452:52:16","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22498:5:16"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"22466:31:16"},"nodeType":"YulFunctionCall","src":"22466:38:16"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"22456:6:16","type":""}]},{"nodeType":"YulAssignment","src":"22513:77:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22578:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"22583:6:16"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22520:57:16"},"nodeType":"YulFunctionCall","src":"22520:70:16"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"22513:3:16"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22625:5:16"},{"kind":"number","nodeType":"YulLiteral","src":"22632:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22621:3:16"},"nodeType":"YulFunctionCall","src":"22621:16:16"},{"name":"pos","nodeType":"YulIdentifier","src":"22639:3:16"},{"name":"length","nodeType":"YulIdentifier","src":"22644:6:16"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"22599:21:16"},"nodeType":"YulFunctionCall","src":"22599:52:16"},"nodeType":"YulExpressionStatement","src":"22599:52:16"},{"nodeType":"YulAssignment","src":"22660:46:16","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22671:3:16"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"22698:6:16"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"22676:21:16"},"nodeType":"YulFunctionCall","src":"22676:29:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22667:3:16"},"nodeType":"YulFunctionCall","src":"22667:39:16"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"22660:3:16"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22423:5:16","type":""},{"name":"pos","nodeType":"YulTypedName","src":"22430:3:16","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"22438:3:16","type":""}],"src":"22352:360:16"},{"body":{"nodeType":"YulBlock","src":"22918:440:16","statements":[{"nodeType":"YulAssignment","src":"22928:27:16","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22940:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"22951:3:16","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22936:3:16"},"nodeType":"YulFunctionCall","src":"22936:19:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22928:4:16"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"23009:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23022:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"23033:1:16","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23018:3:16"},"nodeType":"YulFunctionCall","src":"23018:17:16"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22965:43:16"},"nodeType":"YulFunctionCall","src":"22965:71:16"},"nodeType":"YulExpressionStatement","src":"22965:71:16"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"23090:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23103:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"23114:2:16","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23099:3:16"},"nodeType":"YulFunctionCall","src":"23099:18:16"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"23046:43:16"},"nodeType":"YulFunctionCall","src":"23046:72:16"},"nodeType":"YulExpressionStatement","src":"23046:72:16"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"23172:6:16"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23185:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"23196:2:16","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23181:3:16"},"nodeType":"YulFunctionCall","src":"23181:18:16"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"23128:43:16"},"nodeType":"YulFunctionCall","src":"23128:72:16"},"nodeType":"YulExpressionStatement","src":"23128:72:16"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23221:9:16"},{"kind":"number","nodeType":"YulLiteral","src":"23232:2:16","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23217:3:16"},"nodeType":"YulFunctionCall","src":"23217:18:16"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23241:4:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"23247:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23237:3:16"},"nodeType":"YulFunctionCall","src":"23237:20:16"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23210:6:16"},"nodeType":"YulFunctionCall","src":"23210:48:16"},"nodeType":"YulExpressionStatement","src":"23210:48:16"},{"nodeType":"YulAssignment","src":"23267:84:16","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"23337:6:16"},{"name":"tail","nodeType":"YulIdentifier","src":"23346:4:16"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23275:61:16"},"nodeType":"YulFunctionCall","src":"23275:76:16"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23267:4:16"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22866:9:16","type":""},{"name":"value3","nodeType":"YulTypedName","src":"22878:6:16","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22886:6:16","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22894:6:16","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22902:6:16","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22913:4:16","type":""}],"src":"22718:640:16"},{"body":{"nodeType":"YulBlock","src":"23426:79:16","statements":[{"nodeType":"YulAssignment","src":"23436:22:16","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23451:6:16"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"23445:5:16"},"nodeType":"YulFunctionCall","src":"23445:13:16"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"23436:5:16"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23493:5:16"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"23467:25:16"},"nodeType":"YulFunctionCall","src":"23467:32:16"},"nodeType":"YulExpressionStatement","src":"23467:32:16"}]},"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"23404:6:16","type":""},{"name":"end","nodeType":"YulTypedName","src":"23412:3:16","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"23420:5:16","type":""}],"src":"23364:141:16"},{"body":{"nodeType":"YulBlock","src":"23587:273:16","statements":[{"body":{"nodeType":"YulBlock","src":"23633:83:16","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"23635:77:16"},"nodeType":"YulFunctionCall","src":"23635:79:16"},"nodeType":"YulExpressionStatement","src":"23635:79:16"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"23608:7:16"},{"name":"headStart","nodeType":"YulIdentifier","src":"23617:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23604:3:16"},"nodeType":"YulFunctionCall","src":"23604:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"23629:2:16","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"23600:3:16"},"nodeType":"YulFunctionCall","src":"23600:32:16"},"nodeType":"YulIf","src":"23597:119:16"},{"nodeType":"YulBlock","src":"23726:127:16","statements":[{"nodeType":"YulVariableDeclaration","src":"23741:15:16","value":{"kind":"number","nodeType":"YulLiteral","src":"23755:1:16","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"23745:6:16","type":""}]},{"nodeType":"YulAssignment","src":"23770:73:16","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23815:9:16"},{"name":"offset","nodeType":"YulIdentifier","src":"23826:6:16"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23811:3:16"},"nodeType":"YulFunctionCall","src":"23811:22:16"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"23835:7:16"}],"functionName":{"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulIdentifier","src":"23780:30:16"},"nodeType":"YulFunctionCall","src":"23780:63:16"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"23770:6:16"}]}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23557:9:16","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"23568:7:16","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"23580:6:16","type":""}],"src":"23511:349:16"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approval to current owne\")\n\n mstore(add(memPtr, 32), \"r\")\n\n }\n\n function abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve caller is not to\")\n\n mstore(add(memPtr, 32), \"ken owner nor approved for all\")\n\n }\n\n function abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 62)\n store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: caller is not token owne\")\n\n mstore(add(memPtr, 32), \"r nor approved\")\n\n }\n\n function abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: invalid token ID\")\n\n }\n\n function abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: address zero is not a va\")\n\n mstore(add(memPtr, 32), \"lid owner\")\n\n }\n\n function abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer from incorrect \")\n\n mstore(add(memPtr, 32), \"owner\")\n\n }\n\n function abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve to caller\")\n\n }\n\n function abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to non ERC721Re\")\n\n mstore(add(memPtr, 32), \"ceiver implementer\")\n\n }\n\n function abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 50)\n store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_decode_t_bytes4_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":16,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e99190611450565b6102bc565b6040516100fb9190611498565b60405180910390f35b61010c61039e565b604051610119919061154c565b60405180910390f35b61013c600480360381019061013791906115a4565b610430565b6040516101499190611612565b60405180910390f35b61016c60048036038101906101679190611659565b610476565b005b61018860048036038101906101839190611699565b61058d565b005b6101a4600480360381019061019f9190611699565b6105ed565b005b6101c060048036038101906101bb91906115a4565b61060d565b6040516101cd9190611612565b60405180910390f35b6101f060048036038101906101eb91906116ec565b6106be565b6040516101fd9190611728565b60405180910390f35b61020e610775565b60405161021b919061154c565b60405180910390f35b61023e6004803603810190610239919061176f565b610807565b005b61025a600480360381019061025591906118e4565b61081d565b005b610276600480360381019061027191906115a4565b61087f565b604051610283919061154c565b60405180910390f35b6102a660048036038101906102a19190611967565b6108e7565b6040516102b39190611498565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061039757506103968261097b565b5b9050919050565b6060600080546103ad906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d9906119d6565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b826109e5565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104818261060d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e890611a79565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610510610a30565b73ffffffffffffffffffffffffffffffffffffffff16148061053f575061053e81610539610a30565b6108e7565b5b61057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057590611b0b565b60405180910390fd5b6105888383610a38565b505050565b61059e610598610a30565b82610af1565b6105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d490611b9d565b60405180910390fd5b6105e8838383610b86565b505050565b6106088383836040518060200160405280600081525061081d565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90611c09565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590611c9b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610784906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546107b0906119d6565b80156107fd5780601f106107d2576101008083540402835291602001916107fd565b820191906000526020600020905b8154815290600101906020018083116107e057829003601f168201915b5050505050905090565b610819610812610a30565b8383610dec565b5050565b61082e610828610a30565b83610af1565b61086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086490611b9d565b60405180910390fd5b61087984848484610f58565b50505050565b606061088a826109e5565b6000610894610fb4565b905060008151116108b457604051806020016040528060008152506108df565b806108be84610fcb565b6040516020016108cf929190611cf7565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6109ee81611099565b610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490611c09565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610aab8361060d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610afd8361060d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b3f5750610b3e81856108e7565b5b80610b7d57508373ffffffffffffffffffffffffffffffffffffffff16610b6584610430565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ba68261060d565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390611d8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290611e1f565b60405180910390fd5b610c76838383611105565b610c81600082610a38565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cd19190611e6e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d289190611ea2565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610de783838361110a565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190611f44565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f4b9190611498565b60405180910390a3505050565b610f63848484610b86565b610f6f8484848461110f565b610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590611fd6565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060006001610fda84611291565b01905060008167ffffffffffffffff811115610ff957610ff86117b9565b5b6040519080825280601f01601f19166020018201604052801561102b5781602001600182028036833780820191505090505b509050600082602001820190505b60011561108e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161108257611081611ff6565b5b04945060008503611039575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115611284578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611154610a30565b8786866040518563ffffffff1660e01b8152600401611176949392919061207a565b6020604051808303816000875af19250505080156111b257506040513d601f19601f820116820180604052508101906111af91906120db565b60015b611234573d80600081146111e2576040519150601f19603f3d011682016040523d82523d6000602084013e6111e7565b606091505b50600081510361122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390611fd6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611289565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106112ef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816112e5576112e4611ff6565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061132c576d04ee2d6d415b85acef8100000000838161132257611321611ff6565b5b0492506020810190505b662386f26fc10000831061135b57662386f26fc10000838161135157611350611ff6565b5b0492506010810190505b6305f5e1008310611384576305f5e100838161137a57611379611ff6565b5b0492506008810190505b61271083106113a957612710838161139f5761139e611ff6565b5b0492506004810190505b606483106113cc57606483816113c2576113c1611ff6565b5b0492506002810190505b600a83106113db576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61142d816113f8565b811461143857600080fd5b50565b60008135905061144a81611424565b92915050565b600060208284031215611466576114656113ee565b5b60006114748482850161143b565b91505092915050565b60008115159050919050565b6114928161147d565b82525050565b60006020820190506114ad6000830184611489565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114ed5780820151818401526020810190506114d2565b838111156114fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061151e826114b3565b61152881856114be565b93506115388185602086016114cf565b61154181611502565b840191505092915050565b600060208201905081810360008301526115668184611513565b905092915050565b6000819050919050565b6115818161156e565b811461158c57600080fd5b50565b60008135905061159e81611578565b92915050565b6000602082840312156115ba576115b96113ee565b5b60006115c88482850161158f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115fc826115d1565b9050919050565b61160c816115f1565b82525050565b60006020820190506116276000830184611603565b92915050565b611636816115f1565b811461164157600080fd5b50565b6000813590506116538161162d565b92915050565b600080604083850312156116705761166f6113ee565b5b600061167e85828601611644565b925050602061168f8582860161158f565b9150509250929050565b6000806000606084860312156116b2576116b16113ee565b5b60006116c086828701611644565b93505060206116d186828701611644565b92505060406116e28682870161158f565b9150509250925092565b600060208284031215611702576117016113ee565b5b600061171084828501611644565b91505092915050565b6117228161156e565b82525050565b600060208201905061173d6000830184611719565b92915050565b61174c8161147d565b811461175757600080fd5b50565b60008135905061176981611743565b92915050565b60008060408385031215611786576117856113ee565b5b600061179485828601611644565b92505060206117a58582860161175a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6117f182611502565b810181811067ffffffffffffffff821117156118105761180f6117b9565b5b80604052505050565b60006118236113e4565b905061182f82826117e8565b919050565b600067ffffffffffffffff82111561184f5761184e6117b9565b5b61185882611502565b9050602081019050919050565b82818337600083830152505050565b600061188761188284611834565b611819565b9050828152602081018484840111156118a3576118a26117b4565b5b6118ae848285611865565b509392505050565b600082601f8301126118cb576118ca6117af565b5b81356118db848260208601611874565b91505092915050565b600080600080608085870312156118fe576118fd6113ee565b5b600061190c87828801611644565b945050602061191d87828801611644565b935050604061192e8782880161158f565b925050606085013567ffffffffffffffff81111561194f5761194e6113f3565b5b61195b878288016118b6565b91505092959194509250565b6000806040838503121561197e5761197d6113ee565b5b600061198c85828601611644565b925050602061199d85828601611644565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ee57607f821691505b602082108103611a0157611a006119a7565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a636021836114be565b9150611a6e82611a07565b604082019050919050565b60006020820190508181036000830152611a9281611a56565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000611af5603e836114be565b9150611b0082611a99565b604082019050919050565b60006020820190508181036000830152611b2481611ae8565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000611b87602e836114be565b9150611b9282611b2b565b604082019050919050565b60006020820190508181036000830152611bb681611b7a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000611bf36018836114be565b9150611bfe82611bbd565b602082019050919050565b60006020820190508181036000830152611c2281611be6565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000611c856029836114be565b9150611c9082611c29565b604082019050919050565b60006020820190508181036000830152611cb481611c78565b9050919050565b600081905092915050565b6000611cd1826114b3565b611cdb8185611cbb565b9350611ceb8185602086016114cf565b80840191505092915050565b6000611d038285611cc6565b9150611d0f8284611cc6565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000611d776025836114be565b9150611d8282611d1b565b604082019050919050565b60006020820190508181036000830152611da681611d6a565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e096024836114be565b9150611e1482611dad565b604082019050919050565b60006020820190508181036000830152611e3881611dfc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e798261156e565b9150611e848361156e565b925082821015611e9757611e96611e3f565b5b828203905092915050565b6000611ead8261156e565b9150611eb88361156e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611eed57611eec611e3f565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000611f2e6019836114be565b9150611f3982611ef8565b602082019050919050565b60006020820190508181036000830152611f5d81611f21565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000611fc06032836114be565b9150611fcb82611f64565b604082019050919050565b60006020820190508181036000830152611fef81611fb3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061204c82612025565b6120568185612030565b93506120668185602086016114cf565b61206f81611502565b840191505092915050565b600060808201905061208f6000830187611603565b61209c6020830186611603565b6120a96040830185611719565b81810360608301526120bb8184612041565b905095945050505050565b6000815190506120d581611424565b92915050565b6000602082840312156120f1576120f06113ee565b5b60006120ff848285016120c6565b9150509291505056fea26469706673582212201befbb93823bb4d4f3dd3dd02315ac03aab291ca85b918aca37bea81708f233e64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x28C JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x206 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x1450 JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x1659 JUMP JUMPDEST PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x188 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x183 SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x5ED JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BB SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CD SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FD SWAP2 SWAP1 PUSH2 0x1728 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x775 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21B SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x239 SWAP2 SWAP1 PUSH2 0x176F JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x255 SWAP2 SWAP1 PUSH2 0x18E4 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x276 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x271 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x1967 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x387 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x397 JUMPI POP PUSH2 0x396 DUP3 PUSH2 0x97B JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x3AD SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3D9 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x426 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3FB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x426 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x409 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43B DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x481 DUP3 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E8 SWAP1 PUSH2 0x1A79 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 PUSH2 0xA30 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x53F JUMPI POP PUSH2 0x53E DUP2 PUSH2 0x539 PUSH2 0xA30 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST PUSH2 0x57E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x575 SWAP1 PUSH2 0x1B0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x588 DUP4 DUP4 PUSH2 0xA38 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x59E PUSH2 0x598 PUSH2 0xA30 JUMP JUMPDEST DUP3 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x5DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D4 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E8 DUP4 DUP4 DUP4 PUSH2 0xB86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x608 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x81D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6AC SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x72E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x725 SWAP1 PUSH2 0x1C9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x784 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7B0 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7FD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x819 PUSH2 0x812 PUSH2 0xA30 JUMP JUMPDEST DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x82E PUSH2 0x828 PUSH2 0xA30 JUMP JUMPDEST DUP4 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x86D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x864 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x879 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF58 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x88A DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x894 PUSH2 0xFB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x8B4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x8DF JUMP JUMPDEST DUP1 PUSH2 0x8BE DUP5 PUSH2 0xFCB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8CF SWAP3 SWAP2 SWAP1 PUSH2 0x1CF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9EE DUP2 PUSH2 0x1099 JUMP JUMPDEST PUSH2 0xA2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA24 SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAAB DUP4 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAFD DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xB3F JUMPI POP PUSH2 0xB3E DUP2 DUP6 PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xB7D JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB65 DUP5 PUSH2 0x430 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBA6 DUP3 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBFC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF3 SWAP1 PUSH2 0x1D8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xC6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC62 SWAP1 PUSH2 0x1E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC76 DUP4 DUP4 DUP4 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0xC81 PUSH1 0x0 DUP3 PUSH2 0xA38 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xCD1 SWAP2 SWAP1 PUSH2 0x1E6E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD28 SWAP2 SWAP1 PUSH2 0x1EA2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xDE7 DUP4 DUP4 DUP4 PUSH2 0x110A JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE51 SWAP1 PUSH2 0x1F44 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0xF4B SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xF63 DUP5 DUP5 DUP5 PUSH2 0xB86 JUMP JUMPDEST PUSH2 0xF6F DUP5 DUP5 DUP5 DUP5 PUSH2 0x110F JUMP JUMPDEST PUSH2 0xFAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFA5 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0xFDA DUP5 PUSH2 0x1291 JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFF9 JUMPI PUSH2 0xFF8 PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x102B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x108E JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x1082 JUMPI PUSH2 0x1081 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x1039 JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x1284 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x1154 PUSH2 0xA30 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1176 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x207A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x11B2 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11AF SWAP2 SWAP1 PUSH2 0x20DB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1234 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11E2 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 0x11E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x122C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1223 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x1289 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x12EF JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x12E5 JUMPI PUSH2 0x12E4 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x132C JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1322 JUMPI PUSH2 0x1321 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x135B JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1351 JUMPI PUSH2 0x1350 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1384 JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x137A JUMPI PUSH2 0x1379 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x13A9 JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x139F JUMPI PUSH2 0x139E PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x13CC JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x13C2 JUMPI PUSH2 0x13C1 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x13DB JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x142D DUP2 PUSH2 0x13F8 JUMP JUMPDEST DUP2 EQ PUSH2 0x1438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x144A DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1466 JUMPI PUSH2 0x1465 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1474 DUP5 DUP3 DUP6 ADD PUSH2 0x143B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1492 DUP2 PUSH2 0x147D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x14AD PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1489 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14ED JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x14D2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14FC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x151E DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1528 DUP2 DUP6 PUSH2 0x14BE JUMP JUMPDEST SWAP4 POP PUSH2 0x1538 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x1541 DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1566 DUP2 DUP5 PUSH2 0x1513 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1581 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP2 EQ PUSH2 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x159E DUP2 PUSH2 0x1578 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15BA JUMPI PUSH2 0x15B9 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x15C8 DUP5 DUP3 DUP6 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FC DUP3 PUSH2 0x15D1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x160C DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1627 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1603 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1636 DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x1641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1653 DUP2 PUSH2 0x162D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1670 JUMPI PUSH2 0x166F PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x167E DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x168F DUP6 DUP3 DUP7 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x16B2 JUMPI PUSH2 0x16B1 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x16C0 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x16D1 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x16E2 DUP7 DUP3 DUP8 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1702 JUMPI PUSH2 0x1701 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1710 DUP5 DUP3 DUP6 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1722 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x173D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1719 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x174C DUP2 PUSH2 0x147D JUMP JUMPDEST DUP2 EQ PUSH2 0x1757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1769 DUP2 PUSH2 0x1743 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1786 JUMPI PUSH2 0x1785 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1794 DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x17A5 DUP6 DUP3 DUP7 ADD PUSH2 0x175A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x17F1 DUP3 PUSH2 0x1502 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1810 JUMPI PUSH2 0x180F PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1823 PUSH2 0x13E4 JUMP JUMPDEST SWAP1 POP PUSH2 0x182F DUP3 DUP3 PUSH2 0x17E8 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x184F JUMPI PUSH2 0x184E PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH2 0x1858 DUP3 PUSH2 0x1502 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1887 PUSH2 0x1882 DUP5 PUSH2 0x1834 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x18A3 JUMPI PUSH2 0x18A2 PUSH2 0x17B4 JUMP JUMPDEST JUMPDEST PUSH2 0x18AE DUP5 DUP3 DUP6 PUSH2 0x1865 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x18CB JUMPI PUSH2 0x18CA PUSH2 0x17AF JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x18DB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1874 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x18FE JUMPI PUSH2 0x18FD PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x190C DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x191D DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x192E DUP8 DUP3 DUP9 ADD PUSH2 0x158F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x194F JUMPI PUSH2 0x194E PUSH2 0x13F3 JUMP JUMPDEST JUMPDEST PUSH2 0x195B DUP8 DUP3 DUP9 ADD PUSH2 0x18B6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x197E JUMPI PUSH2 0x197D PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x198C DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x199D DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x19EE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1A01 JUMPI PUSH2 0x1A00 PUSH2 0x19A7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A63 PUSH1 0x21 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1A6E DUP3 PUSH2 0x1A07 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A92 DUP2 PUSH2 0x1A56 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AF5 PUSH1 0x3E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B00 DUP3 PUSH2 0x1A99 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B24 DUP2 PUSH2 0x1AE8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B87 PUSH1 0x2E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B92 DUP3 PUSH2 0x1B2B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BB6 DUP2 PUSH2 0x1B7A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF3 PUSH1 0x18 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1BFE DUP3 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C22 DUP2 PUSH2 0x1BE6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C85 PUSH1 0x29 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1C90 DUP3 PUSH2 0x1C29 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1CB4 DUP2 PUSH2 0x1C78 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CD1 DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1CDB DUP2 DUP6 PUSH2 0x1CBB JUMP JUMPDEST SWAP4 POP PUSH2 0x1CEB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D03 DUP3 DUP6 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D0F DUP3 DUP5 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D77 PUSH1 0x25 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1D82 DUP3 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1DA6 DUP2 PUSH2 0x1D6A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E09 PUSH1 0x24 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1E14 DUP3 PUSH2 0x1DAD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E38 DUP2 PUSH2 0x1DFC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E79 DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1E84 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x1E97 JUMPI PUSH2 0x1E96 PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EAD DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1EB8 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x1EED JUMPI PUSH2 0x1EEC PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F2E PUSH1 0x19 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1F39 DUP3 PUSH2 0x1EF8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F5D DUP2 PUSH2 0x1F21 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FC0 PUSH1 0x32 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1FCB DUP3 PUSH2 0x1F64 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FEF DUP2 PUSH2 0x1FB3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204C DUP3 PUSH2 0x2025 JUMP JUMPDEST PUSH2 0x2056 DUP2 DUP6 PUSH2 0x2030 JUMP JUMPDEST SWAP4 POP PUSH2 0x2066 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x206F DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x208F PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x20A9 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1719 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x20BB DUP2 DUP5 PUSH2 0x2041 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x20D5 DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20F1 JUMPI PUSH2 0x20F0 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20FF DUP5 DUP3 DUP6 ADD PUSH2 0x20C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xEF 0xBB SWAP4 DUP3 EXTCODESIZE 0xB4 0xD4 RETURN 0xDD RETURNDATASIZE 0xD0 0x23 ISZERO 0xAC SUB 0xAA 0xB2 SWAP2 0xCA DUP6 0xB9 XOR 0xAC LOG3 PUSH28 0xEA81708F233E64736F6C634300080D00330000000000000000000000 ","sourceMap":"1382:13860:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:300;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3317:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4775:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4314:400;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5452:327;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5845:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3037:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3479:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5009:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6090:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3647:276;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2417:300;2519:4;2569:25;2554:40;;;:11;:40;;;;:104;;;;2625:33;2610:48;;;:11;:48;;;;2554:104;:156;;;;2674:36;2698:11;2674:23;:36::i;:::-;2554:156;2535:175;;2417:300;;;:::o;3317:98::-;3371:13;3403:5;3396:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3317:98;:::o;4775:167::-;4851:7;4870:23;4885:7;4870:14;:23::i;:::-;4911:15;:24;4927:7;4911:24;;;;;;;;;;;;;;;;;;;;;4904:31;;4775:167;;;:::o;4314:400::-;4394:13;4410:16;4418:7;4410;:16::i;:::-;4394:32;;4450:5;4444:11;;:2;:11;;;4436:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4541:5;4525:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;4550:37;4567:5;4574:12;:10;:12::i;:::-;4550:16;:37::i;:::-;4525:62;4504:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;4686:21;4695:2;4699:7;4686:8;:21::i;:::-;4384:330;4314:400;;:::o;5452:327::-;5641:41;5660:12;:10;:12::i;:::-;5674:7;5641:18;:41::i;:::-;5633:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;5744:28;5754:4;5760:2;5764:7;5744:9;:28::i;:::-;5452:327;;;:::o;5845:179::-;5978:39;5995:4;6001:2;6005:7;5978:39;;;;;;;;;;;;:16;:39::i;:::-;5845:179;;;:::o;3037:218::-;3109:7;3128:13;3144:7;:16;3152:7;3144:16;;;;;;;;;;;;;;;;;;;;;3128:32;;3195:1;3178:19;;:5;:19;;;3170:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3243:5;3236:12;;;3037:218;;;:::o;2776:204::-;2848:7;2892:1;2875:19;;:5;:19;;;2867:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2957:9;:16;2967:5;2957:16;;;;;;;;;;;;;;;;2950:23;;2776:204;;;:::o;3479:102::-;3535:13;3567:7;3560:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3479:102;:::o;5009:153::-;5103:52;5122:12;:10;:12::i;:::-;5136:8;5146;5103:18;:52::i;:::-;5009:153;;:::o;6090:315::-;6258:41;6277:12;:10;:12::i;:::-;6291:7;6258:18;:41::i;:::-;6250:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;6360:38;6374:4;6380:2;6384:7;6393:4;6360:13;:38::i;:::-;6090:315;;;;:::o;3647:276::-;3720:13;3745:23;3760:7;3745:14;:23::i;:::-;3779:21;3803:10;:8;:10::i;:::-;3779:34;;3854:1;3836:7;3830:21;:25;:86;;;;;;;;;;;;;;;;;3882:7;3891:18;:7;:16;:18::i;:::-;3865:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3830:86;3823:93;;;3647:276;;;:::o;5228:162::-;5325:4;5348:18;:25;5367:5;5348:25;;;;;;;;;;;;;;;:35;5374:8;5348:35;;;;;;;;;;;;;;;;;;;;;;;;;5341:42;;5228:162;;;;:::o;829:155:8:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;12550:133:14:-;12631:16;12639:7;12631;:16::i;:::-;12623:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12550:133;:::o;640:96:6:-;693:7;719:10;712:17;;640:96;:::o;11859:164:14:-;11960:2;11933:15;:24;11949:7;11933:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12008:7;12004:2;11977:39;;11986:16;11994:7;11986;:16::i;:::-;11977:39;;;;;;;;;;;;11859:164;;:::o;8157:254::-;8250:4;8266:13;8282:16;8290:7;8282;:16::i;:::-;8266:32;;8327:5;8316:16;;:7;:16;;;:52;;;;8336:32;8353:5;8360:7;8336:16;:32::i;:::-;8316:52;:87;;;;8396:7;8372:31;;:20;8384:7;8372:11;:20::i;:::-;:31;;;8316:87;8308:96;;;8157:254;;;;:::o;11149:598::-;11296:4;11276:24;;:16;11284:7;11276;:16::i;:::-;:24;;;11268:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11374:1;11360:16;;:2;:16;;;11352:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11428:39;11449:4;11455:2;11459:7;11428:20;:39::i;:::-;11529:29;11546:1;11550:7;11529:8;:29::i;:::-;11588:1;11569:9;:15;11579:4;11569:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;11616:1;11599:9;:13;11609:2;11599:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;11646:2;11627:7;:16;11635:7;11627:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11683:7;11679:2;11664:27;;11673:4;11664:27;;;;;;;;;;;;11702:38;11722:4;11728:2;11732:7;11702:19;:38::i;:::-;11149:598;;;:::o;12159:307::-;12309:8;12300:17;;:5;:17;;;12292:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12395:8;12357:18;:25;12376:5;12357:25;;;;;;;;;;;;;;;:35;12383:8;12357:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12440:8;12418:41;;12433:5;12418:41;;;12450:8;12418:41;;;;;;:::i;:::-;;;;;;;;12159:307;;;:::o;7266:305::-;7416:28;7426:4;7432:2;7436:7;7416:9;:28::i;:::-;7462:47;7485:4;7491:2;7495:7;7504:4;7462:22;:47::i;:::-;7454:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7266:305;;;;:::o;4165:92::-;4216:13;4241:9;;;;;;;;;;;;;;4165:92;:::o;447:696:7:-;503:13;552:14;589:1;569:17;580:5;569:10;:17::i;:::-;:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;604:41;;659:11;785:6;781:2;777:15;769:6;765:28;758:35;;820:280;827:4;820:280;;;851:5;;;;;;;;990:8;985:2;978:5;974:14;969:30;964:3;956:44;1044:2;1035:11;;;;;;:::i;:::-;;;;;1077:1;1068:5;:10;820:280;1064:21;820:280;1120:6;1113:13;;;;;447:696;;;:::o;7874:125:14:-;7939:4;7990:1;7962:30;;:7;:16;7970:7;7962:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7955:37;;7874:125;;;:::o;14625:122::-;;;;:::o;15119:121::-;;;;:::o;13235:834::-;13384:4;13421:1;13404:2;:14;;;:18;13400:663;;;13458:2;13442:36;;;13479:12;:10;:12::i;:::-;13493:4;13499:7;13508:4;13442:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13438:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13697:1;13680:6;:13;:18;13676:321;;13722:60;;;;;;;;;;:::i;:::-;;;;;;;;13676:321;13949:6;13943:13;13934:6;13930:2;13926:15;13919:38;13438:573;13573:41;;;13563:51;;;:6;:51;;;;13556:58;;;;;13400:663;14048:4;14041:11;;13235:834;;;;;;;:::o;10139:916:10:-;10192:7;10211:14;10228:1;10211:18;;10276:8;10267:5;:17;10263:103;;10313:8;10304:17;;;;;;:::i;:::-;;;;;10349:2;10339:12;;;;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;;;;:::i;:::-;;;;;10465:2;10455:12;;;;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;;;;:::i;:::-;;;;;10581:2;10571:12;;;;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;;;;:::i;:::-;;;;;10695:1;10685:11;;;;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;;;;:::i;:::-;;;;;10808:1;10798:11;;;;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;;;;:::i;:::-;;;;;10921:1;10911:11;;;;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;;;;10950:66;11042:6;11035:13;;;10139:916;;;:::o;7:75:16:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:619::-;5015:6;5023;5031;5080:2;5068:9;5059:7;5055:23;5051:32;5048:119;;;5086:79;;:::i;:::-;5048:119;5206:1;5231:53;5276:7;5267:6;5256:9;5252:22;5231:53;:::i;:::-;5221:63;;5177:117;5333:2;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5304:118;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;4938:619;;;;;:::o;5563:329::-;5622:6;5671:2;5659:9;5650:7;5646:23;5642:32;5639:119;;;5677:79;;:::i;:::-;5639:119;5797:1;5822:53;5867:7;5858:6;5847:9;5843:22;5822:53;:::i;:::-;5812:63;;5768:117;5563:329;;;;:::o;5898:118::-;5985:24;6003:5;5985:24;:::i;:::-;5980:3;5973:37;5898:118;;:::o;6022:222::-;6115:4;6153:2;6142:9;6138:18;6130:26;;6166:71;6234:1;6223:9;6219:17;6210:6;6166:71;:::i;:::-;6022:222;;;;:::o;6250:116::-;6320:21;6335:5;6320:21;:::i;:::-;6313:5;6310:32;6300:60;;6356:1;6353;6346:12;6300:60;6250:116;:::o;6372:133::-;6415:5;6453:6;6440:20;6431:29;;6469:30;6493:5;6469:30;:::i;:::-;6372:133;;;;:::o;6511:468::-;6576:6;6584;6633:2;6621:9;6612:7;6608:23;6604:32;6601:119;;;6639:79;;:::i;:::-;6601:119;6759:1;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6730:117;6886:2;6912:50;6954:7;6945:6;6934:9;6930:22;6912:50;:::i;:::-;6902:60;;6857:115;6511:468;;;;;:::o;6985:117::-;7094:1;7091;7084:12;7108:117;7217:1;7214;7207:12;7231:180;7279:77;7276:1;7269:88;7376:4;7373:1;7366:15;7400:4;7397:1;7390:15;7417:281;7500:27;7522:4;7500:27;:::i;:::-;7492:6;7488:40;7630:6;7618:10;7615:22;7594:18;7582:10;7579:34;7576:62;7573:88;;;7641:18;;:::i;:::-;7573:88;7681:10;7677:2;7670:22;7460:238;7417:281;;:::o;7704:129::-;7738:6;7765:20;;:::i;:::-;7755:30;;7794:33;7822:4;7814:6;7794:33;:::i;:::-;7704:129;;;:::o;7839:307::-;7900:4;7990:18;7982:6;7979:30;7976:56;;;8012:18;;:::i;:::-;7976:56;8050:29;8072:6;8050:29;:::i;:::-;8042:37;;8134:4;8128;8124:15;8116:23;;7839:307;;;:::o;8152:154::-;8236:6;8231:3;8226;8213:30;8298:1;8289:6;8284:3;8280:16;8273:27;8152:154;;;:::o;8312:410::-;8389:5;8414:65;8430:48;8471:6;8430:48;:::i;:::-;8414:65;:::i;:::-;8405:74;;8502:6;8495:5;8488:21;8540:4;8533:5;8529:16;8578:3;8569:6;8564:3;8560:16;8557:25;8554:112;;;8585:79;;:::i;:::-;8554:112;8675:41;8709:6;8704:3;8699;8675:41;:::i;:::-;8395:327;8312:410;;;;;:::o;8741:338::-;8796:5;8845:3;8838:4;8830:6;8826:17;8822:27;8812:122;;8853:79;;:::i;:::-;8812:122;8970:6;8957:20;8995:78;9069:3;9061:6;9054:4;9046:6;9042:17;8995:78;:::i;:::-;8986:87;;8802:277;8741:338;;;;:::o;9085:943::-;9180:6;9188;9196;9204;9253:3;9241:9;9232:7;9228:23;9224:33;9221:120;;;9260:79;;:::i;:::-;9221:120;9380:1;9405:53;9450:7;9441:6;9430:9;9426:22;9405:53;:::i;:::-;9395:63;;9351:117;9507:2;9533:53;9578:7;9569:6;9558:9;9554:22;9533:53;:::i;:::-;9523:63;;9478:118;9635:2;9661:53;9706:7;9697:6;9686:9;9682:22;9661:53;:::i;:::-;9651:63;;9606:118;9791:2;9780:9;9776:18;9763:32;9822:18;9814:6;9811:30;9808:117;;;9844:79;;:::i;:::-;9808:117;9949:62;10003:7;9994:6;9983:9;9979:22;9949:62;:::i;:::-;9939:72;;9734:287;9085:943;;;;;;;:::o;10034:474::-;10102:6;10110;10159:2;10147:9;10138:7;10134:23;10130:32;10127:119;;;10165:79;;:::i;:::-;10127:119;10285:1;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;:::i;:::-;10300:63;;10256:117;10412:2;10438:53;10483:7;10474:6;10463:9;10459:22;10438:53;:::i;:::-;10428:63;;10383:118;10034:474;;;;;:::o;10514:180::-;10562:77;10559:1;10552:88;10659:4;10656:1;10649:15;10683:4;10680:1;10673:15;10700:320;10744:6;10781:1;10775:4;10771:12;10761:22;;10828:1;10822:4;10818:12;10849:18;10839:81;;10905:4;10897:6;10893:17;10883:27;;10839:81;10967:2;10959:6;10956:14;10936:18;10933:38;10930:84;;10986:18;;:::i;:::-;10930:84;10751:269;10700:320;;;:::o;11026:220::-;11166:34;11162:1;11154:6;11150:14;11143:58;11235:3;11230:2;11222:6;11218:15;11211:28;11026:220;:::o;11252:366::-;11394:3;11415:67;11479:2;11474:3;11415:67;:::i;:::-;11408:74;;11491:93;11580:3;11491:93;:::i;:::-;11609:2;11604:3;11600:12;11593:19;;11252:366;;;:::o;11624:419::-;11790:4;11828:2;11817:9;11813:18;11805:26;;11877:9;11871:4;11867:20;11863:1;11852:9;11848:17;11841:47;11905:131;12031:4;11905:131;:::i;:::-;11897:139;;11624:419;;;:::o;12049:249::-;12189:34;12185:1;12177:6;12173:14;12166:58;12258:32;12253:2;12245:6;12241:15;12234:57;12049:249;:::o;12304:366::-;12446:3;12467:67;12531:2;12526:3;12467:67;:::i;:::-;12460:74;;12543:93;12632:3;12543:93;:::i;:::-;12661:2;12656:3;12652:12;12645:19;;12304:366;;;:::o;12676:419::-;12842:4;12880:2;12869:9;12865:18;12857:26;;12929:9;12923:4;12919:20;12915:1;12904:9;12900:17;12893:47;12957:131;13083:4;12957:131;:::i;:::-;12949:139;;12676:419;;;:::o;13101:233::-;13241:34;13237:1;13229:6;13225:14;13218:58;13310:16;13305:2;13297:6;13293:15;13286:41;13101:233;:::o;13340:366::-;13482:3;13503:67;13567:2;13562:3;13503:67;:::i;:::-;13496:74;;13579:93;13668:3;13579:93;:::i;:::-;13697:2;13692:3;13688:12;13681:19;;13340:366;;;:::o;13712:419::-;13878:4;13916:2;13905:9;13901:18;13893:26;;13965:9;13959:4;13955:20;13951:1;13940:9;13936:17;13929:47;13993:131;14119:4;13993:131;:::i;:::-;13985:139;;13712:419;;;:::o;14137:174::-;14277:26;14273:1;14265:6;14261:14;14254:50;14137:174;:::o;14317:366::-;14459:3;14480:67;14544:2;14539:3;14480:67;:::i;:::-;14473:74;;14556:93;14645:3;14556:93;:::i;:::-;14674:2;14669:3;14665:12;14658:19;;14317:366;;;:::o;14689:419::-;14855:4;14893:2;14882:9;14878:18;14870:26;;14942:9;14936:4;14932:20;14928:1;14917:9;14913:17;14906:47;14970:131;15096:4;14970:131;:::i;:::-;14962:139;;14689:419;;;:::o;15114:228::-;15254:34;15250:1;15242:6;15238:14;15231:58;15323:11;15318:2;15310:6;15306:15;15299:36;15114:228;:::o;15348:366::-;15490:3;15511:67;15575:2;15570:3;15511:67;:::i;:::-;15504:74;;15587:93;15676:3;15587:93;:::i;:::-;15705:2;15700:3;15696:12;15689:19;;15348:366;;;:::o;15720:419::-;15886:4;15924:2;15913:9;15909:18;15901:26;;15973:9;15967:4;15963:20;15959:1;15948:9;15944:17;15937:47;16001:131;16127:4;16001:131;:::i;:::-;15993:139;;15720:419;;;:::o;16145:148::-;16247:11;16284:3;16269:18;;16145:148;;;;:::o;16299:377::-;16405:3;16433:39;16466:5;16433:39;:::i;:::-;16488:89;16570:6;16565:3;16488:89;:::i;:::-;16481:96;;16586:52;16631:6;16626:3;16619:4;16612:5;16608:16;16586:52;:::i;:::-;16663:6;16658:3;16654:16;16647:23;;16409:267;16299:377;;;;:::o;16682:435::-;16862:3;16884:95;16975:3;16966:6;16884:95;:::i;:::-;16877:102;;16996:95;17087:3;17078:6;16996:95;:::i;:::-;16989:102;;17108:3;17101:10;;16682:435;;;;;:::o;17123:224::-;17263:34;17259:1;17251:6;17247:14;17240:58;17332:7;17327:2;17319:6;17315:15;17308:32;17123:224;:::o;17353:366::-;17495:3;17516:67;17580:2;17575:3;17516:67;:::i;:::-;17509:74;;17592:93;17681:3;17592:93;:::i;:::-;17710:2;17705:3;17701:12;17694:19;;17353:366;;;:::o;17725:419::-;17891:4;17929:2;17918:9;17914:18;17906:26;;17978:9;17972:4;17968:20;17964:1;17953:9;17949:17;17942:47;18006:131;18132:4;18006:131;:::i;:::-;17998:139;;17725:419;;;:::o;18150:223::-;18290:34;18286:1;18278:6;18274:14;18267:58;18359:6;18354:2;18346:6;18342:15;18335:31;18150:223;:::o;18379:366::-;18521:3;18542:67;18606:2;18601:3;18542:67;:::i;:::-;18535:74;;18618:93;18707:3;18618:93;:::i;:::-;18736:2;18731:3;18727:12;18720:19;;18379:366;;;:::o;18751:419::-;18917:4;18955:2;18944:9;18940:18;18932:26;;19004:9;18998:4;18994:20;18990:1;18979:9;18975:17;18968:47;19032:131;19158:4;19032:131;:::i;:::-;19024:139;;18751:419;;;:::o;19176:180::-;19224:77;19221:1;19214:88;19321:4;19318:1;19311:15;19345:4;19342:1;19335:15;19362:191;19402:4;19422:20;19440:1;19422:20;:::i;:::-;19417:25;;19456:20;19474:1;19456:20;:::i;:::-;19451:25;;19495:1;19492;19489:8;19486:34;;;19500:18;;:::i;:::-;19486:34;19545:1;19542;19538:9;19530:17;;19362:191;;;;:::o;19559:305::-;19599:3;19618:20;19636:1;19618:20;:::i;:::-;19613:25;;19652:20;19670:1;19652:20;:::i;:::-;19647:25;;19806:1;19738:66;19734:74;19731:1;19728:81;19725:107;;;19812:18;;:::i;:::-;19725:107;19856:1;19853;19849:9;19842:16;;19559:305;;;;:::o;19870:175::-;20010:27;20006:1;19998:6;19994:14;19987:51;19870:175;:::o;20051:366::-;20193:3;20214:67;20278:2;20273:3;20214:67;:::i;:::-;20207:74;;20290:93;20379:3;20290:93;:::i;:::-;20408:2;20403:3;20399:12;20392:19;;20051:366;;;:::o;20423:419::-;20589:4;20627:2;20616:9;20612:18;20604:26;;20676:9;20670:4;20666:20;20662:1;20651:9;20647:17;20640:47;20704:131;20830:4;20704:131;:::i;:::-;20696:139;;20423:419;;;:::o;20848:237::-;20988:34;20984:1;20976:6;20972:14;20965:58;21057:20;21052:2;21044:6;21040:15;21033:45;20848:237;:::o;21091:366::-;21233:3;21254:67;21318:2;21313:3;21254:67;:::i;:::-;21247:74;;21330:93;21419:3;21330:93;:::i;:::-;21448:2;21443:3;21439:12;21432:19;;21091:366;;;:::o;21463:419::-;21629:4;21667:2;21656:9;21652:18;21644:26;;21716:9;21710:4;21706:20;21702:1;21691:9;21687:17;21680:47;21744:131;21870:4;21744:131;:::i;:::-;21736:139;;21463:419;;;:::o;21888:180::-;21936:77;21933:1;21926:88;22033:4;22030:1;22023:15;22057:4;22054:1;22047:15;22074:98;22125:6;22159:5;22153:12;22143:22;;22074:98;;;:::o;22178:168::-;22261:11;22295:6;22290:3;22283:19;22335:4;22330:3;22326:14;22311:29;;22178:168;;;;:::o;22352:360::-;22438:3;22466:38;22498:5;22466:38;:::i;:::-;22520:70;22583:6;22578:3;22520:70;:::i;:::-;22513:77;;22599:52;22644:6;22639:3;22632:4;22625:5;22621:16;22599:52;:::i;:::-;22676:29;22698:6;22676:29;:::i;:::-;22671:3;22667:39;22660:46;;22442:270;22352:360;;;;:::o;22718:640::-;22913:4;22951:3;22940:9;22936:19;22928:27;;22965:71;23033:1;23022:9;23018:17;23009:6;22965:71;:::i;:::-;23046:72;23114:2;23103:9;23099:18;23090:6;23046:72;:::i;:::-;23128;23196:2;23185:9;23181:18;23172:6;23128:72;:::i;:::-;23247:9;23241:4;23237:20;23232:2;23221:9;23217:18;23210:48;23275:76;23346:4;23337:6;23275:76;:::i;:::-;23267:84;;22718:640;;;;;;;:::o;23364:141::-;23420:5;23451:6;23445:13;23436:22;;23467:32;23493:5;23467:32;:::i;:::-;23364:141;;;;:::o;23511:349::-;23580:6;23629:2;23617:9;23608:7;23604:23;23600:32;23597:119;;;23635:79;;:::i;:::-;23597:119;23755:1;23780:63;23835:7;23826:6;23815:9;23811:22;23780:63;:::i;:::-;23770:73;;23726:127;23511:349;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"1702000","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2921","getApproved(uint256)":"5234","isApprovedForAll(address,address)":"infinite","name()":"infinite","ownerOf(uint256)":"2979","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"infinite","supportsInterface(bytes4)":"774","symbol()":"infinite","tokenURI(uint256)":"3424","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,uint256)":"15","_approve(address,uint256)":"infinite","_baseURI()":"infinite","_beforeTokenTransfer(address,address,uint256)":"15","_burn(uint256)":"infinite","_checkOnERC721Received(address,address,uint256,bytes memory)":"infinite","_exists(uint256)":"2269","_isApprovedOrOwner(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_requireMinted(uint256)":"infinite","_safeMint(address,uint256)":"infinite","_safeMint(address,uint256,bytes memory)":"infinite","_safeTransfer(address,address,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}. NOTE: The only changes made here are: - change scope of \\\"_owners\\\" from private to internal - change scope of \\\"_balances\\\" from private to internal - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\" - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/lib/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n *\\n * NOTE:\\n * The only changes made here are:\\n * - change scope of \\\"_owners\\\" from private to internal\\n * - change scope of \\\"_balances\\\" from private to internal\\n * - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\"\\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) internal _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) internal _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _owners[tokenId];\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _owners[tokenId] != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId);\\n\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n // Clear approvals\\n _approve(address(0), tokenId);\\n\\n _balances[owner] -= 1;\\n // Prevent re-assigning the token back to the Pre-Mint Receiver\\n _owners[tokenId] = _NULL_ADDRESS;\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.code.length > 0) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n * transferred to `to`.\\n * - When `from` is zero, `tokenId` will be minted for `to`.\\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x726960336df673d5fd509dde21ba3bed24645291d201f74762b945fe4d5aa016\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2327,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":2329,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":2333,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":2337,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":2341,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":2347,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ERC721iEnumerable.sol":{"ERC721iEnumerable":{"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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"This implements an optional extension of {ERC721} defined in the EIP that adds enumerability of all the token ids in the contract as well as all token ids owned by each account.This implementation also includes support for pre-minting a max-supply of tokens up-front. Note on pre-mint: Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs. For this reason, the \"allTokens\" state vars are unneccesary and have been removed. Also defines 2 light-weight state vars: \"_preMintReceiver\" & \"_maxSupply\" Overrides \"ownerOf\" & \"_exists\"","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"Override the ERC721 \"ownerOf\" function to account for the Pre-Mint Receiver."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}. Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable"},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenByIndex(uint256)":{"details":"See {IERC721Enumerable-tokenByIndex}."},"tokenOfOwnerByIndex(address,uint256)":{"details":"See {IERC721Enumerable-tokenOfOwnerByIndex}. note: Fix contributed by surfer77"},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"totalSupply()":{"details":"See {IERC721Enumerable-totalSupply}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"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","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"This implements an optional extension of {ERC721} defined in the EIP that adds enumerability of all the token ids in the contract as well as all token ids owned by each account.This implementation also includes support for pre-minting a max-supply of tokens up-front. Note on pre-mint: Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs. For this reason, the \\\"allTokens\\\" state vars are unneccesary and have been removed. Also defines 2 light-weight state vars: \\\"_preMintReceiver\\\" & \\\"_maxSupply\\\" Overrides \\\"ownerOf\\\" & \\\"_exists\\\"\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"Override the ERC721 \\\"ownerOf\\\" function to account for the Pre-Mint Receiver.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}. note: Fix contributed by surfer77\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ERC721iEnumerable.sol\":\"ERC721iEnumerable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Enumerable is IERC721 {\\n /**\\n * @dev Returns the total amount of tokens stored by the contract.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\\n * Use along with {totalSupply} to enumerate all tokens.\\n */\\n function tokenByIndex(uint256 index) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/lib/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n *\\n * NOTE:\\n * The only changes made here are:\\n * - change scope of \\\"_owners\\\" from private to internal\\n * - change scope of \\\"_balances\\\" from private to internal\\n * - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\"\\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) internal _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) internal _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _owners[tokenId];\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _owners[tokenId] != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId);\\n\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n // Clear approvals\\n _approve(address(0), tokenId);\\n\\n _balances[owner] -= 1;\\n // Prevent re-assigning the token back to the Pre-Mint Receiver\\n _owners[tokenId] = _NULL_ADDRESS;\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.code.length > 0) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n * transferred to `to`.\\n * - When `from` is zero, `tokenId` will be minted for `to`.\\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x726960336df673d5fd509dde21ba3bed24645291d201f74762b945fe4d5aa016\",\"license\":\"MIT\"},\"contracts/lib/ERC721iEnumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modified from: OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\\\";\\n\\n/**\\n * @dev This implements an optional extension of {ERC721} defined in the EIP that adds\\n * enumerability of all the token ids in the contract as well as all token ids owned by each\\n * account.\\n *\\n * @dev This implementation also includes support for pre-minting a max-supply of tokens up-front.\\n *\\n * Note on pre-mint:\\n * Assumes a Max-Supply which is entirely pre-minted to initial address with sequential Token IDs.\\n * For this reason, the \\\"allTokens\\\" state vars are unneccesary and have been removed.\\n * Also defines 2 light-weight state vars: \\\"_preMintReceiver\\\" & \\\"_maxSupply\\\"\\n * Overrides \\\"ownerOf\\\" & \\\"_exists\\\"\\n */\\nabstract contract ERC721iEnumerable is ERC721, IERC721Enumerable {\\n // Mapping from owner to list of owned token IDs\\n mapping(address => mapping(uint256 => uint256)) private _ownedTokens;\\n\\n // Mapping from token ID to index of the owner tokens list\\n mapping(uint256 => uint256) private _ownedTokensIndex;\\n\\n // Tracking for the Pre-Mint Receiver\\n address internal _preMintReceiver;\\n\\n // Max-Supply for Pre-Mint\\n uint256 internal _maxSupply;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n *\\n * Note on Pre-Mint: this implementation maintains the exact same interface for IERC721Enumerable\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\\n * note: Fix contributed by surfer77\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\\n require(index < ERC721.balanceOf(owner), \\\"ERC721Enumerable: owner index out of bounds\\\");\\n if (owner == address(_preMintReceiver)) {\\n uint256 supply = totalSupply();\\n uint256 matched = 0;\\n for (uint256 i = 1; i < supply; i++) {\\n if (ownerOf(i) == address(_preMintReceiver)) {\\n matched += 1;\\n if (matched - 1 == index) {\\n return i;\\n }\\n }\\n }\\n }\\n return _ownedTokens[owner][index];\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n // The Total Supply is simply the Max Supply\\n return _maxSupply;\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-tokenByIndex}.\\n */\\n function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\\n require(index < _maxSupply, \\\"ERC721Enumerable: global index out of bounds\\\");\\n // Array index is 0-based, whereas Token ID is 1-based (sequential).\\n return index + 1;\\n }\\n\\n /**\\n * @dev Override the ERC721 \\\"ownerOf\\\" function to account for the Pre-Mint Receiver.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override(IERC721, ERC721) returns (address) {\\n // Anything beyond the Pre-Minted supply will use the standard \\\"ownerOf\\\"\\n if (tokenId > _maxSupply) {\\n return super.ownerOf(tokenId);\\n }\\n\\n // Since we have Pre-Minted the Max-Supply to the \\\"Pre-Mint Receiver\\\" account, we know:\\n // - if the \\\"_owners\\\" mapping has not been assigned, then the owner is the Pre-Mint Receiver.\\n // - after the NFT is transferred, the \\\"_owners\\\" mapping will be updated with the new owner.\\n address owner_ = _owners[tokenId];\\n if (owner_ == address(0)) {\\n owner_ = _preMintReceiver;\\n }\\n return owner_;\\n }\\n\\n /**\\n * @dev Override the ERC721 \\\"_exists\\\" function to account for the Pre-Minted Max-Supply.\\n */\\n function _exists(uint256 tokenId) internal view virtual override(ERC721) returns (bool) {\\n // Anything beyond the Pre-Minted supply will use the standard \\\"_exists\\\"\\n if (tokenId > _maxSupply) {\\n return super._exists(tokenId);\\n }\\n\\n // We know the Max-Supply has been Pre-Minted with Sequential Token IDs\\n return (tokenId > 0 && tokenId <= _maxSupply);\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_beforeTokenTransfer}.\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual override {\\n super._beforeTokenTransfer(from, to, tokenId);\\n\\n if (from != to) {\\n _removeTokenFromOwnerEnumeration(from, tokenId);\\n _addTokenToOwnerEnumeration(to, tokenId);\\n }\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_addTokenToOwnerEnumeration}.\\n */\\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\\n uint256 length = ERC721.balanceOf(to);\\n _ownedTokens[to][length] = tokenId;\\n _ownedTokensIndex[tokenId] = length;\\n }\\n\\n /**\\n * @dev See {IERC721Enumerable-_removeTokenFromOwnerEnumeration}.\\n */\\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\\n // then delete the last slot (swap and pop).\\n\\n uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;\\n uint256 tokenIndex = _ownedTokensIndex[tokenId];\\n\\n // When the token to delete is the last token, the swap operation is unnecessary\\n if (tokenIndex != lastTokenIndex) {\\n uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\\n\\n _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\\n _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\\n }\\n\\n // This also deletes the contents at the last position of the array\\n delete _ownedTokensIndex[tokenId];\\n delete _ownedTokens[from][lastTokenIndex];\\n }\\n}\\n\",\"keccak256\":\"0x99b0f077ef320163c0100348d120946ea6fefa3d3f0148a8880e01d4a1924752\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2327,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":2329,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":2333,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":2337,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":2341,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":2347,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":3181,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_ownedTokens","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_uint256,t_uint256))"},{"astId":3185,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_ownedTokensIndex","offset":0,"slot":"7","type":"t_mapping(t_uint256,t_uint256)"},{"astId":3187,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_preMintReceiver","offset":0,"slot":"8","type":"t_address"},{"astId":3189,"contract":"contracts/lib/ERC721iEnumerable.sol:ERC721iEnumerable","label":"_maxSupply","offset":0,"slot":"9","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_mapping(t_uint256,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => uint256))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}}}}} \ No newline at end of file diff --git a/build/contracts/build-info/aaffff74657922177b5ed9b5473c7dc7.json b/build/contracts/build-info/aaffff74657922177b5ed9b5473c7dc7.json deleted file mode 100644 index 4c572ce..0000000 --- a/build/contracts/build-info/aaffff74657922177b5ed9b5473c7dc7.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"aaffff74657922177b5ed9b5473c7dc7","_format":"hh-sol-build-info-1","solcVersion":"0.8.17","solcLongVersion":"0.8.17+commit.8df45f5f","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"@openzeppelin/contracts/interfaces/IERC1271.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (interfaces/IERC1271.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC1271 standard signature validation method for\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n *\n * _Available since v4.1._\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 _data\n */\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\ninterface IERC1155Receiver is IERC165 {\n /**\n * @dev Handles the receipt of a single ERC1155 token type. This function is\n * called at the end of a `safeTransferFrom` after the balance has been updated.\n *\n * NOTE: To accept the transfer, this must return\n * `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n * (i.e. 0xf23a6e61, or its own function selector).\n *\n * @param operator The address which initiated the transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param id The ID of the token being transferred\n * @param value The amount of tokens being transferred\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(\n address operator,\n address from,\n uint256 id,\n uint256 value,\n bytes calldata data\n ) external returns (bytes4);\n\n /**\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\n * is called at the end of a `safeBatchTransferFrom` after the balances have\n * been updated.\n *\n * NOTE: To accept the transfer(s), this must return\n * `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n * (i.e. 0xbc197c81, or its own function selector).\n *\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\n * @param from The address which previously owned the token\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\n * @param data Additional data with no specified format\n * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual override returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `amount`.\n */\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, amount);\n _transfer(from, to, amount);\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, allowance(owner, spender) + addedValue);\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n address owner = _msgSender();\n uint256 currentAllowance = allowance(owner, spender);\n require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n unchecked {\n _approve(owner, spender, currentAllowance - subtractedValue);\n }\n\n return true;\n }\n\n /**\n * @dev Moves `amount` of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `from` must have a balance of at least `amount`.\n */\n function _transfer(address from, address to, uint256 amount) internal virtual {\n require(from != address(0), \"ERC20: transfer from the zero address\");\n require(to != address(0), \"ERC20: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, amount);\n\n uint256 fromBalance = _balances[from];\n require(fromBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n unchecked {\n _balances[from] = fromBalance - amount;\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\n // decrementing then incrementing.\n _balances[to] += amount;\n }\n\n emit Transfer(from, to, amount);\n\n _afterTokenTransfer(from, to, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: mint to the zero address\");\n\n _beforeTokenTransfer(address(0), account, amount);\n\n _totalSupply += amount;\n unchecked {\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\n _balances[account] += amount;\n }\n emit Transfer(address(0), account, amount);\n\n _afterTokenTransfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0), \"ERC20: burn from the zero address\");\n\n _beforeTokenTransfer(account, address(0), amount);\n\n uint256 accountBalance = _balances[account];\n require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n unchecked {\n _balances[account] = accountBalance - amount;\n // Overflow not possible: amount <= accountBalance <= totalSupply.\n _totalSupply -= amount;\n }\n\n emit Transfer(account, address(0), amount);\n\n _afterTokenTransfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(address owner, address spender, uint256 amount) internal virtual {\n require(owner != address(0), \"ERC20: approve from the zero address\");\n require(spender != address(0), \"ERC20: approve to the zero address\");\n\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n *\n * Does not update the allowance amount in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Might emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n require(currentAllowance >= amount, \"ERC20: insufficient allowance\");\n unchecked {\n _approve(owner, spender, currentAllowance - amount);\n }\n }\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * has been transferred to `to`.\n * - when `from` is zero, `amount` tokens have been minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) private _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) private _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _ownerOf(tokenId);\n require(owner != address(0), \"ERC721: invalid token ID\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ERC721.ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not token owner or approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n _requireMinted(tokenId);\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n _safeTransfer(from, to, tokenId, data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n */\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n return _owners[tokenId];\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _ownerOf(tokenId) != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n address owner = ERC721.ownerOf(tokenId);\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId, 1);\n\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n unchecked {\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\n // Given that tokens are minted one by one, it is impossible in practice that\n // this ever happens. Might change if we allow batch minting.\n // The ERC fails to describe this case.\n _balances[to] += 1;\n }\n\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n\n _afterTokenTransfer(address(0), to, tokenId, 1);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n * This is an internal function that does not check if the sender is authorized to operate on the token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ERC721.ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\n\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\n owner = ERC721.ownerOf(tokenId);\n\n // Clear approvals\n delete _tokenApprovals[tokenId];\n\n unchecked {\n // Cannot overflow, as that would require more tokens to be burned/transferred\n // out than the owner initially received through minting and transferring in.\n _balances[owner] -= 1;\n }\n delete _owners[tokenId];\n\n emit Transfer(owner, address(0), tokenId);\n\n _afterTokenTransfer(owner, address(0), tokenId, 1);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId, 1);\n\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n\n // Clear approvals from the previous owner\n delete _tokenApprovals[tokenId];\n\n unchecked {\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\n // `from`'s balance is the number of token held, which is at least one before the current\n // transfer.\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\n // all 2**256 token ids to be minted, which in practice is impossible.\n _balances[from] -= 1;\n _balances[to] += 1;\n }\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId, 1);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` has not been minted yet.\n */\n function _requireMinted(uint256 tokenId) internal view virtual {\n require(_exists(tokenId), \"ERC721: invalid token ID\");\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) private returns (bool) {\n if (to.isContract()) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n * - When `from` is zero, the tokens will be minted for `to`.\n * - When `to` is zero, ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n * - `batchSize` is non-zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\n\n /**\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n * - When `from` is zero, the tokens were minted for `to`.\n * - When `to` is zero, ``from``'s tokens were burned.\n * - `from` and `to` are never both zero.\n * - `batchSize` is non-zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\n\n /**\n * @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n *\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\n * that `ownerOf(tokenId)` is `a`.\n */\n // solhint-disable-next-line func-name-mixedcase\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\n _balances[account] += amount;\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\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 caller.\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 v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 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 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/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\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[EIP 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"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\nimport \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"contracts/Account.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\nimport \"./interfaces/IERC6551Account.sol\";\nimport \"./lib/ERC6551AccountLib.sol\";\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/token/ERC1155/IERC1155Receiver.sol\";\nimport \"@openzeppelin/contracts/interfaces/IERC1271.sol\";\n\nerror NotAuthorized();\nerror InvalidInput();\nerror AccountLocked();\nerror ExceedsMaxLockTime();\nerror UntrustedImplementation();\nerror OwnershipCycle();\n\n/**\n * @title A smart contract account owned by a single ERC721 token\n */\ncontract Account is\n IERC165,\n IERC6551Account,\n IERC721Receiver,\n IERC1155Receiver\n{\n /// @dev timestamp at which this account will be unlocked\n uint256 public lockedUntil;\n\n /// @dev mapping from owner => caller => has permissions\n mapping(address => mapping(address => bool)) public permissions;\n\n event OverrideUpdated(\n address owner,\n bytes4 selector,\n address implementation\n );\n\n event PermissionUpdated(address owner, address caller, bool hasPermission);\n\n event LockUpdated(uint256 lockedUntil);\n\n /// @dev reverts if caller is not the owner of the account\n modifier onlyOwner() {\n if (msg.sender != owner()) revert NotAuthorized();\n _;\n }\n\n /// @dev reverts if caller is not authorized to execute on this account\n modifier onlyAuthorized() {\n if (!isAuthorized(msg.sender)) revert NotAuthorized();\n _;\n }\n\n /// @dev reverts if this account is currently locked\n modifier onlyUnlocked() {\n if (isLocked()) revert AccountLocked();\n _;\n }\n\n constructor() {}\n\n /// @dev allows eth transfers by default, but allows account owner to override\n receive() external payable {\n }\n\n /// @dev executes a low-level call against an account if the caller is authorized to make calls\n function executeCall(\n address to,\n uint256 value,\n bytes calldata data\n ) external payable onlyAuthorized onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) {\n emit TransactionExecuted(to, value, data);\n\n return _call(to, value, data);\n }\n\n /// @dev grants a given caller execution permissions\n function setPermissions(\n address[] calldata callers,\n bool[] calldata _permissions\n ) external onlyUnlocked {\n address _owner = owner();\n if (msg.sender != _owner) revert NotAuthorized();\n\n uint256 length = callers.length;\n\n if (_permissions.length != length) revert InvalidInput();\n\n for (uint256 i = 0; i < length; i++) {\n permissions[_owner][callers[i]] = _permissions[i];\n emit PermissionUpdated(_owner, callers[i], _permissions[i]);\n }\n }\n\n /// @dev locks the account until a certain timestamp\n function lock(uint256 _lockedUntil) external onlyOwner onlyUnlocked {\n if (_lockedUntil > block.timestamp + 365 days)\n revert ExceedsMaxLockTime();\n\n lockedUntil = _lockedUntil;\n\n emit LockUpdated(_lockedUntil);\n }\n\n /// @dev returns the current lock status of the account as a boolean\n function isLocked() public view returns (bool) {\n return lockedUntil > block.timestamp;\n }\n\n /// @dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\n /// owns this account.\n function token()\n external\n view\n returns (\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n )\n {\n return ERC6551AccountLib.token();\n }\n\n /// @dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\n /// of the token has full permissions on the account.\n function owner() public view returns (address) {\n (\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n ) = ERC6551AccountLib.token();\n\n if (chainId != block.chainid) return address(0);\n\n return IERC721(tokenContract).ownerOf(tokenId);\n }\n\n /// @dev Returns the authorization status for a given caller\n function isAuthorized(address caller) public view returns (bool) {\n (\n ,\n address tokenContract,\n uint256 tokenId\n ) = ERC6551AccountLib.token();\n address _owner = IERC721(tokenContract).ownerOf(tokenId);\n\n // authorize token owner\n if (caller == _owner) return true;\n\n // authorize caller if owner has granted permissions\n if (permissions[_owner][caller]) return true;\n\n return false;\n }\n\n /// @dev Returns true if a given interfaceId is supported by this account. This method can be\n /// extended by an override.\n function supportsInterface(bytes4 interfaceId)\n public\n pure \n override\n returns (bool)\n {\n bool defaultSupport = interfaceId == type(IERC165).interfaceId ||\n interfaceId == type(IERC1155Receiver).interfaceId ||\n interfaceId == type(IERC6551Account).interfaceId;\n\n if (defaultSupport) return true;\n\n return false;\n }\n\n /// @dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\n /// This function can be overriden.\n function onERC721Received(\n address,\n address,\n uint256 receivedTokenId,\n bytes memory\n ) public view override returns (bytes4) {\n (\n uint256 chainId,\n address tokenContract,\n uint256 tokenId\n ) = ERC6551AccountLib.token();\n\n if (\n chainId == block.chainid &&\n tokenContract == msg.sender &&\n tokenId == receivedTokenId\n ) revert OwnershipCycle();\n\n return this.onERC721Received.selector;\n }\n\n /// @dev Allows ERC-1155 tokens to be received. This function can be overriden.\n function onERC1155Received(\n address,\n address,\n uint256,\n uint256,\n bytes memory\n ) public pure override returns (bytes4) {\n return this.onERC1155Received.selector;\n }\n\n /// @dev Allows ERC-1155 token batches to be received. This function can be overriden.\n function onERC1155BatchReceived(\n address,\n address,\n uint256[] memory,\n uint256[] memory,\n bytes memory\n ) public pure override returns (bytes4) {\n return this.onERC1155BatchReceived.selector;\n }\n\n /// @dev Executes a low-level call\n function _call(\n address to,\n uint256 value,\n bytes calldata data\n ) internal returns (bytes memory result) {\n bool success;\n (success, result) = to.call{value: value}(data);\n\n if (!success) {\n assembly {\n revert(add(result, 32), mload(result))\n }\n }\n }\n\n /// @dev Executes a low-level static call\n function _callStatic(address to, bytes calldata data)\n internal\n view\n returns (bytes memory result)\n {\n bool success;\n (success, result) = to.staticcall(data);\n\n if (!success) {\n assembly {\n revert(add(result, 32), mload(result))\n }\n }\n }\n\n function allowedMethod(bytes calldata _data) internal returns (bool) {\n bytes4 signature = parseFirst4Bytes(_data);\n // approve > 0x095ea7b3\n\n if (signature == 0x095ea7b3) {\n return false;\n }\n\n return true;\n }\n\n function parseFirst4Bytes(bytes calldata _data) public pure returns (bytes4) {\n return bytes4(_data[:4]);\n }\n\n modifier onlyAllowedMethod(bytes calldata _data) {\n require(allowedMethod(_data), \"Method all not allowed\");\n _;\n }\n}\n"},"contracts/AccountRegistryBridge.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.13;\n\nimport \"./interfaces/IRegistry.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\ncontract AccountRegistryBridge {\n address public constant REGISTRY = \t0x02101dfB77FDE026414827Fdc604ddAF224F0921;\n address public constant IMPLEMENTATION = 0x2D25602551487C3f3354dD80D76D54383A243358;\n\n function createAccount(\n address contractAddress,\n uint256 tokenId\n ) external returns (address) {\n return IRegistry(REGISTRY).createAccount(\n IMPLEMENTATION,\n block.chainid,\n contractAddress,\n tokenId,\n 0,\n ''\n );\n }\n\n function account(\n address contractAddress,\n uint256 tokenId\n ) external view returns (address) {\n return IRegistry(REGISTRY).account(\n IMPLEMENTATION,\n block.chainid,\n contractAddress,\n tokenId,\n 0\n );\n }\n}"},"contracts/ChargedParticlesAccount.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\nimport \"./Account.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ncontract ChargedParticlesAccount is Account {\n function covalentBond(\n address nftTokenAddress,\n uint256 nftTokenId,\n uint256 nftTokenAmount\n ) external {\n // Transfer to self\n IERC721(nftTokenAddress).safeTransferFrom(\n msg.sender,\n address(this),\n nftTokenId\n );\n }\n\n function breakCovalentBond(\n address receiver,\n address nftTokenAddress,\n uint256 nftTokenId,\n uint256 nftTokenAmount\n ) external {\n IERC721(nftTokenAddress).safeTransferFrom(address(this), receiver, nftTokenId);\n }\n\n function energizeParticle(\n address assetToken,\n uint256 assetAmount\n ) external {\n IERC20(assetToken).transferFrom(msg.sender, address(this), assetAmount);\n }\n\n function dischargeParticle(\n address receiver,\n address assetToken,\n uint256 assetAmount\n ) external {\n IERC20(assetToken).transfer(receiver, assetAmount);\n }\n}\n"},"contracts/interfaces/IAccount.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\ninterface IAccount {\n function owner() external view returns (address);\n\n function token()\n external\n view\n returns (address tokenContract, uint256 tokenId);\n\n function executeCall(\n address to,\n uint256 value,\n bytes calldata data\n ) external payable returns (bytes memory);\n}\n"},"contracts/interfaces/IChargedParticles.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// IChargedParticles.sol -- Part of the Charged Particles Protocol\n// Copyright (c) 2021 Firma Lux, Inc. \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\npragma solidity >=0.6.0;\n\n/**\n * @notice Interface for Charged Particles\n */\ninterface IChargedParticles {\n\n /***********************************|\n | Public API |\n |__________________________________*/\n\n function getStateAddress() external view returns (address stateAddress);\n function getSettingsAddress() external view returns (address settingsAddress);\n function getManagersAddress() external view returns (address managersAddress);\n\n function getFeesForDeposit(uint256 assetAmount) external view returns (uint256 protocolFee);\n function baseParticleMass(address contractAddress, uint256 tokenId, string calldata walletManagerId, address assetToken) external returns (uint256);\n function currentParticleCharge(address contractAddress, uint256 tokenId, string calldata walletManagerId, address assetToken) external returns (uint256);\n function currentParticleKinetics(address contractAddress, uint256 tokenId, string calldata walletManagerId, address assetToken) external returns (uint256);\n function currentParticleCovalentBonds(address contractAddress, uint256 tokenId, string calldata basketManagerId) external view returns (uint256);\n\n /***********************************|\n | Particle Mechanics |\n |__________________________________*/\n\n function energizeParticle(\n address contractAddress,\n uint256 tokenId,\n string calldata walletManagerId,\n address assetToken,\n uint256 assetAmount,\n address referrer\n ) external returns (uint256 yieldTokensAmount);\n\n function dischargeParticle(\n address receiver,\n address contractAddress,\n uint256 tokenId,\n string calldata walletManagerId,\n address assetToken\n ) external returns (uint256 creatorAmount, uint256 receiverAmount);\n\n function dischargeParticleAmount(\n address receiver,\n address contractAddress,\n uint256 tokenId,\n string calldata walletManagerId,\n address assetToken,\n uint256 assetAmount\n ) external returns (uint256 creatorAmount, uint256 receiverAmount);\n\n function dischargeParticleForCreator(\n address receiver,\n address contractAddress,\n uint256 tokenId,\n string calldata walletManagerId,\n address assetToken,\n uint256 assetAmount\n ) external returns (uint256 receiverAmount);\n\n function releaseParticle(\n address receiver,\n address contractAddress,\n uint256 tokenId,\n string calldata walletManagerId,\n address assetToken\n ) external returns (uint256 creatorAmount, uint256 receiverAmount);\n\n function releaseParticleAmount(\n address receiver,\n address contractAddress,\n uint256 tokenId,\n string calldata walletManagerId,\n address assetToken,\n uint256 assetAmount\n ) external returns (uint256 creatorAmount, uint256 receiverAmount);\n\n function covalentBond(\n address contractAddress,\n uint256 tokenId,\n string calldata basketManagerId,\n address nftTokenAddress,\n uint256 nftTokenId,\n uint256 nftTokenAmount\n ) external returns (bool success);\n\n function breakCovalentBond(\n address receiver,\n address contractAddress,\n uint256 tokenId,\n string calldata basketManagerId,\n address nftTokenAddress,\n uint256 nftTokenId,\n uint256 nftTokenAmount\n ) external returns (bool success);\n}\n"},"contracts/interfaces/IERC6551Account.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\ninterface IERC6551AccountProxy {\n function implementation() external view returns (address);\n}\n\n/// @dev the ERC-165 identifier for this interface is `0xeff4d378`\ninterface IERC6551Account {\n event TransactionExecuted(address indexed target, uint256 indexed value, bytes data);\n\n receive() external payable;\n\n function executeCall(\n address to,\n uint256 value,\n bytes calldata data\n ) external payable returns (bytes memory);\n\n function token()\n external\n view\n returns (uint256 chainId, address tokenContract, uint256 tokenId);\n\n function owner() external view returns (address);\n}\n"},"contracts/interfaces/IRegistry.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\ninterface IRegistry {\n function createAccount(\n address implementation,\n uint256 chainId,\n address tokenContract,\n uint256 tokenId,\n uint256 salt,\n bytes calldata initData\n ) external returns (address);\n\n function account(\n address implementation,\n uint256 chainId,\n address tokenContract,\n uint256 tokenId,\n uint256 salt\n ) external view returns (address);\n}\n"},"contracts/lib/ERC6551AccountLib.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.13;\n\nlibrary ERC6551AccountLib {\n function token()\n internal\n view\n returns (\n uint256,\n address,\n uint256\n )\n {\n bytes memory footer = new bytes(0x60);\n\n assembly {\n // copy 0x60 bytes from end of footer\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\n }\n\n return abi.decode(footer, (uint256, address, uint256));\n }\n\n function salt() internal view returns (uint256) {\n bytes memory footer = new bytes(0x20);\n\n assembly {\n // copy 0x20 bytes from beginning of footer\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\n }\n\n return abi.decode(footer, (uint256));\n }\n}\n"},"contracts/lib/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\n// Modified by: Rob Secord (https://twitter.com/robsecord)\n// Co-founder @ Charged Particles - Visit: https://charged.fi\n// Co-founder @ Taggr - Visit: https://taggr.io\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n *\n * NOTE:\n * The only changes made here are:\n * - change scope of \"_owners\" from private to internal\n * - change scope of \"_balances\" from private to internal\n * - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\"\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) internal _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) internal _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _owners[tokenId];\n require(owner != address(0), \"ERC721: invalid token ID\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not token owner nor approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n _requireMinted(tokenId);\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n _safeTransfer(from, to, tokenId, data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _owners[tokenId] != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n address owner = ownerOf(tokenId);\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId);\n\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n\n _afterTokenTransfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId);\n\n // Clear approvals\n _approve(address(0), tokenId);\n\n _balances[owner] -= 1;\n // Prevent re-assigning the token back to the Pre-Mint Receiver\n _owners[tokenId] = _NULL_ADDRESS;\n\n emit Transfer(owner, address(0), tokenId);\n\n _afterTokenTransfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {\n require(ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n _balances[from] -= 1;\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(\n address owner,\n address operator,\n bool approved\n ) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` has not been minted yet.\n */\n function _requireMinted(uint256 tokenId) internal view virtual {\n require(_exists(tokenId), \"ERC721: invalid token ID\");\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) private returns (bool) {\n if (to.code.length > 0) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n}\n"},"contracts/MinimalAccount.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\n/**\n * @title A smart contract account owned by a single ERC721 token\n */\ncontract MinimalAccount\n{\n\n}\n"},"contracts/mock/ERC20Mock.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.8;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract ERC20Mock is ERC20, Ownable {\n constructor()\n ERC20(\"MyToken\", \"MTK\")\n Ownable()\n {}\n\n function mint(address to, uint256 amount) public onlyOwner {\n _mint(to, amount);\n }\n}"},"contracts/mock/NFTMock.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.8;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\n\ncontract NFTMock is ERC721 {\n // solhint-disable-next-line no-empty-blocks\n constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) {\n }\n\n function mint(address to, uint256 tokenId) external {\n _mint(to, tokenId);\n }\n}"}},"settings":{"optimizer":{"enabled":true,"runs":200},"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/ChargedParticlesAccount.sol:12:9:\n |\n12 | uint256 nftTokenAmount\n | ^^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":370,"file":"contracts/ChargedParticlesAccount.sol","start":348},"type":"Warning"},{"component":"general","errorCode":"5667","formattedMessage":"Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n --> contracts/ChargedParticlesAccount.sol:26:9:\n |\n26 | uint256 nftTokenAmount\n | ^^^^^^^^^^^^^^^^^^^^^^\n\n","message":"Unused function parameter. Remove or comment out the variable name to silence this warning.","severity":"warning","sourceLocation":{"end":708,"file":"contracts/ChargedParticlesAccount.sol","start":686},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"Warning: Function state mutability can be restricted to pure\n --> contracts/Account.sol:253:5:\n |\n253 | function allowedMethod(bytes calldata _data) internal returns (bool) {\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":7650,"file":"contracts/Account.sol","start":7391},"type":"Warning"}],"sources":{"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[2297],"Ownable":[112]},"id":113,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:0"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":113,"sourceUnit":2298,"src":"127:30:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4,"name":"Context","nameLocations":["683:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":2297,"src":"683:7:0"},"id":5,"nodeType":"InheritanceSpecifier","src":"683:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"159:494:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":112,"linearizedBaseContracts":[112,2297],"name":"Ownable","nameLocation":"672:7:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7,"mutability":"mutable","name":"_owner","nameLocation":"713:6:0","nodeType":"VariableDeclaration","scope":112,"src":"697:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":13,"name":"OwnershipTransferred","nameLocation":"732:20:0","nodeType":"EventDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"769:13:0","nodeType":"VariableDeclaration","scope":13,"src":"753:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8,"name":"address","nodeType":"ElementaryTypeName","src":"753:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"800:8:0","nodeType":"VariableDeclaration","scope":13,"src":"784:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"784:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"752:57:0"},"src":"726:84:0"},{"body":{"id":22,"nodeType":"Block","src":"926:49:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":18,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"955:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":19,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"955:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"936:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"936:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21,"nodeType":"ExpressionStatement","src":"936:32:0"}]},"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"816:91:0","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":23,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"923:2:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"926:0:0"},"scope":112,"src":"912:63:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":30,"nodeType":"Block","src":"1084:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":26,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1094:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":27,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1094:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28,"nodeType":"ExpressionStatement","src":"1094:13:0"},{"id":29,"nodeType":"PlaceholderStatement","src":"1117:1:0"}]},"documentation":{"id":24,"nodeType":"StructuredDocumentation","src":"981:77:0","text":" @dev Throws if called by any account other than the owner."},"id":31,"name":"onlyOwner","nameLocation":"1072:9:0","nodeType":"ModifierDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"1081:2:0"},"src":"1063:62:0","virtual":false,"visibility":"internal"},{"body":{"id":39,"nodeType":"Block","src":"1256:30:0","statements":[{"expression":{"id":37,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"1273:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":36,"id":38,"nodeType":"Return","src":"1266:13:0"}]},"documentation":{"id":32,"nodeType":"StructuredDocumentation","src":"1131:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":40,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1210:5:0","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[],"src":"1215:2:0"},"returnParameters":{"id":36,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40,"src":"1247:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1247:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1246:9:0"},"scope":112,"src":"1201:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":53,"nodeType":"Block","src":"1404:85:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":45,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"1422:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":47,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"1433:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":48,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1433:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1422:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1447:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":44,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1414:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1414:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52,"nodeType":"ExpressionStatement","src":"1414:68:0"}]},"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1292:62:0","text":" @dev Throws if the sender is not the owner."},"id":54,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1368:11:0","nodeType":"FunctionDefinition","parameters":{"id":42,"nodeType":"ParameterList","parameters":[],"src":"1379:2:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[],"src":"1404:0:0"},"scope":112,"src":"1359:130:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":67,"nodeType":"Block","src":"1878:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":63,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1915:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":62,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1907:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"1907:7:0","typeDescriptions":{}}},"id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1907:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"1888:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1888:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"ExpressionStatement","src":"1888:30:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1495:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":68,"implemented":true,"kind":"function","modifiers":[{"id":58,"kind":"modifierInvocation","modifierName":{"id":57,"name":"onlyOwner","nameLocations":["1868:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":31,"src":"1868:9:0"},"nodeType":"ModifierInvocation","src":"1868:9:0"}],"name":"renounceOwnership","nameLocation":"1833:17:0","nodeType":"FunctionDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"1850:2:0"},"returnParameters":{"id":59,"nodeType":"ParameterList","parameters":[],"src":"1878:0:0"},"scope":112,"src":"1824:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":90,"nodeType":"Block","src":"2144:128:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":82,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2162:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2182:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":79,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2174:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"2174:7:0","typeDescriptions":{}}},"id":81,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2174:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2162:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":83,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2186:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":76,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2154:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85,"nodeType":"ExpressionStatement","src":"2154:73:0"},{"expression":{"arguments":[{"id":87,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2256:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2237:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2237:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"2237:28:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1931:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":91,"implemented":true,"kind":"function","modifiers":[{"id":74,"kind":"modifierInvocation","modifierName":{"id":73,"name":"onlyOwner","nameLocations":["2134:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2134:9:0"},"nodeType":"ModifierInvocation","src":"2134:9:0"}],"name":"transferOwnership","nameLocation":"2083:17:0","nodeType":"FunctionDefinition","parameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"newOwner","nameLocation":"2109:8:0","nodeType":"VariableDeclaration","scope":91,"src":"2101:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"2101:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2100:18:0"},"returnParameters":{"id":75,"nodeType":"ParameterList","parameters":[],"src":"2144:0:0"},"scope":112,"src":"2074:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":110,"nodeType":"Block","src":"2489:124:0","statements":[{"assignments":[98],"declarations":[{"constant":false,"id":98,"mutability":"mutable","name":"oldOwner","nameLocation":"2507:8:0","nodeType":"VariableDeclaration","scope":110,"src":"2499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":100,"initialValue":{"id":99,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2518:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2499:25:0"},{"expression":{"id":103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":101,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2534:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":102,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2543:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2534:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":104,"nodeType":"ExpressionStatement","src":"2534:17:0"},{"eventCall":{"arguments":[{"id":106,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"2587:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":107,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2597:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":105,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"2566:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2566:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"EmitStatement","src":"2561:45:0"}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"2278:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":111,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2435:18:0","nodeType":"FunctionDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"newOwner","nameLocation":"2462:8:0","nodeType":"VariableDeclaration","scope":111,"src":"2454:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":93,"name":"address","nodeType":"ElementaryTypeName","src":"2454:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2453:18:0"},"returnParameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2489:0:0"},"scope":112,"src":"2426:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":113,"src":"654:1961:0","usedErrors":[]}],"src":"102:2514:0"},"id":0},"@openzeppelin/contracts/interfaces/IERC1271.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","exportedSymbols":{"IERC1271":[126]},"id":127,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":114,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"92:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1271","contractDependencies":[],"contractKind":"interface","documentation":{"id":115,"nodeType":"StructuredDocumentation","src":"117:189:1","text":" @dev Interface of the ERC1271 standard signature validation method for\n contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n _Available since v4.1._"},"fullyImplemented":false,"id":126,"linearizedBaseContracts":[126],"name":"IERC1271","nameLocation":"317:8:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"332:220:1","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 _data"},"functionSelector":"1626ba7e","id":125,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"566:16:1","nodeType":"FunctionDefinition","parameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118,"mutability":"mutable","name":"hash","nameLocation":"591:4:1","nodeType":"VariableDeclaration","scope":125,"src":"583:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":117,"name":"bytes32","nodeType":"ElementaryTypeName","src":"583:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":120,"mutability":"mutable","name":"signature","nameLocation":"610:9:1","nodeType":"VariableDeclaration","scope":125,"src":"597:22:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":119,"name":"bytes","nodeType":"ElementaryTypeName","src":"597:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"582:38:1"},"returnParameters":{"id":124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":123,"mutability":"mutable","name":"magicValue","nameLocation":"651:10:1","nodeType":"VariableDeclaration","scope":125,"src":"644:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":122,"name":"bytes4","nodeType":"ElementaryTypeName","src":"644:6:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"643:19:1"},"scope":126,"src":"557:106:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":127,"src":"307:358:1","usedErrors":[]}],"src":"92:574:1"},"id":1},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","exportedSymbols":{"IERC1155Receiver":[167],"IERC165":[2562]},"id":168,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":128,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"118:23:2"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":129,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":168,"sourceUnit":2563,"src":"143:47:2","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":131,"name":"IERC165","nameLocations":["262:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":2562,"src":"262:7:2"},"id":132,"nodeType":"InheritanceSpecifier","src":"262:7:2"}],"canonicalName":"IERC1155Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":130,"nodeType":"StructuredDocumentation","src":"192:39:2","text":" @dev _Available since v3.1._"},"fullyImplemented":false,"id":167,"linearizedBaseContracts":[167,2562],"name":"IERC1155Receiver","nameLocation":"242:16:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":133,"nodeType":"StructuredDocumentation","src":"276:826:2","text":" @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n NOTE: To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"},"functionSelector":"f23a6e61","id":148,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"1116:17:2","nodeType":"FunctionDefinition","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135,"mutability":"mutable","name":"operator","nameLocation":"1151:8:2","nodeType":"VariableDeclaration","scope":148,"src":"1143:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"1143:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":137,"mutability":"mutable","name":"from","nameLocation":"1177:4:2","nodeType":"VariableDeclaration","scope":148,"src":"1169:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":136,"name":"address","nodeType":"ElementaryTypeName","src":"1169:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":139,"mutability":"mutable","name":"id","nameLocation":"1199:2:2","nodeType":"VariableDeclaration","scope":148,"src":"1191:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1191:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":141,"mutability":"mutable","name":"value","nameLocation":"1219:5:2","nodeType":"VariableDeclaration","scope":148,"src":"1211:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":140,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"data","nameLocation":"1249:4:2","nodeType":"VariableDeclaration","scope":148,"src":"1234:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":142,"name":"bytes","nodeType":"ElementaryTypeName","src":"1234:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1133:126:2"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":148,"src":"1278:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":145,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1278:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1277:8:2"},"scope":167,"src":"1107:179:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":149,"nodeType":"StructuredDocumentation","src":"1292:994:2","text":" @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated.\n NOTE: To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"},"functionSelector":"bc197c81","id":166,"implemented":false,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"2300:22:2","nodeType":"FunctionDefinition","parameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":151,"mutability":"mutable","name":"operator","nameLocation":"2340:8:2","nodeType":"VariableDeclaration","scope":166,"src":"2332:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":150,"name":"address","nodeType":"ElementaryTypeName","src":"2332:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":153,"mutability":"mutable","name":"from","nameLocation":"2366:4:2","nodeType":"VariableDeclaration","scope":166,"src":"2358:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":152,"name":"address","nodeType":"ElementaryTypeName","src":"2358:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":156,"mutability":"mutable","name":"ids","nameLocation":"2399:3:2","nodeType":"VariableDeclaration","scope":166,"src":"2380:22:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":154,"name":"uint256","nodeType":"ElementaryTypeName","src":"2380:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":155,"nodeType":"ArrayTypeName","src":"2380:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":159,"mutability":"mutable","name":"values","nameLocation":"2431:6:2","nodeType":"VariableDeclaration","scope":166,"src":"2412:25:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":157,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":158,"nodeType":"ArrayTypeName","src":"2412:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"data","nameLocation":"2462:4:2","nodeType":"VariableDeclaration","scope":166,"src":"2447:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":160,"name":"bytes","nodeType":"ElementaryTypeName","src":"2447:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2322:150:2"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":166,"src":"2491:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":163,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2491:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2490:8:2"},"scope":167,"src":"2291:208:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":168,"src":"232:2269:2","usedErrors":[]}],"src":"118:2384:2"},"id":2},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[2297],"ERC20":[754],"IERC20":[832],"IERC20Metadata":[857]},"id":755,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":169,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"105:23:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":170,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":755,"sourceUnit":833,"src":"130:22:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":171,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":755,"sourceUnit":858,"src":"153:41:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":172,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":755,"sourceUnit":2298,"src":"195:33:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":174,"name":"Context","nameLocations":["1550:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":2297,"src":"1550:7:3"},"id":175,"nodeType":"InheritanceSpecifier","src":"1550:7:3"},{"baseName":{"id":176,"name":"IERC20","nameLocations":["1559:6:3"],"nodeType":"IdentifierPath","referencedDeclaration":832,"src":"1559:6:3"},"id":177,"nodeType":"InheritanceSpecifier","src":"1559:6:3"},{"baseName":{"id":178,"name":"IERC20Metadata","nameLocations":["1567:14:3"],"nodeType":"IdentifierPath","referencedDeclaration":857,"src":"1567:14:3"},"id":179,"nodeType":"InheritanceSpecifier","src":"1567:14:3"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":173,"nodeType":"StructuredDocumentation","src":"230:1301:3","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":754,"linearizedBaseContracts":[754,857,832,2297],"name":"ERC20","nameLocation":"1541:5:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":183,"mutability":"mutable","name":"_balances","nameLocation":"1624:9:3","nodeType":"VariableDeclaration","scope":754,"src":"1588:45:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":182,"keyType":{"id":180,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1588:27:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":181,"name":"uint256","nodeType":"ElementaryTypeName","src":"1607:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":189,"mutability":"mutable","name":"_allowances","nameLocation":"1696:11:3","nodeType":"VariableDeclaration","scope":754,"src":"1640:67:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":188,"keyType":{"id":184,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1640:47:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":187,"keyType":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"1667:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1659:27:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":186,"name":"uint256","nodeType":"ElementaryTypeName","src":"1678:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":191,"mutability":"mutable","name":"_totalSupply","nameLocation":"1730:12:3","nodeType":"VariableDeclaration","scope":754,"src":"1714:28:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":190,"name":"uint256","nodeType":"ElementaryTypeName","src":"1714:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":193,"mutability":"mutable","name":"_name","nameLocation":"1764:5:3","nodeType":"VariableDeclaration","scope":754,"src":"1749:20:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":192,"name":"string","nodeType":"ElementaryTypeName","src":"1749:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":195,"mutability":"mutable","name":"_symbol","nameLocation":"1790:7:3","nodeType":"VariableDeclaration","scope":754,"src":"1775:22:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":194,"name":"string","nodeType":"ElementaryTypeName","src":"1775:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":211,"nodeType":"Block","src":"2036:57:3","statements":[{"expression":{"id":205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":203,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"2046:5:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":204,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":198,"src":"2054:5:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2046:13:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":206,"nodeType":"ExpressionStatement","src":"2046:13:3"},{"expression":{"id":209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":207,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"2069:7:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":208,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":200,"src":"2079:7:3","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2069:17:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":210,"nodeType":"ExpressionStatement","src":"2069:17:3"}]},"documentation":{"id":196,"nodeType":"StructuredDocumentation","src":"1804:171:3","text":" @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction."},"id":212,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"mutability":"mutable","name":"name_","nameLocation":"2006:5:3","nodeType":"VariableDeclaration","scope":212,"src":"1992:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":197,"name":"string","nodeType":"ElementaryTypeName","src":"1992:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":200,"mutability":"mutable","name":"symbol_","nameLocation":"2027:7:3","nodeType":"VariableDeclaration","scope":212,"src":"2013:21:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":199,"name":"string","nodeType":"ElementaryTypeName","src":"2013:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1991:44:3"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"2036:0:3"},"scope":754,"src":"1980:113:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[844],"body":{"id":221,"nodeType":"Block","src":"2227:29:3","statements":[{"expression":{"id":219,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"2244:5:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":218,"id":220,"nodeType":"Return","src":"2237:12:3"}]},"documentation":{"id":213,"nodeType":"StructuredDocumentation","src":"2099:54:3","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":222,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2167:4:3","nodeType":"FunctionDefinition","overrides":{"id":215,"nodeType":"OverrideSpecifier","overrides":[],"src":"2194:8:3"},"parameters":{"id":214,"nodeType":"ParameterList","parameters":[],"src":"2171:2:3"},"returnParameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":222,"src":"2212:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":216,"name":"string","nodeType":"ElementaryTypeName","src":"2212:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2211:15:3"},"scope":754,"src":"2158:98:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[850],"body":{"id":231,"nodeType":"Block","src":"2440:31:3","statements":[{"expression":{"id":229,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"2457:7:3","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":228,"id":230,"nodeType":"Return","src":"2450:14:3"}]},"documentation":{"id":223,"nodeType":"StructuredDocumentation","src":"2262:102:3","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":232,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2378:6:3","nodeType":"FunctionDefinition","overrides":{"id":225,"nodeType":"OverrideSpecifier","overrides":[],"src":"2407:8:3"},"parameters":{"id":224,"nodeType":"ParameterList","parameters":[],"src":"2384:2:3"},"returnParameters":{"id":228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":232,"src":"2425:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":226,"name":"string","nodeType":"ElementaryTypeName","src":"2425:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2424:15:3"},"scope":754,"src":"2369:102:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[856],"body":{"id":241,"nodeType":"Block","src":"3169:26:3","statements":[{"expression":{"hexValue":"3138","id":239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3186:2:3","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":238,"id":240,"nodeType":"Return","src":"3179:9:3"}]},"documentation":{"id":233,"nodeType":"StructuredDocumentation","src":"2477:622:3","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":242,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3113:8:3","nodeType":"FunctionDefinition","overrides":{"id":235,"nodeType":"OverrideSpecifier","overrides":[],"src":"3144:8:3"},"parameters":{"id":234,"nodeType":"ParameterList","parameters":[],"src":"3121:2:3"},"returnParameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":237,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":242,"src":"3162:5:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":236,"name":"uint8","nodeType":"ElementaryTypeName","src":"3162:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3161:7:3"},"scope":754,"src":"3104:91:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[781],"body":{"id":251,"nodeType":"Block","src":"3325:36:3","statements":[{"expression":{"id":249,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"3342:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":248,"id":250,"nodeType":"Return","src":"3335:19:3"}]},"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"3201:49:3","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":252,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3264:11:3","nodeType":"FunctionDefinition","overrides":{"id":245,"nodeType":"OverrideSpecifier","overrides":[],"src":"3298:8:3"},"parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"3275:2:3"},"returnParameters":{"id":248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":252,"src":"3316:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":246,"name":"uint256","nodeType":"ElementaryTypeName","src":"3316:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3315:9:3"},"scope":754,"src":"3255:106:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[789],"body":{"id":265,"nodeType":"Block","src":"3502:42:3","statements":[{"expression":{"baseExpression":{"id":261,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"3519:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":263,"indexExpression":{"id":262,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"3529:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3519:18:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":260,"id":264,"nodeType":"Return","src":"3512:25:3"}]},"documentation":{"id":253,"nodeType":"StructuredDocumentation","src":"3367:47:3","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":266,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3428:9:3","nodeType":"FunctionDefinition","overrides":{"id":257,"nodeType":"OverrideSpecifier","overrides":[],"src":"3475:8:3"},"parameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":255,"mutability":"mutable","name":"account","nameLocation":"3446:7:3","nodeType":"VariableDeclaration","scope":266,"src":"3438:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":254,"name":"address","nodeType":"ElementaryTypeName","src":"3438:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3437:17:3"},"returnParameters":{"id":260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":266,"src":"3493:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":258,"name":"uint256","nodeType":"ElementaryTypeName","src":"3493:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3492:9:3"},"scope":754,"src":"3419:125:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[799],"body":{"id":290,"nodeType":"Block","src":"3825:104:3","statements":[{"assignments":[278],"declarations":[{"constant":false,"id":278,"mutability":"mutable","name":"owner","nameLocation":"3843:5:3","nodeType":"VariableDeclaration","scope":290,"src":"3835:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":277,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":281,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":279,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"3851:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3851:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3835:28:3"},{"expression":{"arguments":[{"id":283,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"3883:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":284,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":269,"src":"3890:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":285,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"3894:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":282,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"3873:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3873:28:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":287,"nodeType":"ExpressionStatement","src":"3873:28:3"},{"expression":{"hexValue":"74727565","id":288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3918:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":276,"id":289,"nodeType":"Return","src":"3911:11:3"}]},"documentation":{"id":267,"nodeType":"StructuredDocumentation","src":"3550:185:3","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":291,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3749:8:3","nodeType":"FunctionDefinition","overrides":{"id":273,"nodeType":"OverrideSpecifier","overrides":[],"src":"3801:8:3"},"parameters":{"id":272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":269,"mutability":"mutable","name":"to","nameLocation":"3766:2:3","nodeType":"VariableDeclaration","scope":291,"src":"3758:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":268,"name":"address","nodeType":"ElementaryTypeName","src":"3758:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":271,"mutability":"mutable","name":"amount","nameLocation":"3778:6:3","nodeType":"VariableDeclaration","scope":291,"src":"3770:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":270,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3757:28:3"},"returnParameters":{"id":276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":291,"src":"3819:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":274,"name":"bool","nodeType":"ElementaryTypeName","src":"3819:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3818:6:3"},"scope":754,"src":"3740:189:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[809],"body":{"id":308,"nodeType":"Block","src":"4085:51:3","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":302,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"4102:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":304,"indexExpression":{"id":303,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"4114:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4102:18:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":306,"indexExpression":{"id":305,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":296,"src":"4121:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4102:27:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":301,"id":307,"nodeType":"Return","src":"4095:34:3"}]},"documentation":{"id":292,"nodeType":"StructuredDocumentation","src":"3935:47:3","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":309,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3996:9:3","nodeType":"FunctionDefinition","overrides":{"id":298,"nodeType":"OverrideSpecifier","overrides":[],"src":"4058:8:3"},"parameters":{"id":297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"mutability":"mutable","name":"owner","nameLocation":"4014:5:3","nodeType":"VariableDeclaration","scope":309,"src":"4006:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":293,"name":"address","nodeType":"ElementaryTypeName","src":"4006:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":296,"mutability":"mutable","name":"spender","nameLocation":"4029:7:3","nodeType":"VariableDeclaration","scope":309,"src":"4021:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":295,"name":"address","nodeType":"ElementaryTypeName","src":"4021:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4005:32:3"},"returnParameters":{"id":301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":309,"src":"4076:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":299,"name":"uint256","nodeType":"ElementaryTypeName","src":"4076:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4075:9:3"},"scope":754,"src":"3987:149:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[819],"body":{"id":333,"nodeType":"Block","src":"4533:108:3","statements":[{"assignments":[321],"declarations":[{"constant":false,"id":321,"mutability":"mutable","name":"owner","nameLocation":"4551:5:3","nodeType":"VariableDeclaration","scope":333,"src":"4543:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":320,"name":"address","nodeType":"ElementaryTypeName","src":"4543:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":324,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":322,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"4559:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4559:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4543:28:3"},{"expression":{"arguments":[{"id":326,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"4590:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":327,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"4597:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":328,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"4606:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":325,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"4581:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4581:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":330,"nodeType":"ExpressionStatement","src":"4581:32:3"},{"expression":{"hexValue":"74727565","id":331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4630:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":319,"id":332,"nodeType":"Return","src":"4623:11:3"}]},"documentation":{"id":310,"nodeType":"StructuredDocumentation","src":"4142:297:3","text":" @dev See {IERC20-approve}.\n NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":334,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4453:7:3","nodeType":"FunctionDefinition","overrides":{"id":316,"nodeType":"OverrideSpecifier","overrides":[],"src":"4509:8:3"},"parameters":{"id":315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"spender","nameLocation":"4469:7:3","nodeType":"VariableDeclaration","scope":334,"src":"4461:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":311,"name":"address","nodeType":"ElementaryTypeName","src":"4461:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":314,"mutability":"mutable","name":"amount","nameLocation":"4486:6:3","nodeType":"VariableDeclaration","scope":334,"src":"4478:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":313,"name":"uint256","nodeType":"ElementaryTypeName","src":"4478:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4460:33:3"},"returnParameters":{"id":319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":334,"src":"4527:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":317,"name":"bool","nodeType":"ElementaryTypeName","src":"4527:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4526:6:3"},"scope":754,"src":"4444:197:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[831],"body":{"id":366,"nodeType":"Block","src":"5306:153:3","statements":[{"assignments":[348],"declarations":[{"constant":false,"id":348,"mutability":"mutable","name":"spender","nameLocation":"5324:7:3","nodeType":"VariableDeclaration","scope":366,"src":"5316:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":347,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":351,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":349,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"5334:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5334:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5316:30:3"},{"expression":{"arguments":[{"id":353,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"5372:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":354,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":348,"src":"5378:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":355,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"5387:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":352,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":731,"src":"5356:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5356:38:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":357,"nodeType":"ExpressionStatement","src":"5356:38:3"},{"expression":{"arguments":[{"id":359,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"5414:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":360,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"5420:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":361,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"5424:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":358,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":514,"src":"5404:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5404:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":363,"nodeType":"ExpressionStatement","src":"5404:27:3"},{"expression":{"hexValue":"74727565","id":364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5448:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":346,"id":365,"nodeType":"Return","src":"5441:11:3"}]},"documentation":{"id":335,"nodeType":"StructuredDocumentation","src":"4647:551:3","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`.\n - the caller must have allowance for ``from``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":367,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5212:12:3","nodeType":"FunctionDefinition","overrides":{"id":343,"nodeType":"OverrideSpecifier","overrides":[],"src":"5282:8:3"},"parameters":{"id":342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":337,"mutability":"mutable","name":"from","nameLocation":"5233:4:3","nodeType":"VariableDeclaration","scope":367,"src":"5225:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":336,"name":"address","nodeType":"ElementaryTypeName","src":"5225:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":339,"mutability":"mutable","name":"to","nameLocation":"5247:2:3","nodeType":"VariableDeclaration","scope":367,"src":"5239:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":338,"name":"address","nodeType":"ElementaryTypeName","src":"5239:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":341,"mutability":"mutable","name":"amount","nameLocation":"5259:6:3","nodeType":"VariableDeclaration","scope":367,"src":"5251:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":340,"name":"uint256","nodeType":"ElementaryTypeName","src":"5251:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5224:42:3"},"returnParameters":{"id":346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":345,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":367,"src":"5300:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":344,"name":"bool","nodeType":"ElementaryTypeName","src":"5300:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5299:6:3"},"scope":754,"src":"5203:256:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":395,"nodeType":"Block","src":"5948:140:3","statements":[{"assignments":[378],"declarations":[{"constant":false,"id":378,"mutability":"mutable","name":"owner","nameLocation":"5966:5:3","nodeType":"VariableDeclaration","scope":395,"src":"5958:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":377,"name":"address","nodeType":"ElementaryTypeName","src":"5958:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":381,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":379,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"5974:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5974:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5958:28:3"},{"expression":{"arguments":[{"id":383,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"6005:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":384,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":370,"src":"6012:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":386,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"6031:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":387,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":370,"src":"6038:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":385,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6021:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6021:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":389,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"6049:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6021:38:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":382,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"5996:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5996:64:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":392,"nodeType":"ExpressionStatement","src":"5996:64:3"},{"expression":{"hexValue":"74727565","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6077:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":376,"id":394,"nodeType":"Return","src":"6070:11:3"}]},"documentation":{"id":368,"nodeType":"StructuredDocumentation","src":"5465:384:3","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":396,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nameLocation":"5863:17:3","nodeType":"FunctionDefinition","parameters":{"id":373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":370,"mutability":"mutable","name":"spender","nameLocation":"5889:7:3","nodeType":"VariableDeclaration","scope":396,"src":"5881:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":369,"name":"address","nodeType":"ElementaryTypeName","src":"5881:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"addedValue","nameLocation":"5906:10:3","nodeType":"VariableDeclaration","scope":396,"src":"5898:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":371,"name":"uint256","nodeType":"ElementaryTypeName","src":"5898:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5880:37:3"},"returnParameters":{"id":376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":396,"src":"5942:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":374,"name":"bool","nodeType":"ElementaryTypeName","src":"5942:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5941:6:3"},"scope":754,"src":"5854:234:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":436,"nodeType":"Block","src":"6674:328:3","statements":[{"assignments":[407],"declarations":[{"constant":false,"id":407,"mutability":"mutable","name":"owner","nameLocation":"6692:5:3","nodeType":"VariableDeclaration","scope":436,"src":"6684:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":406,"name":"address","nodeType":"ElementaryTypeName","src":"6684:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":410,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":408,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"6700:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6700:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6684:28:3"},{"assignments":[412],"declarations":[{"constant":false,"id":412,"mutability":"mutable","name":"currentAllowance","nameLocation":"6730:16:3","nodeType":"VariableDeclaration","scope":436,"src":"6722:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":411,"name":"uint256","nodeType":"ElementaryTypeName","src":"6722:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":417,"initialValue":{"arguments":[{"id":414,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"6759:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":415,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":399,"src":"6766:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":413,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"6749:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6749:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6722:52:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":419,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"6792:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":420,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":401,"src":"6812:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6792:35:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6829:39:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""},"value":"ERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8","typeString":"literal_string \"ERC20: decreased allowance below zero\""}],"id":418,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6784:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6784:85:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":424,"nodeType":"ExpressionStatement","src":"6784:85:3"},{"id":433,"nodeType":"UncheckedBlock","src":"6879:95:3","statements":[{"expression":{"arguments":[{"id":426,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"6912:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":427,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":399,"src":"6919:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":428,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":412,"src":"6928:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":429,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":401,"src":"6947:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6928:34:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":425,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"6903:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6903:60:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":432,"nodeType":"ExpressionStatement","src":"6903:60:3"}]},{"expression":{"hexValue":"74727565","id":434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6991:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":405,"id":435,"nodeType":"Return","src":"6984:11:3"}]},"documentation":{"id":397,"nodeType":"StructuredDocumentation","src":"6094:476:3","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":437,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nameLocation":"6584:17:3","nodeType":"FunctionDefinition","parameters":{"id":402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":399,"mutability":"mutable","name":"spender","nameLocation":"6610:7:3","nodeType":"VariableDeclaration","scope":437,"src":"6602:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":398,"name":"address","nodeType":"ElementaryTypeName","src":"6602:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":401,"mutability":"mutable","name":"subtractedValue","nameLocation":"6627:15:3","nodeType":"VariableDeclaration","scope":437,"src":"6619:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":400,"name":"uint256","nodeType":"ElementaryTypeName","src":"6619:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6601:42:3"},"returnParameters":{"id":405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":437,"src":"6668:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":403,"name":"bool","nodeType":"ElementaryTypeName","src":"6668:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6667:6:3"},"scope":754,"src":"6575:427:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":513,"nodeType":"Block","src":"7534:710:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":448,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":440,"src":"7552:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7568: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":450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7560:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":449,"name":"address","nodeType":"ElementaryTypeName","src":"7560:7:3","typeDescriptions":{}}},"id":452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7560:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7552:18:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373","id":454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7572:39:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""},"value":"ERC20: transfer from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea","typeString":"literal_string \"ERC20: transfer from the zero address\""}],"id":447,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7544:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7544:68:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":456,"nodeType":"ExpressionStatement","src":"7544:68:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"7630:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7644: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":460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7636:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":459,"name":"address","nodeType":"ElementaryTypeName","src":"7636:7:3","typeDescriptions":{}}},"id":462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7636:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7630:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472657373","id":464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7648:37:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""},"value":"ERC20: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f","typeString":"literal_string \"ERC20: transfer to the zero address\""}],"id":457,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7622:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7622:64:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":466,"nodeType":"ExpressionStatement","src":"7622:64:3"},{"expression":{"arguments":[{"id":468,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":440,"src":"7718:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":469,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"7724:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":470,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"7728:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":467,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":742,"src":"7697:20:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7697:38:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":472,"nodeType":"ExpressionStatement","src":"7697:38:3"},{"assignments":[474],"declarations":[{"constant":false,"id":474,"mutability":"mutable","name":"fromBalance","nameLocation":"7754:11:3","nodeType":"VariableDeclaration","scope":513,"src":"7746:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":473,"name":"uint256","nodeType":"ElementaryTypeName","src":"7746:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":478,"initialValue":{"baseExpression":{"id":475,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"7768:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":477,"indexExpression":{"id":476,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":440,"src":"7778:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7768:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7746:37:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":480,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"7801:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":481,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"7816:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365","id":483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7824:40:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""},"value":"ERC20: transfer amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6","typeString":"literal_string \"ERC20: transfer amount exceeds balance\""}],"id":479,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7793:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7793:72:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":485,"nodeType":"ExpressionStatement","src":"7793:72:3"},{"id":500,"nodeType":"UncheckedBlock","src":"7875:273:3","statements":[{"expression":{"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":486,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"7899:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":488,"indexExpression":{"id":487,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":440,"src":"7909:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7899:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":489,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"7917:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":490,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"7931:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7917:20:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:38:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":493,"nodeType":"ExpressionStatement","src":"7899:38:3"},{"expression":{"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":494,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"8114:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":496,"indexExpression":{"id":495,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"8124:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8114:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":497,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"8131:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8114:23:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":499,"nodeType":"ExpressionStatement","src":"8114:23:3"}]},{"eventCall":{"arguments":[{"id":502,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":440,"src":"8172:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":503,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"8178:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":504,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"8182:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":501,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"8163:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8163:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":506,"nodeType":"EmitStatement","src":"8158:31:3"},{"expression":{"arguments":[{"id":508,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":440,"src":"8220:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":509,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":442,"src":"8226:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":510,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":444,"src":"8230:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":507,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"8200:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8200:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":512,"nodeType":"ExpressionStatement","src":"8200:37:3"}]},"documentation":{"id":438,"nodeType":"StructuredDocumentation","src":"7008:443:3","text":" @dev Moves `amount` of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `from` must have a balance of at least `amount`."},"id":514,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"7465:9:3","nodeType":"FunctionDefinition","parameters":{"id":445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":440,"mutability":"mutable","name":"from","nameLocation":"7483:4:3","nodeType":"VariableDeclaration","scope":514,"src":"7475:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":439,"name":"address","nodeType":"ElementaryTypeName","src":"7475:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":442,"mutability":"mutable","name":"to","nameLocation":"7497:2:3","nodeType":"VariableDeclaration","scope":514,"src":"7489:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":441,"name":"address","nodeType":"ElementaryTypeName","src":"7489:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":444,"mutability":"mutable","name":"amount","nameLocation":"7509:6:3","nodeType":"VariableDeclaration","scope":514,"src":"7501:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":443,"name":"uint256","nodeType":"ElementaryTypeName","src":"7501:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7474:42:3"},"returnParameters":{"id":446,"nodeType":"ParameterList","parameters":[],"src":"7534:0:3"},"scope":754,"src":"7456:788:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":570,"nodeType":"Block","src":"8585:470:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":523,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"8603:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8622: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":525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8614:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":524,"name":"address","nodeType":"ElementaryTypeName","src":"8614:7:3","typeDescriptions":{}}},"id":527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8614:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8603:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","id":529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8626:33:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""},"value":"ERC20: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e","typeString":"literal_string \"ERC20: mint to the zero address\""}],"id":522,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8595:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8595:65:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":531,"nodeType":"ExpressionStatement","src":"8595:65:3"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8700: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":534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8692:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":533,"name":"address","nodeType":"ElementaryTypeName","src":"8692:7:3","typeDescriptions":{}}},"id":536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8692:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":537,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"8704:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":538,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":519,"src":"8713:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":532,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":742,"src":"8671:20:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8671:49:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":540,"nodeType":"ExpressionStatement","src":"8671:49:3"},{"expression":{"id":543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":541,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"8731:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":542,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":519,"src":"8747:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8731:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":544,"nodeType":"ExpressionStatement","src":"8731:22:3"},{"id":551,"nodeType":"UncheckedBlock","src":"8763:175:3","statements":[{"expression":{"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":545,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"8899:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":547,"indexExpression":{"id":546,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"8909:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8899:18:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":548,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":519,"src":"8921:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8899:28:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":550,"nodeType":"ExpressionStatement","src":"8899:28:3"}]},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8969: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":554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8961:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":553,"name":"address","nodeType":"ElementaryTypeName","src":"8961:7:3","typeDescriptions":{}}},"id":556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8961:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":557,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"8973:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":558,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":519,"src":"8982:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":552,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"8952:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":560,"nodeType":"EmitStatement","src":"8947:42:3"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9028: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":563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9020:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":562,"name":"address","nodeType":"ElementaryTypeName","src":"9020:7:3","typeDescriptions":{}}},"id":565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9020:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":566,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"9032:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":567,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":519,"src":"9041:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":561,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"9000:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9000:48:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":569,"nodeType":"ExpressionStatement","src":"9000:48:3"}]},"documentation":{"id":515,"nodeType":"StructuredDocumentation","src":"8250:265:3","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."},"id":571,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8529:5:3","nodeType":"FunctionDefinition","parameters":{"id":520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":517,"mutability":"mutable","name":"account","nameLocation":"8543:7:3","nodeType":"VariableDeclaration","scope":571,"src":"8535:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":516,"name":"address","nodeType":"ElementaryTypeName","src":"8535:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":519,"mutability":"mutable","name":"amount","nameLocation":"8560:6:3","nodeType":"VariableDeclaration","scope":571,"src":"8552:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":518,"name":"uint256","nodeType":"ElementaryTypeName","src":"8552:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8534:33:3"},"returnParameters":{"id":521,"nodeType":"ParameterList","parameters":[],"src":"8585:0:3"},"scope":754,"src":"8520:535:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":642,"nodeType":"Block","src":"9440:594:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":580,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"9458:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9477: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":582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9469:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":581,"name":"address","nodeType":"ElementaryTypeName","src":"9469:7:3","typeDescriptions":{}}},"id":584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9469:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9458:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e2066726f6d20746865207a65726f2061646472657373","id":586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9481:35:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""},"value":"ERC20: burn from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f","typeString":"literal_string \"ERC20: burn from the zero address\""}],"id":579,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9450:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9450:67:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":588,"nodeType":"ExpressionStatement","src":"9450:67:3"},{"expression":{"arguments":[{"id":590,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"9549:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9566: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":592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9558:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":591,"name":"address","nodeType":"ElementaryTypeName","src":"9558:7:3","typeDescriptions":{}}},"id":594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9558:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":595,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"9570:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":589,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":742,"src":"9528:20:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9528:49:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":597,"nodeType":"ExpressionStatement","src":"9528:49:3"},{"assignments":[599],"declarations":[{"constant":false,"id":599,"mutability":"mutable","name":"accountBalance","nameLocation":"9596:14:3","nodeType":"VariableDeclaration","scope":642,"src":"9588:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":598,"name":"uint256","nodeType":"ElementaryTypeName","src":"9588:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":603,"initialValue":{"baseExpression":{"id":600,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"9613:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":602,"indexExpression":{"id":601,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"9623:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9613:18:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9588:43:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":605,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":599,"src":"9649:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":606,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"9667:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9649:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365","id":608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9675:36:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""},"value":"ERC20: burn amount exceeds balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd","typeString":"literal_string \"ERC20: burn amount exceeds balance\""}],"id":604,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9641:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9641:71:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":610,"nodeType":"ExpressionStatement","src":"9641:71:3"},{"id":623,"nodeType":"UncheckedBlock","src":"9722:194:3","statements":[{"expression":{"id":617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":611,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"9746:9:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":613,"indexExpression":{"id":612,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"9756:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9746:18:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":614,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":599,"src":"9767:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":615,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"9784:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9767:23:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9746:44:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":618,"nodeType":"ExpressionStatement","src":"9746:44:3"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":619,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"9883:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":620,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"9899:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9883:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":622,"nodeType":"ExpressionStatement","src":"9883:22:3"}]},{"eventCall":{"arguments":[{"id":625,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"9940:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9957: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":627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9949:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":626,"name":"address","nodeType":"ElementaryTypeName","src":"9949:7:3","typeDescriptions":{}}},"id":629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9949:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":630,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"9961:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":624,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"9931:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9931:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":632,"nodeType":"EmitStatement","src":"9926:42:3"},{"expression":{"arguments":[{"id":634,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"9999:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10016: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":636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10008:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":635,"name":"address","nodeType":"ElementaryTypeName","src":"10008:7:3","typeDescriptions":{}}},"id":638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10008:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":639,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"10020:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":633,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"9979:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9979:48:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":641,"nodeType":"ExpressionStatement","src":"9979:48:3"}]},"documentation":{"id":572,"nodeType":"StructuredDocumentation","src":"9061:309:3","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":643,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9384:5:3","nodeType":"FunctionDefinition","parameters":{"id":577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":574,"mutability":"mutable","name":"account","nameLocation":"9398:7:3","nodeType":"VariableDeclaration","scope":643,"src":"9390:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":573,"name":"address","nodeType":"ElementaryTypeName","src":"9390:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":576,"mutability":"mutable","name":"amount","nameLocation":"9415:6:3","nodeType":"VariableDeclaration","scope":643,"src":"9407:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":575,"name":"uint256","nodeType":"ElementaryTypeName","src":"9407:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9389:33:3"},"returnParameters":{"id":578,"nodeType":"ParameterList","parameters":[],"src":"9440:0:3"},"scope":754,"src":"9375:659:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":687,"nodeType":"Block","src":"10540:257:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":654,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"10558:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10575: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":656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10567:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":655,"name":"address","nodeType":"ElementaryTypeName","src":"10567:7:3","typeDescriptions":{}}},"id":658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10567:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10558:19:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373","id":660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10579:38:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""},"value":"ERC20: approve from the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208","typeString":"literal_string \"ERC20: approve from the zero address\""}],"id":653,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10550:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10550:68:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":662,"nodeType":"ExpressionStatement","src":"10550:68:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":664,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"10636:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10655: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":666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10647:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":665,"name":"address","nodeType":"ElementaryTypeName","src":"10647:7:3","typeDescriptions":{}}},"id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10647:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10636:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f2061646472657373","id":670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10659:36:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""},"value":"ERC20: approve to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029","typeString":"literal_string \"ERC20: approve to the zero address\""}],"id":663,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10628:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10628:68:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":672,"nodeType":"ExpressionStatement","src":"10628:68:3"},{"expression":{"id":679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":673,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"10707:11:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":676,"indexExpression":{"id":674,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"10719:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10707:18:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":677,"indexExpression":{"id":675,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"10726:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10707:27:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":678,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":650,"src":"10737:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10707:36:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":680,"nodeType":"ExpressionStatement","src":"10707:36:3"},{"eventCall":{"arguments":[{"id":682,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"10767:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":683,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"10774:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":684,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":650,"src":"10783:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":681,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"10758:8:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10758:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":686,"nodeType":"EmitStatement","src":"10753:37:3"}]},"documentation":{"id":644,"nodeType":"StructuredDocumentation","src":"10040:412:3","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":688,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10466:8:3","nodeType":"FunctionDefinition","parameters":{"id":651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":646,"mutability":"mutable","name":"owner","nameLocation":"10483:5:3","nodeType":"VariableDeclaration","scope":688,"src":"10475:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":645,"name":"address","nodeType":"ElementaryTypeName","src":"10475:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":648,"mutability":"mutable","name":"spender","nameLocation":"10498:7:3","nodeType":"VariableDeclaration","scope":688,"src":"10490:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":647,"name":"address","nodeType":"ElementaryTypeName","src":"10490:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":650,"mutability":"mutable","name":"amount","nameLocation":"10515:6:3","nodeType":"VariableDeclaration","scope":688,"src":"10507:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":649,"name":"uint256","nodeType":"ElementaryTypeName","src":"10507:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10474:48:3"},"returnParameters":{"id":652,"nodeType":"ParameterList","parameters":[],"src":"10540:0:3"},"scope":754,"src":"10457:340:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":730,"nodeType":"Block","src":"11168:321:3","statements":[{"assignments":[699],"declarations":[{"constant":false,"id":699,"mutability":"mutable","name":"currentAllowance","nameLocation":"11186:16:3","nodeType":"VariableDeclaration","scope":730,"src":"11178:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":698,"name":"uint256","nodeType":"ElementaryTypeName","src":"11178:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":704,"initialValue":{"arguments":[{"id":701,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"11215:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":702,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"11222:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":700,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"11205:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11205:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11178:52:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":705,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"11244:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11269:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":707,"name":"uint256","nodeType":"ElementaryTypeName","src":"11269:7:3","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":706,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11264:4:3","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11264:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11278:3:3","memberName":"max","nodeType":"MemberAccess","src":"11264:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11244:37:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":729,"nodeType":"IfStatement","src":"11240:243:3","trueBody":{"id":728,"nodeType":"Block","src":"11283:200:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":713,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"11305:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":714,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"11325:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11305:26:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","id":716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11333:31:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""},"value":"ERC20: insufficient allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe","typeString":"literal_string \"ERC20: insufficient allowance\""}],"id":712,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11297:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11297:68:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":718,"nodeType":"ExpressionStatement","src":"11297:68:3"},{"id":727,"nodeType":"UncheckedBlock","src":"11379:94:3","statements":[{"expression":{"arguments":[{"id":720,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"11416:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":721,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"11423:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":722,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"11432:16:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":723,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"11451:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11432:25:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":719,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"11407:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11407:51:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":726,"nodeType":"ExpressionStatement","src":"11407:51:3"}]}]}}]},"documentation":{"id":689,"nodeType":"StructuredDocumentation","src":"10803:270:3","text":" @dev Updates `owner` s allowance for `spender` based on spent `amount`.\n Does not update the allowance amount in case of infinite allowance.\n Revert if not enough allowance is available.\n Might emit an {Approval} event."},"id":731,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"11087:15:3","nodeType":"FunctionDefinition","parameters":{"id":696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":691,"mutability":"mutable","name":"owner","nameLocation":"11111:5:3","nodeType":"VariableDeclaration","scope":731,"src":"11103:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":690,"name":"address","nodeType":"ElementaryTypeName","src":"11103:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":693,"mutability":"mutable","name":"spender","nameLocation":"11126:7:3","nodeType":"VariableDeclaration","scope":731,"src":"11118:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":692,"name":"address","nodeType":"ElementaryTypeName","src":"11118:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":695,"mutability":"mutable","name":"amount","nameLocation":"11143:6:3","nodeType":"VariableDeclaration","scope":731,"src":"11135:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":694,"name":"uint256","nodeType":"ElementaryTypeName","src":"11135:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11102:48:3"},"returnParameters":{"id":697,"nodeType":"ParameterList","parameters":[],"src":"11168:0:3"},"scope":754,"src":"11078:411:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":741,"nodeType":"Block","src":"12162:2:3","statements":[]},"documentation":{"id":732,"nodeType":"StructuredDocumentation","src":"11495:573:3","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":742,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"12082:20:3","nodeType":"FunctionDefinition","parameters":{"id":739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":734,"mutability":"mutable","name":"from","nameLocation":"12111:4:3","nodeType":"VariableDeclaration","scope":742,"src":"12103:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":733,"name":"address","nodeType":"ElementaryTypeName","src":"12103:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":736,"mutability":"mutable","name":"to","nameLocation":"12125:2:3","nodeType":"VariableDeclaration","scope":742,"src":"12117:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":735,"name":"address","nodeType":"ElementaryTypeName","src":"12117:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":738,"mutability":"mutable","name":"amount","nameLocation":"12137:6:3","nodeType":"VariableDeclaration","scope":742,"src":"12129:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":737,"name":"uint256","nodeType":"ElementaryTypeName","src":"12129:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12102:42:3"},"returnParameters":{"id":740,"nodeType":"ParameterList","parameters":[],"src":"12162:0:3"},"scope":754,"src":"12073:91:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":752,"nodeType":"Block","src":"12840:2:3","statements":[]},"documentation":{"id":743,"nodeType":"StructuredDocumentation","src":"12170:577:3","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":753,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"12761:19:3","nodeType":"FunctionDefinition","parameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":745,"mutability":"mutable","name":"from","nameLocation":"12789:4:3","nodeType":"VariableDeclaration","scope":753,"src":"12781:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":744,"name":"address","nodeType":"ElementaryTypeName","src":"12781:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":747,"mutability":"mutable","name":"to","nameLocation":"12803:2:3","nodeType":"VariableDeclaration","scope":753,"src":"12795:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":746,"name":"address","nodeType":"ElementaryTypeName","src":"12795:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":749,"mutability":"mutable","name":"amount","nameLocation":"12815:6:3","nodeType":"VariableDeclaration","scope":753,"src":"12807:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":748,"name":"uint256","nodeType":"ElementaryTypeName","src":"12807:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12780:42:3"},"returnParameters":{"id":751,"nodeType":"ParameterList","parameters":[],"src":"12840:0:3"},"scope":754,"src":"12752:90:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":755,"src":"1532:11312:3","usedErrors":[]}],"src":"105:12740:3"},"id":3},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[832]},"id":833,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":756,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":757,"nodeType":"StructuredDocumentation","src":"131:70:4","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":832,"linearizedBaseContracts":[832],"name":"IERC20","nameLocation":"212:6:4","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":758,"nodeType":"StructuredDocumentation","src":"225:158:4","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":766,"name":"Transfer","nameLocation":"394:8:4","nodeType":"EventDefinition","parameters":{"id":765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":760,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:4","nodeType":"VariableDeclaration","scope":766,"src":"403:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":759,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":762,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:4","nodeType":"VariableDeclaration","scope":766,"src":"425:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":761,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":764,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:4","nodeType":"VariableDeclaration","scope":766,"src":"445:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":763,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:4"},"src":"388:72:4"},{"anonymous":false,"documentation":{"id":767,"nodeType":"StructuredDocumentation","src":"466:148:4","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":775,"name":"Approval","nameLocation":"625:8:4","nodeType":"EventDefinition","parameters":{"id":774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":769,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:4","nodeType":"VariableDeclaration","scope":775,"src":"634:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":768,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":771,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:4","nodeType":"VariableDeclaration","scope":775,"src":"657:23:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":770,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":773,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:4","nodeType":"VariableDeclaration","scope":775,"src":"682:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":772,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:4"},"src":"619:78:4"},{"documentation":{"id":776,"nodeType":"StructuredDocumentation","src":"703:66:4","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":781,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:4","nodeType":"FunctionDefinition","parameters":{"id":777,"nodeType":"ParameterList","parameters":[],"src":"794:2:4"},"returnParameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":779,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":781,"src":"820:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":778,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:4"},"scope":832,"src":"774:55:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":782,"nodeType":"StructuredDocumentation","src":"835:72:4","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":789,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:4","nodeType":"FunctionDefinition","parameters":{"id":785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"account","nameLocation":"939:7:4","nodeType":"VariableDeclaration","scope":789,"src":"931:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":783,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:4"},"returnParameters":{"id":788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":789,"src":"971:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":786,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:4"},"scope":832,"src":"912:68:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":790,"nodeType":"StructuredDocumentation","src":"986:202:4","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":799,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:4","nodeType":"FunctionDefinition","parameters":{"id":795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":792,"mutability":"mutable","name":"to","nameLocation":"1219:2:4","nodeType":"VariableDeclaration","scope":799,"src":"1211:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":791,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":794,"mutability":"mutable","name":"amount","nameLocation":"1231:6:4","nodeType":"VariableDeclaration","scope":799,"src":"1223:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:4"},"returnParameters":{"id":798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":799,"src":"1257:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":796,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:4"},"scope":832,"src":"1193:70:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":800,"nodeType":"StructuredDocumentation","src":"1269:264:4","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":809,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:4","nodeType":"FunctionDefinition","parameters":{"id":805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":802,"mutability":"mutable","name":"owner","nameLocation":"1565:5:4","nodeType":"VariableDeclaration","scope":809,"src":"1557:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":801,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":804,"mutability":"mutable","name":"spender","nameLocation":"1580:7:4","nodeType":"VariableDeclaration","scope":809,"src":"1572:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":803,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:4"},"returnParameters":{"id":808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":807,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":809,"src":"1612:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":806,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:4"},"scope":832,"src":"1538:83:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":810,"nodeType":"StructuredDocumentation","src":"1627:642:4","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":819,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:4","nodeType":"FunctionDefinition","parameters":{"id":815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":812,"mutability":"mutable","name":"spender","nameLocation":"2299:7:4","nodeType":"VariableDeclaration","scope":819,"src":"2291:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":811,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":814,"mutability":"mutable","name":"amount","nameLocation":"2316:6:4","nodeType":"VariableDeclaration","scope":819,"src":"2308:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":813,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:4"},"returnParameters":{"id":818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":819,"src":"2342:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":816,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:4"},"scope":832,"src":"2274:74:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":820,"nodeType":"StructuredDocumentation","src":"2354:287:4","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":831,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:4","nodeType":"FunctionDefinition","parameters":{"id":827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":822,"mutability":"mutable","name":"from","nameLocation":"2676:4:4","nodeType":"VariableDeclaration","scope":831,"src":"2668:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":821,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":824,"mutability":"mutable","name":"to","nameLocation":"2690:2:4","nodeType":"VariableDeclaration","scope":831,"src":"2682:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":823,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":826,"mutability":"mutable","name":"amount","nameLocation":"2702:6:4","nodeType":"VariableDeclaration","scope":831,"src":"2694:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:42:4"},"returnParameters":{"id":830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":831,"src":"2728:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":828,"name":"bool","nodeType":"ElementaryTypeName","src":"2728:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2727:6:4"},"scope":832,"src":"2646:88:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":833,"src":"202:2534:4","usedErrors":[]}],"src":"106:2631:4"},"id":4},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[832],"IERC20Metadata":[857]},"id":858,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":834,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"110:23:5"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":835,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":858,"sourceUnit":833,"src":"135:23:5","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":837,"name":"IERC20","nameLocations":["305:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":832,"src":"305:6:5"},"id":838,"nodeType":"InheritanceSpecifier","src":"305:6:5"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":836,"nodeType":"StructuredDocumentation","src":"160:116:5","text":" @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"},"fullyImplemented":false,"id":857,"linearizedBaseContracts":[857,832],"name":"IERC20Metadata","nameLocation":"287:14:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":839,"nodeType":"StructuredDocumentation","src":"318:54:5","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":844,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"386:4:5","nodeType":"FunctionDefinition","parameters":{"id":840,"nodeType":"ParameterList","parameters":[],"src":"390:2:5"},"returnParameters":{"id":843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":844,"src":"416:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":841,"name":"string","nodeType":"ElementaryTypeName","src":"416:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"415:15:5"},"scope":857,"src":"377:54:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":845,"nodeType":"StructuredDocumentation","src":"437:56:5","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":850,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"507:6:5","nodeType":"FunctionDefinition","parameters":{"id":846,"nodeType":"ParameterList","parameters":[],"src":"513:2:5"},"returnParameters":{"id":849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":850,"src":"539:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":847,"name":"string","nodeType":"ElementaryTypeName","src":"539:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"538:15:5"},"scope":857,"src":"498:56:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":851,"nodeType":"StructuredDocumentation","src":"560:65:5","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":856,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"639:8:5","nodeType":"FunctionDefinition","parameters":{"id":852,"nodeType":"ParameterList","parameters":[],"src":"647:2:5"},"returnParameters":{"id":855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":856,"src":"673:5:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":853,"name":"uint8","nodeType":"ElementaryTypeName","src":"673:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"672:7:5"},"scope":857,"src":"630:50:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":858,"src":"277:405:5","usedErrors":[]}],"src":"110:573:5"},"id":5},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","exportedSymbols":{"Address":[2275],"Context":[2297],"ERC165":[2550],"ERC721":[1784],"IERC165":[2562],"IERC721":[1900],"IERC721Metadata":[1945],"IERC721Receiver":[1918],"Math":[3428],"SignedMath":[3533],"Strings":[2526]},"id":1785,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":859,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:6"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":860,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1785,"sourceUnit":1901,"src":"132:23:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","id":861,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1785,"sourceUnit":1919,"src":"156:31:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","id":862,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1785,"sourceUnit":1946,"src":"188:42:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":863,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1785,"sourceUnit":2276,"src":"231:33:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":864,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1785,"sourceUnit":2298,"src":"265:33:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","id":865,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1785,"sourceUnit":2527,"src":"299:33:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":866,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1785,"sourceUnit":2551,"src":"333:46:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":868,"name":"Context","nameLocations":["647:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":2297,"src":"647:7:6"},"id":869,"nodeType":"InheritanceSpecifier","src":"647:7:6"},{"baseName":{"id":870,"name":"ERC165","nameLocations":["656:6:6"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"656:6:6"},"id":871,"nodeType":"InheritanceSpecifier","src":"656:6:6"},{"baseName":{"id":872,"name":"IERC721","nameLocations":["664:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":1900,"src":"664:7:6"},"id":873,"nodeType":"InheritanceSpecifier","src":"664:7:6"},{"baseName":{"id":874,"name":"IERC721Metadata","nameLocations":["673:15:6"],"nodeType":"IdentifierPath","referencedDeclaration":1945,"src":"673:15:6"},"id":875,"nodeType":"InheritanceSpecifier","src":"673:15:6"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":867,"nodeType":"StructuredDocumentation","src":"381:246:6","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"id":1784,"linearizedBaseContracts":[1784,1945,1900,2550,2562,2297],"name":"ERC721","nameLocation":"637:6:6","nodeType":"ContractDefinition","nodes":[{"global":false,"id":878,"libraryName":{"id":876,"name":"Address","nameLocations":["701:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":2275,"src":"701:7:6"},"nodeType":"UsingForDirective","src":"695:26:6","typeName":{"id":877,"name":"address","nodeType":"ElementaryTypeName","src":"713:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":881,"libraryName":{"id":879,"name":"Strings","nameLocations":["732:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":2526,"src":"732:7:6"},"nodeType":"UsingForDirective","src":"726:26:6","typeName":{"id":880,"name":"uint256","nodeType":"ElementaryTypeName","src":"744:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":883,"mutability":"mutable","name":"_name","nameLocation":"791:5:6","nodeType":"VariableDeclaration","scope":1784,"src":"776:20:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":882,"name":"string","nodeType":"ElementaryTypeName","src":"776:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":885,"mutability":"mutable","name":"_symbol","nameLocation":"838:7:6","nodeType":"VariableDeclaration","scope":1784,"src":"823:22:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":884,"name":"string","nodeType":"ElementaryTypeName","src":"823:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":889,"mutability":"mutable","name":"_owners","nameLocation":"934:7:6","nodeType":"VariableDeclaration","scope":1784,"src":"898:43:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":888,"keyType":{"id":886,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"898:27:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":887,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":893,"mutability":"mutable","name":"_balances","nameLocation":"1028:9:6","nodeType":"VariableDeclaration","scope":1784,"src":"992:45:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":892,"keyType":{"id":890,"name":"address","nodeType":"ElementaryTypeName","src":"1000:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"992:27:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":891,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":897,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1129:15:6","nodeType":"VariableDeclaration","scope":1784,"src":"1093:51:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":896,"keyType":{"id":894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1093:27:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":895,"name":"address","nodeType":"ElementaryTypeName","src":"1112:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":903,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1252:18:6","nodeType":"VariableDeclaration","scope":1784,"src":"1199:71:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":902,"keyType":{"id":898,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1199:44:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":901,"keyType":{"id":899,"name":"address","nodeType":"ElementaryTypeName","src":"1226:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1218:24:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":900,"name":"bool","nodeType":"ElementaryTypeName","src":"1237:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":919,"nodeType":"Block","src":"1446:57:6","statements":[{"expression":{"id":913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":911,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"1456:5:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":912,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"1464:5:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1456:13:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":914,"nodeType":"ExpressionStatement","src":"1456:13:6"},{"expression":{"id":917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":915,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"1479:7:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":916,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":908,"src":"1489:7:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1479:17:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":918,"nodeType":"ExpressionStatement","src":"1479:17:6"}]},"documentation":{"id":904,"nodeType":"StructuredDocumentation","src":"1277:108:6","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":920,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":906,"mutability":"mutable","name":"name_","nameLocation":"1416:5:6","nodeType":"VariableDeclaration","scope":920,"src":"1402:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":905,"name":"string","nodeType":"ElementaryTypeName","src":"1402:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":908,"mutability":"mutable","name":"symbol_","nameLocation":"1437:7:6","nodeType":"VariableDeclaration","scope":920,"src":"1423:21:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":907,"name":"string","nodeType":"ElementaryTypeName","src":"1423:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1401:44:6"},"returnParameters":{"id":910,"nodeType":"ParameterList","parameters":[],"src":"1446:0:6"},"scope":1784,"src":"1390:113:6","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2549,2561],"body":{"id":950,"nodeType":"Block","src":"1678:192:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":931,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"1707:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":933,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"1727:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1900_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1900_$","typeString":"type(contract IERC721)"}],"id":932,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1722:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1722:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1900","typeString":"type(contract IERC721)"}},"id":935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1736:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"1722:25:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1707:40:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":937,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"1763:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":939,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1945,"src":"1783:15:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1945_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1945_$","typeString":"type(contract IERC721Metadata)"}],"id":938,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1778:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1778:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1945","typeString":"type(contract IERC721Metadata)"}},"id":941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1800:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"1778:33:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1763:48:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:104:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":946,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"1851:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":944,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1827:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$1784_$","typeString":"type(contract super ERC721)"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1833:17:6","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2549,"src":"1827:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1827:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:156:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":930,"id":949,"nodeType":"Return","src":"1688:175:6"}]},"documentation":{"id":921,"nodeType":"StructuredDocumentation","src":"1509:56:6","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":951,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1579:17:6","nodeType":"FunctionDefinition","overrides":{"id":927,"nodeType":"OverrideSpecifier","overrides":[{"id":925,"name":"ERC165","nameLocations":["1646:6:6"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"1646:6:6"},{"id":926,"name":"IERC165","nameLocations":["1654:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":2562,"src":"1654:7:6"}],"src":"1637:25:6"},"parameters":{"id":924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":923,"mutability":"mutable","name":"interfaceId","nameLocation":"1604:11:6","nodeType":"VariableDeclaration","scope":951,"src":"1597:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":922,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1597:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1596:20:6"},"returnParameters":{"id":930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":951,"src":"1672:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":928,"name":"bool","nodeType":"ElementaryTypeName","src":"1672:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1671:6:6"},"scope":1784,"src":"1570:300:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1825],"body":{"id":974,"nodeType":"Block","src":"2010:123:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":961,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"2028:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2045: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":963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2037:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":962,"name":"address","nodeType":"ElementaryTypeName","src":"2037:7:6","typeDescriptions":{}}},"id":965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2037:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2028:19:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2049:43:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":960,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2020:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2020:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":969,"nodeType":"ExpressionStatement","src":"2020:73:6"},{"expression":{"baseExpression":{"id":970,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"2110:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":972,"indexExpression":{"id":971,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"2120:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2110:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":959,"id":973,"nodeType":"Return","src":"2103:23:6"}]},"documentation":{"id":952,"nodeType":"StructuredDocumentation","src":"1876:48:6","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":975,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1938:9:6","nodeType":"FunctionDefinition","overrides":{"id":956,"nodeType":"OverrideSpecifier","overrides":[],"src":"1983:8:6"},"parameters":{"id":955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":954,"mutability":"mutable","name":"owner","nameLocation":"1956:5:6","nodeType":"VariableDeclaration","scope":975,"src":"1948:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":953,"name":"address","nodeType":"ElementaryTypeName","src":"1948:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1947:15:6"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":975,"src":"2001:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"2001:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2000:9:6"},"scope":1784,"src":"1929:204:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1833],"body":{"id":1002,"nodeType":"Block","src":"2271:138:6","statements":[{"assignments":[985],"declarations":[{"constant":false,"id":985,"mutability":"mutable","name":"owner","nameLocation":"2289:5:6","nodeType":"VariableDeclaration","scope":1002,"src":"2281:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":984,"name":"address","nodeType":"ElementaryTypeName","src":"2281:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":989,"initialValue":{"arguments":[{"id":987,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":978,"src":"2306:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":986,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1285,"src":"2297:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2297:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2281:33:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":991,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":985,"src":"2332:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2349: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":993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2341:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":992,"name":"address","nodeType":"ElementaryTypeName","src":"2341:7:6","typeDescriptions":{}}},"id":995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2341:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2332:19:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2353:26:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":990,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2324:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2324:56:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":999,"nodeType":"ExpressionStatement","src":"2324:56:6"},{"expression":{"id":1000,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":985,"src":"2397:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":983,"id":1001,"nodeType":"Return","src":"2390:12:6"}]},"documentation":{"id":976,"nodeType":"StructuredDocumentation","src":"2139:46:6","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":1003,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2199:7:6","nodeType":"FunctionDefinition","overrides":{"id":980,"nodeType":"OverrideSpecifier","overrides":[],"src":"2244:8:6"},"parameters":{"id":979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":978,"mutability":"mutable","name":"tokenId","nameLocation":"2215:7:6","nodeType":"VariableDeclaration","scope":1003,"src":"2207:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":977,"name":"uint256","nodeType":"ElementaryTypeName","src":"2207:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2206:17:6"},"returnParameters":{"id":983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":982,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1003,"src":"2262:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":981,"name":"address","nodeType":"ElementaryTypeName","src":"2262:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2261:9:6"},"scope":1784,"src":"2190:219:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1930],"body":{"id":1012,"nodeType":"Block","src":"2540:29:6","statements":[{"expression":{"id":1010,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"2557:5:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1009,"id":1011,"nodeType":"Return","src":"2550:12:6"}]},"documentation":{"id":1004,"nodeType":"StructuredDocumentation","src":"2415:51:6","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":1013,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2480:4:6","nodeType":"FunctionDefinition","overrides":{"id":1006,"nodeType":"OverrideSpecifier","overrides":[],"src":"2507:8:6"},"parameters":{"id":1005,"nodeType":"ParameterList","parameters":[],"src":"2484:2:6"},"returnParameters":{"id":1009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1008,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1013,"src":"2525:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1007,"name":"string","nodeType":"ElementaryTypeName","src":"2525:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2524:15:6"},"scope":1784,"src":"2471:98:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1936],"body":{"id":1022,"nodeType":"Block","src":"2704:31:6","statements":[{"expression":{"id":1020,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"2721:7:6","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1019,"id":1021,"nodeType":"Return","src":"2714:14:6"}]},"documentation":{"id":1014,"nodeType":"StructuredDocumentation","src":"2575:53:6","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":1023,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2642:6:6","nodeType":"FunctionDefinition","overrides":{"id":1016,"nodeType":"OverrideSpecifier","overrides":[],"src":"2671:8:6"},"parameters":{"id":1015,"nodeType":"ParameterList","parameters":[],"src":"2648:2:6"},"returnParameters":{"id":1019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1018,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1023,"src":"2689:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1017,"name":"string","nodeType":"ElementaryTypeName","src":"2689:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2688:15:6"},"scope":1784,"src":"2633:102:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1944],"body":{"id":1061,"nodeType":"Block","src":"2889:188:6","statements":[{"expression":{"arguments":[{"id":1033,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"2914:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1032,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"2899:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2899:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1035,"nodeType":"ExpressionStatement","src":"2899:23:6"},{"assignments":[1037],"declarations":[{"constant":false,"id":1037,"mutability":"mutable","name":"baseURI","nameLocation":"2947:7:6","nodeType":"VariableDeclaration","scope":1061,"src":"2933:21:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1036,"name":"string","nodeType":"ElementaryTypeName","src":"2933:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1040,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1038,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1071,"src":"2957:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2957:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2933:34:6"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1043,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"2990:7:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2984:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1041,"name":"bytes","nodeType":"ElementaryTypeName","src":"2984:5:6","typeDescriptions":{}}},"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2984:14:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2999:6:6","memberName":"length","nodeType":"MemberAccess","src":"2984:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3008:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2984:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3068:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2984:86:6","trueExpression":{"arguments":[{"arguments":[{"id":1052,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"3036:7:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1053,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"3045:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3053:8:6","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":2356,"src":"3045:16:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3045:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":1050,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3019:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3023:12:6","memberName":"encodePacked","nodeType":"MemberAccess","src":"3019:16:6","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3019:45:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3012:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1048,"name":"string","nodeType":"ElementaryTypeName","src":"3012:6:6","typeDescriptions":{}}},"id":1057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3012:53:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1031,"id":1060,"nodeType":"Return","src":"2977:93:6"}]},"documentation":{"id":1024,"nodeType":"StructuredDocumentation","src":"2741:55:6","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":1062,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2810:8:6","nodeType":"FunctionDefinition","overrides":{"id":1028,"nodeType":"OverrideSpecifier","overrides":[],"src":"2856:8:6"},"parameters":{"id":1027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1026,"mutability":"mutable","name":"tokenId","nameLocation":"2827:7:6","nodeType":"VariableDeclaration","scope":1062,"src":"2819:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1025,"name":"uint256","nodeType":"ElementaryTypeName","src":"2819:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2818:17:6"},"returnParameters":{"id":1031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1062,"src":"2874:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1029,"name":"string","nodeType":"ElementaryTypeName","src":"2874:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2873:15:6"},"scope":1784,"src":"2801:276:6","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1070,"nodeType":"Block","src":"3385:26:6","statements":[{"expression":{"hexValue":"","id":1068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3402:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":1067,"id":1069,"nodeType":"Return","src":"3395:9:6"}]},"documentation":{"id":1063,"nodeType":"StructuredDocumentation","src":"3083:231:6","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":1071,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3328:8:6","nodeType":"FunctionDefinition","parameters":{"id":1064,"nodeType":"ParameterList","parameters":[],"src":"3336:2:6"},"returnParameters":{"id":1067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1066,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1071,"src":"3370:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1065,"name":"string","nodeType":"ElementaryTypeName","src":"3370:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3369:15:6"},"scope":1784,"src":"3319:92:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1873],"body":{"id":1113,"nodeType":"Block","src":"3538:336:6","statements":[{"assignments":[1081],"declarations":[{"constant":false,"id":1081,"mutability":"mutable","name":"owner","nameLocation":"3556:5:6","nodeType":"VariableDeclaration","scope":1113,"src":"3548:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1080,"name":"address","nodeType":"ElementaryTypeName","src":"3548:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1086,"initialValue":{"arguments":[{"id":1084,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"3579:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1082,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"3564:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1784_$","typeString":"type(contract ERC721)"}},"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3571:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1003,"src":"3564:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3564:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3548:39:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1088,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1074,"src":"3605:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1089,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1081,"src":"3611:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3605:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":1091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3618:35:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":1087,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3597:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3597:57:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1093,"nodeType":"ExpressionStatement","src":"3597:57:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1095,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"3686:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3686:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1097,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1081,"src":"3702:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3686:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1100,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1081,"src":"3728:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1101,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"3735:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3735:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1099,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1167,"src":"3711:16:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":1103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3711:37:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3686:62:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","id":1105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3762:63:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83","typeString":"literal_string \"ERC721: approve caller is not token owner or approved for all\""},"value":"ERC721: approve caller is not token owner or approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83","typeString":"literal_string \"ERC721: approve caller is not token owner or approved for all\""}],"id":1094,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3665:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3665:170:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1107,"nodeType":"ExpressionStatement","src":"3665:170:6"},{"expression":{"arguments":[{"id":1109,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1074,"src":"3855:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1110,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"3859:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1108,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1634,"src":"3846:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3846:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1112,"nodeType":"ExpressionStatement","src":"3846:21:6"}]},"documentation":{"id":1072,"nodeType":"StructuredDocumentation","src":"3417:46:6","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":1114,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3477:7:6","nodeType":"FunctionDefinition","overrides":{"id":1078,"nodeType":"OverrideSpecifier","overrides":[],"src":"3529:8:6"},"parameters":{"id":1077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1074,"mutability":"mutable","name":"to","nameLocation":"3493:2:6","nodeType":"VariableDeclaration","scope":1114,"src":"3485:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1073,"name":"address","nodeType":"ElementaryTypeName","src":"3485:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1076,"mutability":"mutable","name":"tokenId","nameLocation":"3505:7:6","nodeType":"VariableDeclaration","scope":1114,"src":"3497:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1075,"name":"uint256","nodeType":"ElementaryTypeName","src":"3497:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3484:29:6"},"returnParameters":{"id":1079,"nodeType":"ParameterList","parameters":[],"src":"3538:0:6"},"scope":1784,"src":"3468:406:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1889],"body":{"id":1131,"nodeType":"Block","src":"4020:82:6","statements":[{"expression":{"arguments":[{"id":1124,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"4045:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1123,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"4030:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4030:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1126,"nodeType":"ExpressionStatement","src":"4030:23:6"},{"expression":{"baseExpression":{"id":1127,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"4071:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1129,"indexExpression":{"id":1128,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"4087:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4071:24:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1122,"id":1130,"nodeType":"Return","src":"4064:31:6"}]},"documentation":{"id":1115,"nodeType":"StructuredDocumentation","src":"3880:50:6","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":1132,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3944:11:6","nodeType":"FunctionDefinition","overrides":{"id":1119,"nodeType":"OverrideSpecifier","overrides":[],"src":"3993:8:6"},"parameters":{"id":1118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1117,"mutability":"mutable","name":"tokenId","nameLocation":"3964:7:6","nodeType":"VariableDeclaration","scope":1132,"src":"3956:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1116,"name":"uint256","nodeType":"ElementaryTypeName","src":"3956:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3955:17:6"},"returnParameters":{"id":1122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1132,"src":"4011:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1120,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4010:9:6"},"scope":1784,"src":"3935:167:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1881],"body":{"id":1148,"nodeType":"Block","src":"4253:69:6","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1142,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"4282:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4282:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1144,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"4296:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1145,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"4306:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1141,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"4263:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4263:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1147,"nodeType":"ExpressionStatement","src":"4263:52:6"}]},"documentation":{"id":1133,"nodeType":"StructuredDocumentation","src":"4108:56:6","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":1149,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4178:17:6","nodeType":"FunctionDefinition","overrides":{"id":1139,"nodeType":"OverrideSpecifier","overrides":[],"src":"4244:8:6"},"parameters":{"id":1138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1135,"mutability":"mutable","name":"operator","nameLocation":"4204:8:6","nodeType":"VariableDeclaration","scope":1149,"src":"4196:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1134,"name":"address","nodeType":"ElementaryTypeName","src":"4196:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1137,"mutability":"mutable","name":"approved","nameLocation":"4219:8:6","nodeType":"VariableDeclaration","scope":1149,"src":"4214:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1136,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4195:33:6"},"returnParameters":{"id":1140,"nodeType":"ParameterList","parameters":[],"src":"4253:0:6"},"scope":1784,"src":"4169:153:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1899],"body":{"id":1166,"nodeType":"Block","src":"4491:59:6","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":1160,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"4508:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1162,"indexExpression":{"id":1161,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1152,"src":"4527:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:25:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1164,"indexExpression":{"id":1163,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1154,"src":"4534:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:35:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1159,"id":1165,"nodeType":"Return","src":"4501:42:6"}]},"documentation":{"id":1150,"nodeType":"StructuredDocumentation","src":"4328:55:6","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":1167,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4397:16:6","nodeType":"FunctionDefinition","overrides":{"id":1156,"nodeType":"OverrideSpecifier","overrides":[],"src":"4467:8:6"},"parameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1152,"mutability":"mutable","name":"owner","nameLocation":"4422:5:6","nodeType":"VariableDeclaration","scope":1167,"src":"4414:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1151,"name":"address","nodeType":"ElementaryTypeName","src":"4414:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1154,"mutability":"mutable","name":"operator","nameLocation":"4437:8:6","nodeType":"VariableDeclaration","scope":1167,"src":"4429:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1153,"name":"address","nodeType":"ElementaryTypeName","src":"4429:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4413:33:6"},"returnParameters":{"id":1159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1158,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1167,"src":"4485:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1157,"name":"bool","nodeType":"ElementaryTypeName","src":"4485:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4484:6:6"},"scope":1784,"src":"4388:162:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1865],"body":{"id":1193,"nodeType":"Block","src":"4701:207:6","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1180,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"4790:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4790:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1182,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1174,"src":"4804:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1179,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"4771:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":1183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:41:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":1184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4814:47:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""},"value":"ERC721: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""}],"id":1178,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4763:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4763:99:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1186,"nodeType":"ExpressionStatement","src":"4763:99:6"},{"expression":{"arguments":[{"id":1188,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"4883:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1189,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1172,"src":"4889:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1190,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1174,"src":"4893:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1187,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1610,"src":"4873:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1192,"nodeType":"ExpressionStatement","src":"4873:28:6"}]},"documentation":{"id":1168,"nodeType":"StructuredDocumentation","src":"4556:51:6","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":1194,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4621:12:6","nodeType":"FunctionDefinition","overrides":{"id":1176,"nodeType":"OverrideSpecifier","overrides":[],"src":"4692:8:6"},"parameters":{"id":1175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1170,"mutability":"mutable","name":"from","nameLocation":"4642:4:6","nodeType":"VariableDeclaration","scope":1194,"src":"4634:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1169,"name":"address","nodeType":"ElementaryTypeName","src":"4634:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1172,"mutability":"mutable","name":"to","nameLocation":"4656:2:6","nodeType":"VariableDeclaration","scope":1194,"src":"4648:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1171,"name":"address","nodeType":"ElementaryTypeName","src":"4648:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1174,"mutability":"mutable","name":"tokenId","nameLocation":"4668:7:6","nodeType":"VariableDeclaration","scope":1194,"src":"4660:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1173,"name":"uint256","nodeType":"ElementaryTypeName","src":"4660:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4633:43:6"},"returnParameters":{"id":1177,"nodeType":"ParameterList","parameters":[],"src":"4701:0:6"},"scope":1784,"src":"4612:296:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1855],"body":{"id":1212,"nodeType":"Block","src":"5067:56:6","statements":[{"expression":{"arguments":[{"id":1206,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1197,"src":"5094:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1207,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1199,"src":"5100:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1208,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"5104:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":1209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5113:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":1205,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[1213,1243],"referencedDeclaration":1243,"src":"5077:16:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5077:39:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1211,"nodeType":"ExpressionStatement","src":"5077:39:6"}]},"documentation":{"id":1195,"nodeType":"StructuredDocumentation","src":"4914:55:6","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":1213,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4983:16:6","nodeType":"FunctionDefinition","overrides":{"id":1203,"nodeType":"OverrideSpecifier","overrides":[],"src":"5058:8:6"},"parameters":{"id":1202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1197,"mutability":"mutable","name":"from","nameLocation":"5008:4:6","nodeType":"VariableDeclaration","scope":1213,"src":"5000:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1196,"name":"address","nodeType":"ElementaryTypeName","src":"5000:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1199,"mutability":"mutable","name":"to","nameLocation":"5022:2:6","nodeType":"VariableDeclaration","scope":1213,"src":"5014:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1198,"name":"address","nodeType":"ElementaryTypeName","src":"5014:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1201,"mutability":"mutable","name":"tokenId","nameLocation":"5034:7:6","nodeType":"VariableDeclaration","scope":1213,"src":"5026:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1200,"name":"uint256","nodeType":"ElementaryTypeName","src":"5026:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4999:43:6"},"returnParameters":{"id":1204,"nodeType":"ParameterList","parameters":[],"src":"5067:0:6"},"scope":1784,"src":"4974:149:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1845],"body":{"id":1242,"nodeType":"Block","src":"5301:164:6","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1228,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"5338:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5338:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1230,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1220,"src":"5352:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1227,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"5319:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5319:41:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":1232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5362:47:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""},"value":"ERC721: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""}],"id":1226,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5311:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5311:99:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1234,"nodeType":"ExpressionStatement","src":"5311:99:6"},{"expression":{"arguments":[{"id":1236,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1216,"src":"5434:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1237,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1218,"src":"5440:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1238,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1220,"src":"5444:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1239,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"5453:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1235,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"5420:13:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":1240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5420:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1241,"nodeType":"ExpressionStatement","src":"5420:38:6"}]},"documentation":{"id":1214,"nodeType":"StructuredDocumentation","src":"5129:55:6","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":1243,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5198:16:6","nodeType":"FunctionDefinition","overrides":{"id":1224,"nodeType":"OverrideSpecifier","overrides":[],"src":"5292:8:6"},"parameters":{"id":1223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1216,"mutability":"mutable","name":"from","nameLocation":"5223:4:6","nodeType":"VariableDeclaration","scope":1243,"src":"5215:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1215,"name":"address","nodeType":"ElementaryTypeName","src":"5215:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1218,"mutability":"mutable","name":"to","nameLocation":"5237:2:6","nodeType":"VariableDeclaration","scope":1243,"src":"5229:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1217,"name":"address","nodeType":"ElementaryTypeName","src":"5229:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1220,"mutability":"mutable","name":"tokenId","nameLocation":"5249:7:6","nodeType":"VariableDeclaration","scope":1243,"src":"5241:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1219,"name":"uint256","nodeType":"ElementaryTypeName","src":"5241:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1222,"mutability":"mutable","name":"data","nameLocation":"5271:4:6","nodeType":"VariableDeclaration","scope":1243,"src":"5258:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1221,"name":"bytes","nodeType":"ElementaryTypeName","src":"5258:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5214:62:6"},"returnParameters":{"id":1225,"nodeType":"ParameterList","parameters":[],"src":"5301:0:6"},"scope":1784,"src":"5189:276:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1271,"nodeType":"Block","src":"6428:165:6","statements":[{"expression":{"arguments":[{"id":1256,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"6448:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1257,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1248,"src":"6454:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1258,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1250,"src":"6458:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1255,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1610,"src":"6438:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6438:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1260,"nodeType":"ExpressionStatement","src":"6438:28:6"},{"expression":{"arguments":[{"arguments":[{"id":1263,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"6507:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1264,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1248,"src":"6513:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1265,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1250,"src":"6517:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1266,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"6526:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1262,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1742,"src":"6484:22:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6484:47:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":1268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6533:52:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":1261,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6476:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6476:110:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1270,"nodeType":"ExpressionStatement","src":"6476:110:6"}]},"documentation":{"id":1244,"nodeType":"StructuredDocumentation","src":"5471:850:6","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":1272,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"6335:13:6","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1246,"mutability":"mutable","name":"from","nameLocation":"6357:4:6","nodeType":"VariableDeclaration","scope":1272,"src":"6349:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1245,"name":"address","nodeType":"ElementaryTypeName","src":"6349:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1248,"mutability":"mutable","name":"to","nameLocation":"6371:2:6","nodeType":"VariableDeclaration","scope":1272,"src":"6363:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1247,"name":"address","nodeType":"ElementaryTypeName","src":"6363:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1250,"mutability":"mutable","name":"tokenId","nameLocation":"6383:7:6","nodeType":"VariableDeclaration","scope":1272,"src":"6375:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1249,"name":"uint256","nodeType":"ElementaryTypeName","src":"6375:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1252,"mutability":"mutable","name":"data","nameLocation":"6405:4:6","nodeType":"VariableDeclaration","scope":1272,"src":"6392:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1251,"name":"bytes","nodeType":"ElementaryTypeName","src":"6392:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6348:62:6"},"returnParameters":{"id":1254,"nodeType":"ParameterList","parameters":[],"src":"6428:0:6"},"scope":1784,"src":"6326:267:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1284,"nodeType":"Block","src":"6777:40:6","statements":[{"expression":{"baseExpression":{"id":1280,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":889,"src":"6794:7:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1282,"indexExpression":{"id":1281,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"6802:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6794:16:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1279,"id":1283,"nodeType":"Return","src":"6787:23:6"}]},"documentation":{"id":1273,"nodeType":"StructuredDocumentation","src":"6599:98:6","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist"},"id":1285,"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"6711:8:6","nodeType":"FunctionDefinition","parameters":{"id":1276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1275,"mutability":"mutable","name":"tokenId","nameLocation":"6728:7:6","nodeType":"VariableDeclaration","scope":1285,"src":"6720:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1274,"name":"uint256","nodeType":"ElementaryTypeName","src":"6720:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6719:17:6"},"returnParameters":{"id":1279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1278,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1285,"src":"6768:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1277,"name":"address","nodeType":"ElementaryTypeName","src":"6768:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6767:9:6"},"scope":1784,"src":"6702:115:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1302,"nodeType":"Block","src":"7191:55:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1294,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1288,"src":"7217:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1293,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1285,"src":"7208:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7208:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7237: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":1297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7229:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1296,"name":"address","nodeType":"ElementaryTypeName","src":"7229:7:6","typeDescriptions":{}}},"id":1299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7208:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1292,"id":1301,"nodeType":"Return","src":"7201:38:6"}]},"documentation":{"id":1286,"nodeType":"StructuredDocumentation","src":"6823:292:6","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":1303,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7129:7:6","nodeType":"FunctionDefinition","parameters":{"id":1289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1288,"mutability":"mutable","name":"tokenId","nameLocation":"7145:7:6","nodeType":"VariableDeclaration","scope":1303,"src":"7137:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1287,"name":"uint256","nodeType":"ElementaryTypeName","src":"7137:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7136:17:6"},"returnParameters":{"id":1292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1303,"src":"7185:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1290,"name":"bool","nodeType":"ElementaryTypeName","src":"7185:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7184:6:6"},"scope":1784,"src":"7120:126:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1336,"nodeType":"Block","src":"7503:162:6","statements":[{"assignments":[1314],"declarations":[{"constant":false,"id":1314,"mutability":"mutable","name":"owner","nameLocation":"7521:5:6","nodeType":"VariableDeclaration","scope":1336,"src":"7513:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1313,"name":"address","nodeType":"ElementaryTypeName","src":"7513:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1319,"initialValue":{"arguments":[{"id":1317,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"7544:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1315,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"7529:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1784_$","typeString":"type(contract ERC721)"}},"id":1316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7536:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1003,"src":"7529:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7529:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7513:39:6"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1320,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1306,"src":"7570:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1321,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"7581:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7570:16:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1324,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1314,"src":"7607:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1325,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1306,"src":"7614:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1323,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1167,"src":"7590:16:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":1326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7590:32:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7570:52:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1329,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"7638:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1328,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"7626:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7626:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1331,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1306,"src":"7650:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7626:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7570:87:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1334,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7569:89:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1312,"id":1335,"nodeType":"Return","src":"7562:96:6"}]},"documentation":{"id":1304,"nodeType":"StructuredDocumentation","src":"7252:147:6","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":1337,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"7413:18:6","nodeType":"FunctionDefinition","parameters":{"id":1309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1306,"mutability":"mutable","name":"spender","nameLocation":"7440:7:6","nodeType":"VariableDeclaration","scope":1337,"src":"7432:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1305,"name":"address","nodeType":"ElementaryTypeName","src":"7432:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1308,"mutability":"mutable","name":"tokenId","nameLocation":"7457:7:6","nodeType":"VariableDeclaration","scope":1337,"src":"7449:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1307,"name":"uint256","nodeType":"ElementaryTypeName","src":"7449:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7431:34:6"},"returnParameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1337,"src":"7497:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1310,"name":"bool","nodeType":"ElementaryTypeName","src":"7497:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7496:6:6"},"scope":1784,"src":"7404:261:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1351,"nodeType":"Block","src":"8060:43:6","statements":[{"expression":{"arguments":[{"id":1346,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1340,"src":"8080:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1347,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1342,"src":"8084:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":1348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8093:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":1345,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[1352,1381],"referencedDeclaration":1381,"src":"8070:9:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8070:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1350,"nodeType":"ExpressionStatement","src":"8070:26:6"}]},"documentation":{"id":1338,"nodeType":"StructuredDocumentation","src":"7671:319:6","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":1352,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8004:9:6","nodeType":"FunctionDefinition","parameters":{"id":1343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1340,"mutability":"mutable","name":"to","nameLocation":"8022:2:6","nodeType":"VariableDeclaration","scope":1352,"src":"8014:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1339,"name":"address","nodeType":"ElementaryTypeName","src":"8014:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1342,"mutability":"mutable","name":"tokenId","nameLocation":"8034:7:6","nodeType":"VariableDeclaration","scope":1352,"src":"8026:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1341,"name":"uint256","nodeType":"ElementaryTypeName","src":"8026:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8013:29:6"},"returnParameters":{"id":1344,"nodeType":"ParameterList","parameters":[],"src":"8060:0:6"},"scope":1784,"src":"7995:108:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1380,"nodeType":"Block","src":"8408:195:6","statements":[{"expression":{"arguments":[{"id":1363,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1355,"src":"8424:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1364,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"8428:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1362,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"8418:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8418:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1366,"nodeType":"ExpressionStatement","src":"8418:18:6"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8498: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":1370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8490:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1369,"name":"address","nodeType":"ElementaryTypeName","src":"8490:7:6","typeDescriptions":{}}},"id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8490:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1373,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1355,"src":"8502:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1374,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"8506:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1375,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"8515:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1368,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1742,"src":"8467:22:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":1376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8467:53:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":1377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8534:52:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":1367,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8446:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8446:150:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1379,"nodeType":"ExpressionStatement","src":"8446:150:6"}]},"documentation":{"id":1353,"nodeType":"StructuredDocumentation","src":"8109:210:6","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":1381,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8333:9:6","nodeType":"FunctionDefinition","parameters":{"id":1360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1355,"mutability":"mutable","name":"to","nameLocation":"8351:2:6","nodeType":"VariableDeclaration","scope":1381,"src":"8343:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1354,"name":"address","nodeType":"ElementaryTypeName","src":"8343:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1357,"mutability":"mutable","name":"tokenId","nameLocation":"8363:7:6","nodeType":"VariableDeclaration","scope":1381,"src":"8355:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1356,"name":"uint256","nodeType":"ElementaryTypeName","src":"8355:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1359,"mutability":"mutable","name":"data","nameLocation":"8385:4:6","nodeType":"VariableDeclaration","scope":1381,"src":"8372:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1358,"name":"bytes","nodeType":"ElementaryTypeName","src":"8372:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8342:48:6"},"returnParameters":{"id":1361,"nodeType":"ParameterList","parameters":[],"src":"8408:0:6"},"scope":1784,"src":"8324:279:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1457,"nodeType":"Block","src":"8986:859:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1390,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"9004:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9018: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":1392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9010:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1391,"name":"address","nodeType":"ElementaryTypeName","src":"9010:7:6","typeDescriptions":{}}},"id":1394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9010:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9004:16:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9022:34:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":1389,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8996:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8996:61:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1398,"nodeType":"ExpressionStatement","src":"8996:61:6"},{"expression":{"arguments":[{"id":1403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9075:17:6","subExpression":{"arguments":[{"id":1401,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"9084:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1400,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"9076:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9076:16:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":1404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9094:30:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":1399,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9067:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9067:58:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1406,"nodeType":"ExpressionStatement","src":"9067:58:6"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165: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":1409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9157:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1408,"name":"address","nodeType":"ElementaryTypeName","src":"9157:7:6","typeDescriptions":{}}},"id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9157:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1412,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"9169:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1413,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"9173:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":1414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9182:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1407,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"9136:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9136:48:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1416,"nodeType":"ExpressionStatement","src":"9136:48:6"},{"expression":{"arguments":[{"id":1421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9279:17:6","subExpression":{"arguments":[{"id":1419,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"9288:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1418,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"9280:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9280:16:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":1422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9298:30:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":1417,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9271:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9271:58:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1424,"nodeType":"ExpressionStatement","src":"9271:58:6"},{"id":1431,"nodeType":"UncheckedBlock","src":"9340:360:6","statements":[{"expression":{"id":1429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1425,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"9671:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1427,"indexExpression":{"id":1426,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"9681:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9671:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9688:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9671:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1430,"nodeType":"ExpressionStatement","src":"9671:18:6"}]},{"expression":{"id":1436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1432,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":889,"src":"9710:7:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1434,"indexExpression":{"id":1433,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"9718:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9710:16:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1435,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"9729:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9710:21:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1437,"nodeType":"ExpressionStatement","src":"9710:21:6"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9764: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":1440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9756:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1439,"name":"address","nodeType":"ElementaryTypeName","src":"9756:7:6","typeDescriptions":{}}},"id":1442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9756:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1443,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"9768:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1444,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"9772:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1438,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1799,"src":"9747:8:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9747:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1446,"nodeType":"EmitStatement","src":"9742:38:6"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9819: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":1449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9811:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1448,"name":"address","nodeType":"ElementaryTypeName","src":"9811:7:6","typeDescriptions":{}}},"id":1451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9811:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1452,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"9823:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1453,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"9827:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":1454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9836:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1447,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1768,"src":"9791:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":1455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9791:47:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1456,"nodeType":"ExpressionStatement","src":"9791:47:6"}]},"documentation":{"id":1382,"nodeType":"StructuredDocumentation","src":"8609:311:6","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":1458,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8934:5:6","nodeType":"FunctionDefinition","parameters":{"id":1387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1384,"mutability":"mutable","name":"to","nameLocation":"8948:2:6","nodeType":"VariableDeclaration","scope":1458,"src":"8940:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1383,"name":"address","nodeType":"ElementaryTypeName","src":"8940:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1386,"mutability":"mutable","name":"tokenId","nameLocation":"8960:7:6","nodeType":"VariableDeclaration","scope":1458,"src":"8952:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1385,"name":"uint256","nodeType":"ElementaryTypeName","src":"8952:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8939:29:6"},"returnParameters":{"id":1388,"nodeType":"ParameterList","parameters":[],"src":"8986:0:6"},"scope":1784,"src":"8925:920:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1524,"nodeType":"Block","src":"10220:713:6","statements":[{"assignments":[1465],"declarations":[{"constant":false,"id":1465,"mutability":"mutable","name":"owner","nameLocation":"10238:5:6","nodeType":"VariableDeclaration","scope":1524,"src":"10230:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1464,"name":"address","nodeType":"ElementaryTypeName","src":"10230:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1470,"initialValue":{"arguments":[{"id":1468,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"10261:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1466,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"10246:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1784_$","typeString":"type(contract ERC721)"}},"id":1467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10253:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1003,"src":"10246:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10246:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10230:39:6"},{"expression":{"arguments":[{"id":1472,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1465,"src":"10301:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10316: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":1474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10308:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1473,"name":"address","nodeType":"ElementaryTypeName","src":"10308:7:6","typeDescriptions":{}}},"id":1476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10308:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1477,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"10320:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":1478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10329:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1471,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"10280:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10280:51:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1480,"nodeType":"ExpressionStatement","src":"10280:51:6"},{"expression":{"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1481,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1465,"src":"10433:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1484,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"10456:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1482,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"10441:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1784_$","typeString":"type(contract ERC721)"}},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10448:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1003,"src":"10441:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10441:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10433:31:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1487,"nodeType":"ExpressionStatement","src":"10433:31:6"},{"expression":{"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10502:31:6","subExpression":{"baseExpression":{"id":1488,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"10509:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1490,"indexExpression":{"id":1489,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"10525:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10509:24:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1492,"nodeType":"ExpressionStatement","src":"10502:31:6"},{"id":1499,"nodeType":"UncheckedBlock","src":"10544:237:6","statements":[{"expression":{"id":1497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1493,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"10749:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1495,"indexExpression":{"id":1494,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1465,"src":"10759:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10749:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":1496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10769:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10749:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1498,"nodeType":"ExpressionStatement","src":"10749:21:6"}]},{"expression":{"id":1503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10790:23:6","subExpression":{"baseExpression":{"id":1500,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":889,"src":"10797:7:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1502,"indexExpression":{"id":1501,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"10805:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10797:16:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1504,"nodeType":"ExpressionStatement","src":"10790:23:6"},{"eventCall":{"arguments":[{"id":1506,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1465,"src":"10838:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10853: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":1508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10845:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1507,"name":"address","nodeType":"ElementaryTypeName","src":"10845:7:6","typeDescriptions":{}}},"id":1510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10845:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1511,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"10857:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1505,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1799,"src":"10829:8:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10829:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1513,"nodeType":"EmitStatement","src":"10824:41:6"},{"expression":{"arguments":[{"id":1515,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1465,"src":"10896:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10911: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":1517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10903:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1516,"name":"address","nodeType":"ElementaryTypeName","src":"10903:7:6","typeDescriptions":{}}},"id":1519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10903:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1520,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"10915:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":1521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10924:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1514,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1768,"src":"10876:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":1522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10876:50:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1523,"nodeType":"ExpressionStatement","src":"10876:50:6"}]},"documentation":{"id":1459,"nodeType":"StructuredDocumentation","src":"9851:315:6","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":1525,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10180:5:6","nodeType":"FunctionDefinition","parameters":{"id":1462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1461,"mutability":"mutable","name":"tokenId","nameLocation":"10194:7:6","nodeType":"VariableDeclaration","scope":1525,"src":"10186:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1460,"name":"uint256","nodeType":"ElementaryTypeName","src":"10186:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10185:17:6"},"returnParameters":{"id":1463,"nodeType":"ParameterList","parameters":[],"src":"10220:0:6"},"scope":1784,"src":"10171:762:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1609,"nodeType":"Block","src":"11336:1124:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1538,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"11369:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1536,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"11354:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1784_$","typeString":"type(contract ERC721)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11361:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1003,"src":"11354:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11354:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1540,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"11381:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11354:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":1542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11387:39:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":1535,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11346:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11346:81:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1544,"nodeType":"ExpressionStatement","src":"11346:81:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1546,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"11445:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11459: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":1548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11451:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"11451:7:6","typeDescriptions":{}}},"id":1550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11451:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11445:16:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":1552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11463:38:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":1545,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11437:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11437:65:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1554,"nodeType":"ExpressionStatement","src":"11437:65:6"},{"expression":{"arguments":[{"id":1556,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"11534:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1557,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"11540:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1558,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"11544:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":1559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11553:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1555,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1755,"src":"11513:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11513:42:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1561,"nodeType":"ExpressionStatement","src":"11513:42:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1565,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"11670:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1563,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"11655:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1784_$","typeString":"type(contract ERC721)"}},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11662:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1003,"src":"11655:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11655:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1567,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"11682:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11655:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":1569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11688:39:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":1562,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11647:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11647:81:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1571,"nodeType":"ExpressionStatement","src":"11647:81:6"},{"expression":{"id":1575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"11790:31:6","subExpression":{"baseExpression":{"id":1572,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"11797:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1574,"indexExpression":{"id":1573,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"11813:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11797:24:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1576,"nodeType":"ExpressionStatement","src":"11790:31:6"},{"id":1589,"nodeType":"UncheckedBlock","src":"11832:496:6","statements":[{"expression":{"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1577,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"12265:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1579,"indexExpression":{"id":1578,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"12275:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12265:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":1580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12284:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12265:20:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1582,"nodeType":"ExpressionStatement","src":"12265:20:6"},{"expression":{"id":1587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1583,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"12299:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1585,"indexExpression":{"id":1584,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"12309:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12299:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12299:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1588,"nodeType":"ExpressionStatement","src":"12299:18:6"}]},{"expression":{"id":1594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1590,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":889,"src":"12337:7:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1592,"indexExpression":{"id":1591,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"12345:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12337:16:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1593,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"12356:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12337:21:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1595,"nodeType":"ExpressionStatement","src":"12337:21:6"},{"eventCall":{"arguments":[{"id":1597,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"12383:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1598,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"12389:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1599,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"12393:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1596,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1799,"src":"12374:8:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12374:27:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1601,"nodeType":"EmitStatement","src":"12369:32:6"},{"expression":{"arguments":[{"id":1603,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"12432:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1604,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"12438:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1605,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"12442:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":1606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12451:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1602,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1768,"src":"12412:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":1607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12412:41:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1608,"nodeType":"ExpressionStatement","src":"12412:41:6"}]},"documentation":{"id":1526,"nodeType":"StructuredDocumentation","src":"10939:313:6","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":1610,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11266:9:6","nodeType":"FunctionDefinition","parameters":{"id":1533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1528,"mutability":"mutable","name":"from","nameLocation":"11284:4:6","nodeType":"VariableDeclaration","scope":1610,"src":"11276:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1527,"name":"address","nodeType":"ElementaryTypeName","src":"11276:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1530,"mutability":"mutable","name":"to","nameLocation":"11298:2:6","nodeType":"VariableDeclaration","scope":1610,"src":"11290:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1529,"name":"address","nodeType":"ElementaryTypeName","src":"11290:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1532,"mutability":"mutable","name":"tokenId","nameLocation":"11310:7:6","nodeType":"VariableDeclaration","scope":1610,"src":"11302:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1531,"name":"uint256","nodeType":"ElementaryTypeName","src":"11302:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11275:43:6"},"returnParameters":{"id":1534,"nodeType":"ParameterList","parameters":[],"src":"11336:0:6"},"scope":1784,"src":"11257:1203:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1633,"nodeType":"Block","src":"12636:107:6","statements":[{"expression":{"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1618,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"12646:15:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1620,"indexExpression":{"id":1619,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"12662:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12646:24:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1621,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"12673:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12646:29:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1623,"nodeType":"ExpressionStatement","src":"12646:29:6"},{"eventCall":{"arguments":[{"arguments":[{"id":1627,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"12714:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1625,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"12699:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$1784_$","typeString":"type(contract ERC721)"}},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12706:7:6","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1003,"src":"12699:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":1628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12699:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1629,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"12724:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1630,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1615,"src":"12728:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1624,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1808,"src":"12690:8:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12690:46:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1632,"nodeType":"EmitStatement","src":"12685:51:6"}]},"documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"12466:101:6","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":1634,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"12581:8:6","nodeType":"FunctionDefinition","parameters":{"id":1616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1613,"mutability":"mutable","name":"to","nameLocation":"12598:2:6","nodeType":"VariableDeclaration","scope":1634,"src":"12590:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1612,"name":"address","nodeType":"ElementaryTypeName","src":"12590:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1615,"mutability":"mutable","name":"tokenId","nameLocation":"12610:7:6","nodeType":"VariableDeclaration","scope":1634,"src":"12602:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1614,"name":"uint256","nodeType":"ElementaryTypeName","src":"12602:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12589:29:6"},"returnParameters":{"id":1617,"nodeType":"ParameterList","parameters":[],"src":"12636:0:6"},"scope":1784,"src":"12572:171:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1665,"nodeType":"Block","src":"12972:184:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1645,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"12990:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1646,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"12999:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12990:17:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":1648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13009:27:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":1644,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12982:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12982:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1650,"nodeType":"ExpressionStatement","src":"12982:55:6"},{"expression":{"id":1657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1651,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"13047:18:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":1654,"indexExpression":{"id":1652,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"13066:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13047:25:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":1655,"indexExpression":{"id":1653,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"13073:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13047:35:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1656,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1641,"src":"13085:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13047:46:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1658,"nodeType":"ExpressionStatement","src":"13047:46:6"},{"eventCall":{"arguments":[{"id":1660,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"13123:5:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1661,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"13130:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1662,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1641,"src":"13140:8:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1659,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"13108:14:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":1663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13108:41:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1664,"nodeType":"EmitStatement","src":"13103:46:6"}]},"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"12749:125:6","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":1666,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"12888:18:6","nodeType":"FunctionDefinition","parameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1637,"mutability":"mutable","name":"owner","nameLocation":"12915:5:6","nodeType":"VariableDeclaration","scope":1666,"src":"12907:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1636,"name":"address","nodeType":"ElementaryTypeName","src":"12907:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1639,"mutability":"mutable","name":"operator","nameLocation":"12930:8:6","nodeType":"VariableDeclaration","scope":1666,"src":"12922:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"12922:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1641,"mutability":"mutable","name":"approved","nameLocation":"12945:8:6","nodeType":"VariableDeclaration","scope":1666,"src":"12940:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1640,"name":"bool","nodeType":"ElementaryTypeName","src":"12940:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12906:48:6"},"returnParameters":{"id":1643,"nodeType":"ParameterList","parameters":[],"src":"12972:0:6"},"scope":1784,"src":"12879:277:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1679,"nodeType":"Block","src":"13303:70:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":1674,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"13329:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1673,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"13321:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13321:16:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":1676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13339:26:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":1672,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13313:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13313:53:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1678,"nodeType":"ExpressionStatement","src":"13313:53:6"}]},"documentation":{"id":1667,"nodeType":"StructuredDocumentation","src":"13162:73:6","text":" @dev Reverts if the `tokenId` has not been minted yet."},"id":1680,"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"13249:14:6","nodeType":"FunctionDefinition","parameters":{"id":1670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1669,"mutability":"mutable","name":"tokenId","nameLocation":"13272:7:6","nodeType":"VariableDeclaration","scope":1680,"src":"13264:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1668,"name":"uint256","nodeType":"ElementaryTypeName","src":"13264:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13263:17:6"},"returnParameters":{"id":1671,"nodeType":"ParameterList","parameters":[],"src":"13303:0:6"},"scope":1784,"src":"13240:133:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1741,"nodeType":"Block","src":"14080:676:6","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1694,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1685,"src":"14094:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14097:10:6","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1963,"src":"14094:13:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":1696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14094:15:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1739,"nodeType":"Block","src":"14714:36:6","statements":[{"expression":{"hexValue":"74727565","id":1737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14735:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":1693,"id":1738,"nodeType":"Return","src":"14728:11:6"}]},"id":1740,"nodeType":"IfStatement","src":"14090:660:6","trueBody":{"id":1736,"nodeType":"Block","src":"14111:597:6","statements":[{"clauses":[{"block":{"id":1716,"nodeType":"Block","src":"14225:91:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1710,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1708,"src":"14250:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":1711,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"14260:15:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1918_$","typeString":"type(contract IERC721Receiver)"}},"id":1712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14276:16:6","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"14260: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":1713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14293:8:6","memberName":"selector","nodeType":"MemberAccess","src":"14260:41:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"14250:51:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1693,"id":1715,"nodeType":"Return","src":"14243:58:6"}]},"errorName":"","id":1717,"nodeType":"TryCatchClause","parameters":{"id":1709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1708,"mutability":"mutable","name":"retval","nameLocation":"14217:6:6","nodeType":"VariableDeclaration","scope":1717,"src":"14210:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1707,"name":"bytes4","nodeType":"ElementaryTypeName","src":"14210:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"14209:15:6"},"src":"14201:115:6"},{"block":{"id":1733,"nodeType":"Block","src":"14345:353:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1721,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"14367:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14374:6:6","memberName":"length","nodeType":"MemberAccess","src":"14367:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14384:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14367:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1731,"nodeType":"Block","src":"14494:190:6","statements":[{"AST":{"nodeType":"YulBlock","src":"14580:86:6","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14617:2:6","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"14621:6:6"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14613:3:6"},"nodeType":"YulFunctionCall","src":"14613:15:6"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"14636:6:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14630:5:6"},"nodeType":"YulFunctionCall","src":"14630:13:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14606:6:6"},"nodeType":"YulFunctionCall","src":"14606:38:6"},"nodeType":"YulExpressionStatement","src":"14606:38:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":1719,"isOffset":false,"isSlot":false,"src":"14621:6:6","valueSize":1},{"declaration":1719,"isOffset":false,"isSlot":false,"src":"14636:6:6","valueSize":1}],"id":1730,"nodeType":"InlineAssembly","src":"14571:95:6"}]},"id":1732,"nodeType":"IfStatement","src":"14363:321:6","trueBody":{"id":1729,"nodeType":"Block","src":"14387:101:6","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":1726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14416:52:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":1725,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"14409:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14409:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1728,"nodeType":"ExpressionStatement","src":"14409:60:6"}]}}]},"errorName":"","id":1734,"nodeType":"TryCatchClause","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"reason","nameLocation":"14337:6:6","nodeType":"VariableDeclaration","scope":1734,"src":"14324:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1718,"name":"bytes","nodeType":"ElementaryTypeName","src":"14324:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14323:21:6"},"src":"14317:381:6"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1701,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"14166:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14166:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1703,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"14180:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1704,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1687,"src":"14186:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1705,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1689,"src":"14195:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":1698,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1685,"src":"14145:2:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1697,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"14129:15:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1918_$","typeString":"type(contract IERC721Receiver)"}},"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14129:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1918","typeString":"contract IERC721Receiver"}},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14149:16:6","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"14129:36:6","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":1706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14129:71:6","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":1735,"nodeType":"TryStatement","src":"14125:573:6"}]}}]},"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"13379:541:6","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":1742,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"13934:22:6","nodeType":"FunctionDefinition","parameters":{"id":1690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"from","nameLocation":"13974:4:6","nodeType":"VariableDeclaration","scope":1742,"src":"13966:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1682,"name":"address","nodeType":"ElementaryTypeName","src":"13966:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1685,"mutability":"mutable","name":"to","nameLocation":"13996:2:6","nodeType":"VariableDeclaration","scope":1742,"src":"13988:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1684,"name":"address","nodeType":"ElementaryTypeName","src":"13988:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"tokenId","nameLocation":"14016:7:6","nodeType":"VariableDeclaration","scope":1742,"src":"14008:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"14008:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1689,"mutability":"mutable","name":"data","nameLocation":"14046:4:6","nodeType":"VariableDeclaration","scope":1742,"src":"14033:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1688,"name":"bytes","nodeType":"ElementaryTypeName","src":"14033:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13956:100:6"},"returnParameters":{"id":1693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1742,"src":"14074:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1691,"name":"bool","nodeType":"ElementaryTypeName","src":"14074:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14073:6:6"},"scope":1784,"src":"13925:831:6","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1754,"nodeType":"Block","src":"15586:2:6","statements":[]},"documentation":{"id":1743,"nodeType":"StructuredDocumentation","src":"14762:705:6","text":" @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n - When `from` is zero, the tokens will be minted for `to`.\n - When `to` is zero, ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":1755,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"15481:20:6","nodeType":"FunctionDefinition","parameters":{"id":1752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1745,"mutability":"mutable","name":"from","nameLocation":"15510:4:6","nodeType":"VariableDeclaration","scope":1755,"src":"15502:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1744,"name":"address","nodeType":"ElementaryTypeName","src":"15502:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1747,"mutability":"mutable","name":"to","nameLocation":"15524:2:6","nodeType":"VariableDeclaration","scope":1755,"src":"15516:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1746,"name":"address","nodeType":"ElementaryTypeName","src":"15516:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1749,"mutability":"mutable","name":"firstTokenId","nameLocation":"15536:12:6","nodeType":"VariableDeclaration","scope":1755,"src":"15528:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1748,"name":"uint256","nodeType":"ElementaryTypeName","src":"15528:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1751,"mutability":"mutable","name":"batchSize","nameLocation":"15558:9:6","nodeType":"VariableDeclaration","scope":1755,"src":"15550:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1750,"name":"uint256","nodeType":"ElementaryTypeName","src":"15550:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15501:67:6"},"returnParameters":{"id":1753,"nodeType":"ParameterList","parameters":[],"src":"15586:0:6"},"scope":1784,"src":"15472:116:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1767,"nodeType":"Block","src":"16407:2:6","statements":[]},"documentation":{"id":1756,"nodeType":"StructuredDocumentation","src":"15594:695:6","text":" @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n - When `from` is zero, the tokens were minted for `to`.\n - When `to` is zero, ``from``'s tokens were burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":1768,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"16303:19:6","nodeType":"FunctionDefinition","parameters":{"id":1765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1758,"mutability":"mutable","name":"from","nameLocation":"16331:4:6","nodeType":"VariableDeclaration","scope":1768,"src":"16323:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1757,"name":"address","nodeType":"ElementaryTypeName","src":"16323:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1760,"mutability":"mutable","name":"to","nameLocation":"16345:2:6","nodeType":"VariableDeclaration","scope":1768,"src":"16337:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1759,"name":"address","nodeType":"ElementaryTypeName","src":"16337:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1762,"mutability":"mutable","name":"firstTokenId","nameLocation":"16357:12:6","nodeType":"VariableDeclaration","scope":1768,"src":"16349:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1761,"name":"uint256","nodeType":"ElementaryTypeName","src":"16349:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1764,"mutability":"mutable","name":"batchSize","nameLocation":"16379:9:6","nodeType":"VariableDeclaration","scope":1768,"src":"16371:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1763,"name":"uint256","nodeType":"ElementaryTypeName","src":"16371:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16322:67:6"},"returnParameters":{"id":1766,"nodeType":"ParameterList","parameters":[],"src":"16407:0:6"},"scope":1784,"src":"16294:115:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1782,"nodeType":"Block","src":"16958:45:6","statements":[{"expression":{"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1776,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"16968:9:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1778,"indexExpression":{"id":1777,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"16978:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16968:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1779,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1773,"src":"16990:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16968:28:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1781,"nodeType":"ExpressionStatement","src":"16968:28:6"}]},"documentation":{"id":1769,"nodeType":"StructuredDocumentation","src":"16415:409:6","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\n being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\n that `ownerOf(tokenId)` is `a`."},"id":1783,"implemented":true,"kind":"function","modifiers":[],"name":"__unsafe_increaseBalance","nameLocation":"16891:24:6","nodeType":"FunctionDefinition","parameters":{"id":1774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1771,"mutability":"mutable","name":"account","nameLocation":"16924:7:6","nodeType":"VariableDeclaration","scope":1783,"src":"16916:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1770,"name":"address","nodeType":"ElementaryTypeName","src":"16916:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1773,"mutability":"mutable","name":"amount","nameLocation":"16941:6:6","nodeType":"VariableDeclaration","scope":1783,"src":"16933:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1772,"name":"uint256","nodeType":"ElementaryTypeName","src":"16933:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16915:33:6"},"returnParameters":{"id":1775,"nodeType":"ParameterList","parameters":[],"src":"16958:0:6"},"scope":1784,"src":"16882:121:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1785,"src":"628:16377:6","usedErrors":[]}],"src":"107:16899:6"},"id":6},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[2562],"IERC721":[1900]},"id":1901,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1786,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:7"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":1787,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1901,"sourceUnit":2563,"src":"133:47:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1789,"name":"IERC165","nameLocations":["271:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":2562,"src":"271:7:7"},"id":1790,"nodeType":"InheritanceSpecifier","src":"271:7:7"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1788,"nodeType":"StructuredDocumentation","src":"182:67:7","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":1900,"linearizedBaseContracts":[1900,2562],"name":"IERC721","nameLocation":"260:7:7","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1791,"nodeType":"StructuredDocumentation","src":"285:88:7","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1799,"name":"Transfer","nameLocation":"384:8:7","nodeType":"EventDefinition","parameters":{"id":1798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1793,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:7","nodeType":"VariableDeclaration","scope":1799,"src":"393:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1795,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:7","nodeType":"VariableDeclaration","scope":1799,"src":"415:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1794,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1797,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:7","nodeType":"VariableDeclaration","scope":1799,"src":"435:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1796,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:7"},"src":"378:82:7"},{"anonymous":false,"documentation":{"id":1800,"nodeType":"StructuredDocumentation","src":"466:94:7","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1808,"name":"Approval","nameLocation":"571:8:7","nodeType":"EventDefinition","parameters":{"id":1807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1802,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:7","nodeType":"VariableDeclaration","scope":1808,"src":"580:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1801,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1804,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:7","nodeType":"VariableDeclaration","scope":1808,"src":"603:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1803,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1806,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:7","nodeType":"VariableDeclaration","scope":1808,"src":"629:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1805,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:7"},"src":"565:89:7"},{"anonymous":false,"documentation":{"id":1809,"nodeType":"StructuredDocumentation","src":"660:117:7","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":1817,"name":"ApprovalForAll","nameLocation":"788:14:7","nodeType":"EventDefinition","parameters":{"id":1816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1811,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:7","nodeType":"VariableDeclaration","scope":1817,"src":"803:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1810,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1813,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:7","nodeType":"VariableDeclaration","scope":1817,"src":"826:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1812,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1815,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:7","nodeType":"VariableDeclaration","scope":1817,"src":"852:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1814,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:7"},"src":"782:85:7"},{"documentation":{"id":1818,"nodeType":"StructuredDocumentation","src":"873:76:7","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":1825,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:7","nodeType":"FunctionDefinition","parameters":{"id":1821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1820,"mutability":"mutable","name":"owner","nameLocation":"981:5:7","nodeType":"VariableDeclaration","scope":1825,"src":"973:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1819,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:7"},"returnParameters":{"id":1824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1823,"mutability":"mutable","name":"balance","nameLocation":"1019:7:7","nodeType":"VariableDeclaration","scope":1825,"src":"1011:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1822,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:7"},"scope":1900,"src":"954:74:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1826,"nodeType":"StructuredDocumentation","src":"1034:131:7","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":1833,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:7","nodeType":"FunctionDefinition","parameters":{"id":1829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1828,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:7","nodeType":"VariableDeclaration","scope":1833,"src":"1187:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1827,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:7"},"returnParameters":{"id":1832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1831,"mutability":"mutable","name":"owner","nameLocation":"1235:5:7","nodeType":"VariableDeclaration","scope":1833,"src":"1227:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1830,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:7"},"scope":1900,"src":"1170:72:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1834,"nodeType":"StructuredDocumentation","src":"1248:556:7","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 a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":1845,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:7","nodeType":"FunctionDefinition","parameters":{"id":1843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1836,"mutability":"mutable","name":"from","nameLocation":"1843:4:7","nodeType":"VariableDeclaration","scope":1845,"src":"1835:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1835,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1838,"mutability":"mutable","name":"to","nameLocation":"1857:2:7","nodeType":"VariableDeclaration","scope":1845,"src":"1849:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1837,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1840,"mutability":"mutable","name":"tokenId","nameLocation":"1869:7:7","nodeType":"VariableDeclaration","scope":1845,"src":"1861:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1839,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1842,"mutability":"mutable","name":"data","nameLocation":"1893:4:7","nodeType":"VariableDeclaration","scope":1845,"src":"1878:19:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1841,"name":"bytes","nodeType":"ElementaryTypeName","src":"1878:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:64:7"},"returnParameters":{"id":1844,"nodeType":"ParameterList","parameters":[],"src":"1907:0:7"},"scope":1900,"src":"1809:99:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"1914:687:7","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 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 {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":1855,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2615:16:7","nodeType":"FunctionDefinition","parameters":{"id":1853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"from","nameLocation":"2640:4:7","nodeType":"VariableDeclaration","scope":1855,"src":"2632:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1847,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1850,"mutability":"mutable","name":"to","nameLocation":"2654:2:7","nodeType":"VariableDeclaration","scope":1855,"src":"2646:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1849,"name":"address","nodeType":"ElementaryTypeName","src":"2646:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1852,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:7","nodeType":"VariableDeclaration","scope":1855,"src":"2658:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1851,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2631:43:7"},"returnParameters":{"id":1854,"nodeType":"ParameterList","parameters":[],"src":"2683:0:7"},"scope":1900,"src":"2606:78:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1856,"nodeType":"StructuredDocumentation","src":"2690:732:7","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 ERC721\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":1865,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3436:12:7","nodeType":"FunctionDefinition","parameters":{"id":1863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1858,"mutability":"mutable","name":"from","nameLocation":"3457:4:7","nodeType":"VariableDeclaration","scope":1865,"src":"3449:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1857,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1860,"mutability":"mutable","name":"to","nameLocation":"3471:2:7","nodeType":"VariableDeclaration","scope":1865,"src":"3463:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1859,"name":"address","nodeType":"ElementaryTypeName","src":"3463:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1862,"mutability":"mutable","name":"tokenId","nameLocation":"3483:7:7","nodeType":"VariableDeclaration","scope":1865,"src":"3475:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1861,"name":"uint256","nodeType":"ElementaryTypeName","src":"3475:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3448:43:7"},"returnParameters":{"id":1864,"nodeType":"ParameterList","parameters":[],"src":"3500:0:7"},"scope":1900,"src":"3427:74:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1866,"nodeType":"StructuredDocumentation","src":"3507:452:7","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":1873,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3973:7:7","nodeType":"FunctionDefinition","parameters":{"id":1871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1868,"mutability":"mutable","name":"to","nameLocation":"3989:2:7","nodeType":"VariableDeclaration","scope":1873,"src":"3981:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1867,"name":"address","nodeType":"ElementaryTypeName","src":"3981:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1870,"mutability":"mutable","name":"tokenId","nameLocation":"4001:7:7","nodeType":"VariableDeclaration","scope":1873,"src":"3993:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1869,"name":"uint256","nodeType":"ElementaryTypeName","src":"3993:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3980:29:7"},"returnParameters":{"id":1872,"nodeType":"ParameterList","parameters":[],"src":"4018:0:7"},"scope":1900,"src":"3964:55:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1874,"nodeType":"StructuredDocumentation","src":"4025:309:7","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 caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":1881,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4348:17:7","nodeType":"FunctionDefinition","parameters":{"id":1879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"operator","nameLocation":"4374:8:7","nodeType":"VariableDeclaration","scope":1881,"src":"4366:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1875,"name":"address","nodeType":"ElementaryTypeName","src":"4366:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1878,"mutability":"mutable","name":"approved","nameLocation":"4389:8:7","nodeType":"VariableDeclaration","scope":1881,"src":"4384:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1877,"name":"bool","nodeType":"ElementaryTypeName","src":"4384:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4365:33:7"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[],"src":"4407:0:7"},"scope":1900,"src":"4339:69:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1882,"nodeType":"StructuredDocumentation","src":"4414:139:7","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":1889,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4567:11:7","nodeType":"FunctionDefinition","parameters":{"id":1885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1884,"mutability":"mutable","name":"tokenId","nameLocation":"4587:7:7","nodeType":"VariableDeclaration","scope":1889,"src":"4579:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1883,"name":"uint256","nodeType":"ElementaryTypeName","src":"4579:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4578:17:7"},"returnParameters":{"id":1888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1887,"mutability":"mutable","name":"operator","nameLocation":"4627:8:7","nodeType":"VariableDeclaration","scope":1889,"src":"4619:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1886,"name":"address","nodeType":"ElementaryTypeName","src":"4619:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4618:18:7"},"scope":1900,"src":"4558:79:7","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1890,"nodeType":"StructuredDocumentation","src":"4643:138:7","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":1899,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4795:16:7","nodeType":"FunctionDefinition","parameters":{"id":1895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1892,"mutability":"mutable","name":"owner","nameLocation":"4820:5:7","nodeType":"VariableDeclaration","scope":1899,"src":"4812:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1891,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1894,"mutability":"mutable","name":"operator","nameLocation":"4835:8:7","nodeType":"VariableDeclaration","scope":1899,"src":"4827:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1893,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4811:33:7"},"returnParameters":{"id":1898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1897,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1899,"src":"4868:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1896,"name":"bool","nodeType":"ElementaryTypeName","src":"4868:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4867:6:7"},"scope":1900,"src":"4786:88:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1901,"src":"250:4626:7","usedErrors":[]}],"src":"108:4769:7"},"id":7},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[1918]},"id":1919,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1902,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1903,"nodeType":"StructuredDocumentation","src":"141:152:8","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":1918,"linearizedBaseContracts":[1918],"name":"IERC721Receiver","nameLocation":"304:15:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1904,"nodeType":"StructuredDocumentation","src":"326:493:8","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 reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":1917,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:8","nodeType":"FunctionDefinition","parameters":{"id":1913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1906,"mutability":"mutable","name":"operator","nameLocation":"867:8:8","nodeType":"VariableDeclaration","scope":1917,"src":"859:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1905,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1908,"mutability":"mutable","name":"from","nameLocation":"893:4:8","nodeType":"VariableDeclaration","scope":1917,"src":"885:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1907,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1910,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:8","nodeType":"VariableDeclaration","scope":1917,"src":"907:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1909,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1912,"mutability":"mutable","name":"data","nameLocation":"947:4:8","nodeType":"VariableDeclaration","scope":1917,"src":"932:19:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1911,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:8"},"returnParameters":{"id":1916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1915,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1917,"src":"976:6:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1914,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:8"},"scope":1918,"src":"824:160:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1919,"src":"294:692:8","usedErrors":[]}],"src":"116:871:8"},"id":8},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC165":[2562],"IERC721":[1900],"IERC721Metadata":[1945]},"id":1946,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1920,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:9"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":1921,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1946,"sourceUnit":1901,"src":"137:24:9","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1923,"name":"IERC721","nameLocations":["326:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":1900,"src":"326:7:9"},"id":1924,"nodeType":"InheritanceSpecifier","src":"326:7:9"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1922,"nodeType":"StructuredDocumentation","src":"163:133:9","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":1945,"linearizedBaseContracts":[1945,1900,2562],"name":"IERC721Metadata","nameLocation":"307:15:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1925,"nodeType":"StructuredDocumentation","src":"340:58:9","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":1930,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"412:4:9","nodeType":"FunctionDefinition","parameters":{"id":1926,"nodeType":"ParameterList","parameters":[],"src":"416:2:9"},"returnParameters":{"id":1929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1930,"src":"442:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1927,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"441:15:9"},"scope":1945,"src":"403:54:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1931,"nodeType":"StructuredDocumentation","src":"463:60:9","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":1936,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"537:6:9","nodeType":"FunctionDefinition","parameters":{"id":1932,"nodeType":"ParameterList","parameters":[],"src":"543:2:9"},"returnParameters":{"id":1935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1936,"src":"569:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1933,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"568:15:9"},"scope":1945,"src":"528:56:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1937,"nodeType":"StructuredDocumentation","src":"590:90:9","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":1944,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"694:8:9","nodeType":"FunctionDefinition","parameters":{"id":1940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1939,"mutability":"mutable","name":"tokenId","nameLocation":"711:7:9","nodeType":"VariableDeclaration","scope":1944,"src":"703:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1938,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"702:17:9"},"returnParameters":{"id":1943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1942,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1944,"src":"743:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1941,"name":"string","nodeType":"ElementaryTypeName","src":"743:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"742:15:9"},"scope":1945,"src":"685:73:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1946,"src":"297:463:9","usedErrors":[]}],"src":"112:649:9"},"id":9},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[2275]},"id":2276,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1947,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":1948,"nodeType":"StructuredDocumentation","src":"126:67:10","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":2275,"linearizedBaseContracts":[2275],"name":"Address","nameLocation":"202:7:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":1962,"nodeType":"Block","src":"1478:254:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1956,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1951,"src":"1702:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1710:4:10","memberName":"code","nodeType":"MemberAccess","src":"1702:12:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1715:6:10","memberName":"length","nodeType":"MemberAccess","src":"1702:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1955,"id":1961,"nodeType":"Return","src":"1695:30:10"}]},"documentation":{"id":1949,"nodeType":"StructuredDocumentation","src":"216:1191:10","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":1963,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:10","nodeType":"FunctionDefinition","parameters":{"id":1952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1951,"mutability":"mutable","name":"account","nameLocation":"1440:7:10","nodeType":"VariableDeclaration","scope":1963,"src":"1432:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1950,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:10"},"returnParameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1963,"src":"1472:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1953,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:10"},"scope":2275,"src":"1412:320:10","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1996,"nodeType":"Block","src":"2718:241:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1974,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2744:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2275","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2275","typeString":"library Address"}],"id":1973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1972,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:10","typeDescriptions":{}}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:7:10","memberName":"balance","nodeType":"MemberAccess","src":"2736:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1977,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"2761:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":1979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":1971,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2728:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:73:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1981,"nodeType":"ExpressionStatement","src":"2728:73:10"},{"assignments":[1983,null],"declarations":[{"constant":false,"id":1983,"mutability":"mutable","name":"success","nameLocation":"2818:7:10","nodeType":"VariableDeclaration","scope":1996,"src":"2813:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1982,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1990,"initialValue":{"arguments":[{"hexValue":"","id":1988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":1984,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"2831:9:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:4:10","memberName":"call","nodeType":"MemberAccess","src":"2831:14:10","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":1987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1986,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"2853:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:10","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":1989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:33:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:10"},{"expression":{"arguments":[{"id":1992,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"2882:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":1993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":1991,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2874:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:78:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1995,"nodeType":"ExpressionStatement","src":"2874:78:10"}]},"documentation":{"id":1964,"nodeType":"StructuredDocumentation","src":"1738:904:10","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":1997,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:10","nodeType":"FunctionDefinition","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1966,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:10","nodeType":"VariableDeclaration","scope":1997,"src":"2666:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1965,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:10","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1968,"mutability":"mutable","name":"amount","nameLocation":"2701:6:10","nodeType":"VariableDeclaration","scope":1997,"src":"2693:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:10"},"returnParameters":{"id":1970,"nodeType":"ParameterList","parameters":[],"src":"2718:0:10"},"scope":2275,"src":"2647:312:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2014,"nodeType":"Block","src":"3790:96:10","statements":[{"expression":{"arguments":[{"id":2008,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"3829:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2009,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2002,"src":"3837:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":2010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":2011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":2007,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[2055,2099],"referencedDeclaration":2099,"src":"3807:21:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":2012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3807:72:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2006,"id":2013,"nodeType":"Return","src":"3800:79:10"}]},"documentation":{"id":1998,"nodeType":"StructuredDocumentation","src":"2965:731:10","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":2015,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:10","nodeType":"FunctionDefinition","parameters":{"id":2003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2000,"mutability":"mutable","name":"target","nameLocation":"3731:6:10","nodeType":"VariableDeclaration","scope":2015,"src":"3723:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1999,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2002,"mutability":"mutable","name":"data","nameLocation":"3752:4:10","nodeType":"VariableDeclaration","scope":2015,"src":"3739:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2001,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:10"},"returnParameters":{"id":2006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2005,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2015,"src":"3776:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2004,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:10"},"scope":2275,"src":"3701:185:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2034,"nodeType":"Block","src":"4255:76:10","statements":[{"expression":{"arguments":[{"id":2028,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"4294:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2029,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"4302:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":2030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2031,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"4311:12:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2027,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[2055,2099],"referencedDeclaration":2099,"src":"4272:21:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":2032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4272:52:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2026,"id":2033,"nodeType":"Return","src":"4265:59:10"}]},"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"3892:211:10","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":2035,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:10","nodeType":"FunctionDefinition","parameters":{"id":2023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"target","nameLocation":"4147:6:10","nodeType":"VariableDeclaration","scope":2035,"src":"4139:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2020,"mutability":"mutable","name":"data","nameLocation":"4176:4:10","nodeType":"VariableDeclaration","scope":2035,"src":"4163:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2019,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2022,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:10","nodeType":"VariableDeclaration","scope":2035,"src":"4190:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2021,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:10"},"returnParameters":{"id":2026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2025,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2035,"src":"4241:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2024,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:10"},"scope":2275,"src":"4108:223:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2054,"nodeType":"Block","src":"4806:111:10","statements":[{"expression":{"arguments":[{"id":2048,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2038,"src":"4845:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2049,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2040,"src":"4853:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2050,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"4859:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":2051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":2047,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[2055,2099],"referencedDeclaration":2099,"src":"4823:21:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":2052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:87:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2046,"id":2053,"nodeType":"Return","src":"4816:94:10"}]},"documentation":{"id":2036,"nodeType":"StructuredDocumentation","src":"4337:351:10","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":2055,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:10","nodeType":"FunctionDefinition","parameters":{"id":2043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2038,"mutability":"mutable","name":"target","nameLocation":"4732:6:10","nodeType":"VariableDeclaration","scope":2055,"src":"4724:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2037,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2040,"mutability":"mutable","name":"data","nameLocation":"4753:4:10","nodeType":"VariableDeclaration","scope":2055,"src":"4740:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2039,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2042,"mutability":"mutable","name":"value","nameLocation":"4767:5:10","nodeType":"VariableDeclaration","scope":2055,"src":"4759:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2041,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:10"},"returnParameters":{"id":2046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2055,"src":"4792:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2044,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:10"},"scope":2275,"src":"4693:224:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2098,"nodeType":"Block","src":"5344:267:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2072,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5370:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$2275","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$2275","typeString":"library Address"}],"id":2071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2070,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:10","typeDescriptions":{}}},"id":2073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5376:7:10","memberName":"balance","nodeType":"MemberAccess","src":"5362:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"5387:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":2069,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5354:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:81:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2079,"nodeType":"ExpressionStatement","src":"5354:81:10"},{"assignments":[2081,2083],"declarations":[{"constant":false,"id":2081,"mutability":"mutable","name":"success","nameLocation":"5451:7:10","nodeType":"VariableDeclaration","scope":2098,"src":"5446:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2080,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2083,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:10","nodeType":"VariableDeclaration","scope":2098,"src":"5460:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2082,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2090,"initialValue":{"arguments":[{"id":2088,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"5513:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2084,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"5487:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:4:10","memberName":"call","nodeType":"MemberAccess","src":"5487:11:10","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":2087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2086,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"5506:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:10","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":2089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:31:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:10"},{"expression":{"arguments":[{"id":2092,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"5562:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2093,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2081,"src":"5570:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2094,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2083,"src":"5579:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2095,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"5591:12:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2091,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"5535:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":2096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:69:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2068,"id":2097,"nodeType":"Return","src":"5528:76:10"}]},"documentation":{"id":2056,"nodeType":"StructuredDocumentation","src":"4923:237:10","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":2099,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:10","nodeType":"FunctionDefinition","parameters":{"id":2065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2058,"mutability":"mutable","name":"target","nameLocation":"5213:6:10","nodeType":"VariableDeclaration","scope":2099,"src":"5205:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2057,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2060,"mutability":"mutable","name":"data","nameLocation":"5242:4:10","nodeType":"VariableDeclaration","scope":2099,"src":"5229:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2059,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2062,"mutability":"mutable","name":"value","nameLocation":"5264:5:10","nodeType":"VariableDeclaration","scope":2099,"src":"5256:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2061,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2064,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:10","nodeType":"VariableDeclaration","scope":2099,"src":"5279:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2063,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:10"},"returnParameters":{"id":2068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2067,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2099,"src":"5330:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2066,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:10"},"scope":2275,"src":"5165:446:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2115,"nodeType":"Block","src":"5888:97:10","statements":[{"expression":{"arguments":[{"id":2110,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2102,"src":"5924:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2111,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2104,"src":"5932:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":2112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":2109,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[2116,2145],"referencedDeclaration":2145,"src":"5905:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5905:73:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2108,"id":2114,"nodeType":"Return","src":"5898:80:10"}]},"documentation":{"id":2100,"nodeType":"StructuredDocumentation","src":"5617:166:10","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":2116,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:10","nodeType":"FunctionDefinition","parameters":{"id":2105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2102,"mutability":"mutable","name":"target","nameLocation":"5824:6:10","nodeType":"VariableDeclaration","scope":2116,"src":"5816:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2101,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2104,"mutability":"mutable","name":"data","nameLocation":"5845:4:10","nodeType":"VariableDeclaration","scope":2116,"src":"5832:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2103,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:10"},"returnParameters":{"id":2108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2107,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2116,"src":"5874:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2106,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:10"},"scope":2275,"src":"5788:197:10","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2144,"nodeType":"Block","src":"6327:168:10","statements":[{"assignments":[2129,2131],"declarations":[{"constant":false,"id":2129,"mutability":"mutable","name":"success","nameLocation":"6343:7:10","nodeType":"VariableDeclaration","scope":2144,"src":"6338:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2128,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2131,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:10","nodeType":"VariableDeclaration","scope":2144,"src":"6352:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2130,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2136,"initialValue":{"arguments":[{"id":2134,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2121,"src":"6397:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2132,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2119,"src":"6379:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6386:10:10","memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:10","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":2135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:23:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:10"},{"expression":{"arguments":[{"id":2138,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2119,"src":"6446:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2139,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2129,"src":"6454:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2140,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2131,"src":"6463:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2141,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2123,"src":"6475:12:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2137,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"6419:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6419:69:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2127,"id":2143,"nodeType":"Return","src":"6412:76:10"}]},"documentation":{"id":2117,"nodeType":"StructuredDocumentation","src":"5991:173:10","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":2145,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:10","nodeType":"FunctionDefinition","parameters":{"id":2124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2119,"mutability":"mutable","name":"target","nameLocation":"6214:6:10","nodeType":"VariableDeclaration","scope":2145,"src":"6206:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2118,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2121,"mutability":"mutable","name":"data","nameLocation":"6243:4:10","nodeType":"VariableDeclaration","scope":2145,"src":"6230:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2120,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2123,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:10","nodeType":"VariableDeclaration","scope":2145,"src":"6257:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2122,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:10"},"returnParameters":{"id":2127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2145,"src":"6313:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2125,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:10"},"scope":2275,"src":"6169:326:10","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2161,"nodeType":"Block","src":"6771:101:10","statements":[{"expression":{"arguments":[{"id":2156,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2148,"src":"6809:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2157,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"6817:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":2158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":2155,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[2162,2191],"referencedDeclaration":2191,"src":"6788:20:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6788:77:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2154,"id":2160,"nodeType":"Return","src":"6781:84:10"}]},"documentation":{"id":2146,"nodeType":"StructuredDocumentation","src":"6501:168:10","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":2162,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:10","nodeType":"FunctionDefinition","parameters":{"id":2151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2148,"mutability":"mutable","name":"target","nameLocation":"6712:6:10","nodeType":"VariableDeclaration","scope":2162,"src":"6704:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2147,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2150,"mutability":"mutable","name":"data","nameLocation":"6733:4:10","nodeType":"VariableDeclaration","scope":2162,"src":"6720:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2149,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:10"},"returnParameters":{"id":2154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2162,"src":"6757:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2152,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:10"},"scope":2275,"src":"6674:198:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2190,"nodeType":"Block","src":"7213:170:10","statements":[{"assignments":[2175,2177],"declarations":[{"constant":false,"id":2175,"mutability":"mutable","name":"success","nameLocation":"7229:7:10","nodeType":"VariableDeclaration","scope":2190,"src":"7224:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2174,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2177,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:10","nodeType":"VariableDeclaration","scope":2190,"src":"7238:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2176,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2182,"initialValue":{"arguments":[{"id":2180,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"7285:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2178,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"7265:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7272:12:10","memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:10","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":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:10"},{"expression":{"arguments":[{"id":2184,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"7334:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2185,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"7342:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":2186,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2177,"src":"7351:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2187,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2169,"src":"7363:12:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2183,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"7307:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:69:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2173,"id":2189,"nodeType":"Return","src":"7300:76:10"}]},"documentation":{"id":2163,"nodeType":"StructuredDocumentation","src":"6878:175:10","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":2191,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:10","nodeType":"FunctionDefinition","parameters":{"id":2170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2165,"mutability":"mutable","name":"target","nameLocation":"7105:6:10","nodeType":"VariableDeclaration","scope":2191,"src":"7097:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2164,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2167,"mutability":"mutable","name":"data","nameLocation":"7134:4:10","nodeType":"VariableDeclaration","scope":2191,"src":"7121:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2166,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2169,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:10","nodeType":"VariableDeclaration","scope":2191,"src":"7148:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2168,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:10"},"returnParameters":{"id":2173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2191,"src":"7199:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2171,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:10"},"scope":2275,"src":"7058:325:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2229,"nodeType":"Block","src":"7865:434:10","statements":[{"condition":{"id":2205,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2196,"src":"7879:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2227,"nodeType":"Block","src":"8235:58:10","statements":[{"expression":{"arguments":[{"id":2223,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2198,"src":"8257:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2224,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"8269:12:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2222,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2274,"src":"8249:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":2225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:33:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2226,"nodeType":"ExpressionStatement","src":"8249:33:10"}]},"id":2228,"nodeType":"IfStatement","src":"7875:418:10","trueBody":{"id":2221,"nodeType":"Block","src":"7888:341:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2206,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2198,"src":"7906:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7917:6:10","memberName":"length","nodeType":"MemberAccess","src":"7906:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2218,"nodeType":"IfStatement","src":"7902:286:10","trueBody":{"id":2217,"nodeType":"Block","src":"7930:258:10","statements":[{"expression":{"arguments":[{"arguments":[{"id":2212,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2194,"src":"8132:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2211,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"8121:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":2213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":2214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":2210,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8113:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8113:60:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2216,"nodeType":"ExpressionStatement","src":"8113:60:10"}]}},{"expression":{"id":2219,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2198,"src":"8208:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2204,"id":2220,"nodeType":"Return","src":"8201:17:10"}]}}]},"documentation":{"id":2192,"nodeType":"StructuredDocumentation","src":"7389:277:10","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":2230,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:10","nodeType":"FunctionDefinition","parameters":{"id":2201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2194,"mutability":"mutable","name":"target","nameLocation":"7724:6:10","nodeType":"VariableDeclaration","scope":2230,"src":"7716:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2193,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2196,"mutability":"mutable","name":"success","nameLocation":"7745:7:10","nodeType":"VariableDeclaration","scope":2230,"src":"7740:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2195,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2198,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:10","nodeType":"VariableDeclaration","scope":2230,"src":"7762:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2197,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2200,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:10","nodeType":"VariableDeclaration","scope":2230,"src":"7795:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2199,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:10"},"returnParameters":{"id":2204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2203,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2230,"src":"7851:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2202,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:10"},"scope":2275,"src":"7671:628:10","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2253,"nodeType":"Block","src":"8680:135:10","statements":[{"condition":{"id":2242,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"8694:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2251,"nodeType":"Block","src":"8751:58:10","statements":[{"expression":{"arguments":[{"id":2247,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"8773:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2248,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"8785:12:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2246,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2274,"src":"8765:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8765:33:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2250,"nodeType":"ExpressionStatement","src":"8765:33:10"}]},"id":2252,"nodeType":"IfStatement","src":"8690:119:10","trueBody":{"id":2245,"nodeType":"Block","src":"8703:42:10","statements":[{"expression":{"id":2243,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"8724:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2241,"id":2244,"nodeType":"Return","src":"8717:17:10"}]}}]},"documentation":{"id":2231,"nodeType":"StructuredDocumentation","src":"8305:210:10","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":2254,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:10","nodeType":"FunctionDefinition","parameters":{"id":2238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2233,"mutability":"mutable","name":"success","nameLocation":"8560:7:10","nodeType":"VariableDeclaration","scope":2254,"src":"8555:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2232,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2235,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:10","nodeType":"VariableDeclaration","scope":2254,"src":"8577:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2234,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2237,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:10","nodeType":"VariableDeclaration","scope":2254,"src":"8610:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2236,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:10"},"returnParameters":{"id":2241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2240,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2254,"src":"8666:12:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2239,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:10"},"scope":2275,"src":"8520:295:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2273,"nodeType":"Block","src":"8904:457:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2261,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"8980:10:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8991:6:10","memberName":"length","nodeType":"MemberAccess","src":"8980:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2271,"nodeType":"Block","src":"9310:45:10","statements":[{"expression":{"arguments":[{"id":2268,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"9331:12:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2267,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9324:6:10","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9324:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2270,"nodeType":"ExpressionStatement","src":"9324:20:10"}]},"id":2272,"nodeType":"IfStatement","src":"8976:379:10","trueBody":{"id":2266,"nodeType":"Block","src":"9003:301:10","statements":[{"AST":{"nodeType":"YulBlock","src":"9161:133:10","statements":[{"nodeType":"YulVariableDeclaration","src":"9179:40:10","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9208:10:10"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9202:5:10"},"nodeType":"YulFunctionCall","src":"9202:17:10"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9183:15:10","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9247:2:10","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9251:10:10"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9243:3:10"},"nodeType":"YulFunctionCall","src":"9243:19:10"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9264:15:10"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9236:6:10"},"nodeType":"YulFunctionCall","src":"9236:44:10"},"nodeType":"YulExpressionStatement","src":"9236:44:10"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2256,"isOffset":false,"isSlot":false,"src":"9208:10:10","valueSize":1},{"declaration":2256,"isOffset":false,"isSlot":false,"src":"9251:10:10","valueSize":1}],"id":2265,"nodeType":"InlineAssembly","src":"9152:142:10"}]}}]},"id":2274,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:10","nodeType":"FunctionDefinition","parameters":{"id":2259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2256,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:10","nodeType":"VariableDeclaration","scope":2274,"src":"8838:23:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2255,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2258,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:10","nodeType":"VariableDeclaration","scope":2274,"src":"8863:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2257,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:10"},"returnParameters":{"id":2260,"nodeType":"ParameterList","parameters":[],"src":"8904:0:10"},"scope":2275,"src":"8821:540:10","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2276,"src":"194:9169:10","usedErrors":[]}],"src":"101:9263:10"},"id":10},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[2297]},"id":2298,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2277,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:11"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":2278,"nodeType":"StructuredDocumentation","src":"111:496:11","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":2297,"linearizedBaseContracts":[2297],"name":"Context","nameLocation":"626:7:11","nodeType":"ContractDefinition","nodes":[{"body":{"id":2286,"nodeType":"Block","src":"702:34:11","statements":[{"expression":{"expression":{"id":2283,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"723:6:11","memberName":"sender","nodeType":"MemberAccess","src":"719:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2282,"id":2285,"nodeType":"Return","src":"712:17:11"}]},"id":2287,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:11","nodeType":"FunctionDefinition","parameters":{"id":2279,"nodeType":"ParameterList","parameters":[],"src":"659:2:11"},"returnParameters":{"id":2282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2281,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2287,"src":"693:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2280,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:11"},"scope":2297,"src":"640:96:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2295,"nodeType":"Block","src":"809:32:11","statements":[{"expression":{"expression":{"id":2292,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"830:4:11","memberName":"data","nodeType":"MemberAccess","src":"826:8:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2291,"id":2294,"nodeType":"Return","src":"819:15:11"}]},"id":2296,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:11","nodeType":"FunctionDefinition","parameters":{"id":2288,"nodeType":"ParameterList","parameters":[],"src":"759:2:11"},"returnParameters":{"id":2291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2296,"src":"793:14:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2289,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:11"},"scope":2297,"src":"742:99:11","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":2298,"src":"608:235:11","usedErrors":[]}],"src":"86:758:11"},"id":11},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[3428],"SignedMath":[3533],"Strings":[2526]},"id":2527,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2299,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:12"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":2300,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2527,"sourceUnit":3429,"src":"126:25:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":2301,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2527,"sourceUnit":3534,"src":"152:31:12","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":2302,"nodeType":"StructuredDocumentation","src":"185:34:12","text":" @dev String operations."},"fullyImplemented":true,"id":2526,"linearizedBaseContracts":[2526],"name":"Strings","nameLocation":"228:7:12","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2305,"mutability":"constant","name":"_SYMBOLS","nameLocation":"267:8:12","nodeType":"VariableDeclaration","scope":2526,"src":"242:54:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":2303,"name":"bytes16","nodeType":"ElementaryTypeName","src":"242:7:12","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":2304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"278:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":2308,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"325:15:12","nodeType":"VariableDeclaration","scope":2526,"src":"302:43:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2306,"name":"uint8","nodeType":"ElementaryTypeName","src":"302:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":2307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"343:2:12","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":2355,"nodeType":"Block","src":"518:625:12","statements":[{"id":2354,"nodeType":"UncheckedBlock","src":"528:609:12","statements":[{"assignments":[2317],"declarations":[{"constant":false,"id":2317,"mutability":"mutable","name":"length","nameLocation":"560:6:12","nodeType":"VariableDeclaration","scope":2354,"src":"552:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2316,"name":"uint256","nodeType":"ElementaryTypeName","src":"552:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2324,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"580:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2318,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3428,"src":"569:4:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3428_$","typeString":"type(library Math)"}},"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"574:5:12","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":3265,"src":"569:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"569:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"589:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"569:21:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"552:38:12"},{"assignments":[2326],"declarations":[{"constant":false,"id":2326,"mutability":"mutable","name":"buffer","nameLocation":"618:6:12","nodeType":"VariableDeclaration","scope":2354,"src":"604:20:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2325,"name":"string","nodeType":"ElementaryTypeName","src":"604:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2331,"initialValue":{"arguments":[{"id":2329,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2317,"src":"638:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"627:10:12","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":2327,"name":"string","nodeType":"ElementaryTypeName","src":"631:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":2330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"627:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"604:41:12"},{"assignments":[2333],"declarations":[{"constant":false,"id":2333,"mutability":"mutable","name":"ptr","nameLocation":"667:3:12","nodeType":"VariableDeclaration","scope":2354,"src":"659:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2332,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2334,"nodeType":"VariableDeclarationStatement","src":"659:11:12"},{"AST":{"nodeType":"YulBlock","src":"740:67:12","statements":[{"nodeType":"YulAssignment","src":"758:35:12","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"769:6:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"781:2:12","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"785:6:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:12"},"nodeType":"YulFunctionCall","src":"777:15:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:12"},"nodeType":"YulFunctionCall","src":"765:28:12"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"758:3:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2326,"isOffset":false,"isSlot":false,"src":"769:6:12","valueSize":1},{"declaration":2317,"isOffset":false,"isSlot":false,"src":"785:6:12","valueSize":1},{"declaration":2333,"isOffset":false,"isSlot":false,"src":"758:3:12","valueSize":1}],"id":2335,"nodeType":"InlineAssembly","src":"731:76:12"},{"body":{"id":2350,"nodeType":"Block","src":"833:267:12","statements":[{"expression":{"id":2338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"851:5:12","subExpression":{"id":2337,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"851:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2339,"nodeType":"ExpressionStatement","src":"851:5:12"},{"AST":{"nodeType":"YulBlock","src":"934:84:12","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"964:3:12"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"978:5:12"},{"kind":"number","nodeType":"YulLiteral","src":"985:2:12","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"974:3:12"},"nodeType":"YulFunctionCall","src":"974:14:12"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"990:8:12"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"969:4:12"},"nodeType":"YulFunctionCall","src":"969:30:12"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"956:7:12"},"nodeType":"YulFunctionCall","src":"956:44:12"},"nodeType":"YulExpressionStatement","src":"956:44:12"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2305,"isOffset":false,"isSlot":false,"src":"990:8:12","valueSize":1},{"declaration":2333,"isOffset":false,"isSlot":false,"src":"964:3:12","valueSize":1},{"declaration":2311,"isOffset":false,"isSlot":false,"src":"978:5:12","valueSize":1}],"id":2340,"nodeType":"InlineAssembly","src":"925:93:12"},{"expression":{"id":2343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"1035:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":2342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1035:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2344,"nodeType":"ExpressionStatement","src":"1035:11:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"1068:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1077:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1068:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2349,"nodeType":"IfStatement","src":"1064:21:12","trueBody":{"id":2348,"nodeType":"Break","src":"1080:5:12"}}]},"condition":{"hexValue":"74727565","id":2336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"827:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":2351,"nodeType":"WhileStatement","src":"820:280:12"},{"expression":{"id":2352,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"1120:6:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2315,"id":2353,"nodeType":"Return","src":"1113:13:12"}]}]},"documentation":{"id":2309,"nodeType":"StructuredDocumentation","src":"352:90:12","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":2356,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"456:8:12","nodeType":"FunctionDefinition","parameters":{"id":2312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2311,"mutability":"mutable","name":"value","nameLocation":"473:5:12","nodeType":"VariableDeclaration","scope":2356,"src":"465:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2310,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"464:15:12"},"returnParameters":{"id":2315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2356,"src":"503:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2313,"name":"string","nodeType":"ElementaryTypeName","src":"503:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"502:15:12"},"scope":2526,"src":"447:696:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2383,"nodeType":"Block","src":"1313:103:12","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2359,"src":"1354:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":2369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1362:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1354:9:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":2372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1372:2:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1354:20:12","trueExpression":{"hexValue":"2d","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1366:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":2377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2359,"src":"1400:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":2375,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3533,"src":"1385:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$3533_$","typeString":"type(library SignedMath)"}},"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1396:3:12","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":3532,"src":"1385:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":2378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1385:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2374,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[2356,2384],"referencedDeclaration":2356,"src":"1376:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":2379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1376:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":2366,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1337:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1341:12:12","memberName":"encodePacked","nodeType":"MemberAccess","src":"1337:16:12","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1337:71:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1330:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2364,"name":"string","nodeType":"ElementaryTypeName","src":"1330:6:12","typeDescriptions":{}}},"id":2381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1330:79:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2363,"id":2382,"nodeType":"Return","src":"1323:86:12"}]},"documentation":{"id":2357,"nodeType":"StructuredDocumentation","src":"1149:89:12","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":2384,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1252:8:12","nodeType":"FunctionDefinition","parameters":{"id":2360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2359,"mutability":"mutable","name":"value","nameLocation":"1268:5:12","nodeType":"VariableDeclaration","scope":2384,"src":"1261:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2358,"name":"int256","nodeType":"ElementaryTypeName","src":"1261:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1260:14:12"},"returnParameters":{"id":2363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2384,"src":"1298:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2361,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:15:12"},"scope":2526,"src":"1243:173:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2403,"nodeType":"Block","src":"1595:100:12","statements":[{"id":2402,"nodeType":"UncheckedBlock","src":"1605:84:12","statements":[{"expression":{"arguments":[{"id":2393,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"1648:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2396,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"1667:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2394,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3428,"src":"1655:4:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3428_$","typeString":"type(library Math)"}},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1660:6:12","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":3388,"src":"1655:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1655:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1676:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1655:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2392,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[2404,2480,2500],"referencedDeclaration":2480,"src":"1636:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1636:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2391,"id":2401,"nodeType":"Return","src":"1629:49:12"}]}]},"documentation":{"id":2385,"nodeType":"StructuredDocumentation","src":"1422:94:12","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":2404,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1530:11:12","nodeType":"FunctionDefinition","parameters":{"id":2388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2387,"mutability":"mutable","name":"value","nameLocation":"1550:5:12","nodeType":"VariableDeclaration","scope":2404,"src":"1542:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2386,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1541:15:12"},"returnParameters":{"id":2391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2390,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2404,"src":"1580:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2389,"name":"string","nodeType":"ElementaryTypeName","src":"1580:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1579:15:12"},"scope":2526,"src":"1521:174:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2479,"nodeType":"Block","src":"1908:347:12","statements":[{"assignments":[2415],"declarations":[{"constant":false,"id":2415,"mutability":"mutable","name":"buffer","nameLocation":"1931:6:12","nodeType":"VariableDeclaration","scope":2479,"src":"1918:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2414,"name":"bytes","nodeType":"ElementaryTypeName","src":"1918:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2424,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1950:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2419,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2409,"src":"1954:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1950:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":2421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1950:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1940:9:12","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2416,"name":"bytes","nodeType":"ElementaryTypeName","src":"1944:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1940:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1918:47:12"},{"expression":{"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2425,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"1975:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2427,"indexExpression":{"hexValue":"30","id":2426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1982:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1975:9:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1987:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1975:15:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2430,"nodeType":"ExpressionStatement","src":"1975:15:12"},{"expression":{"id":2435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2431,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"2000:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2433,"indexExpression":{"hexValue":"31","id":2432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2007:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2000:9:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":2434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2012:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2000:15:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2436,"nodeType":"ExpressionStatement","src":"2000:15:12"},{"body":{"id":2465,"nodeType":"Block","src":"2070:83:12","statements":[{"expression":{"id":2459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2451,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"2084:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2453,"indexExpression":{"id":2452,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2438,"src":"2091:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2084:9:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2454,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2305,"src":"2096:8:12","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":2458,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2455,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2407,"src":"2105:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":2456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:3:12","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2105:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2096:21:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2084:33:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2460,"nodeType":"ExpressionStatement","src":"2084:33:12"},{"expression":{"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2461,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2407,"src":"2131:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2141:1:12","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2131:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2464,"nodeType":"ExpressionStatement","src":"2131:11:12"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2445,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2438,"src":"2058:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":2446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2062:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2058:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2466,"initializationExpression":{"assignments":[2438],"declarations":[{"constant":false,"id":2438,"mutability":"mutable","name":"i","nameLocation":"2038:1:12","nodeType":"VariableDeclaration","scope":2466,"src":"2030:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2437,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2444,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2042:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2440,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2409,"src":"2046:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2042:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2055:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2042:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2030:26:12"},"loopExpression":{"expression":{"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2065:3:12","subExpression":{"id":2448,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2438,"src":"2067:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2450,"nodeType":"ExpressionStatement","src":"2065:3:12"},"nodeType":"ForStatement","src":"2025:128:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2468,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2407,"src":"2170:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2170:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":2471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2182:34:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":2467,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2162:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2162:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2473,"nodeType":"ExpressionStatement","src":"2162:55:12"},{"expression":{"arguments":[{"id":2476,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"2241:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2234:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2474,"name":"string","nodeType":"ElementaryTypeName","src":"2234:6:12","typeDescriptions":{}}},"id":2477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2234:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2413,"id":2478,"nodeType":"Return","src":"2227:21:12"}]},"documentation":{"id":2405,"nodeType":"StructuredDocumentation","src":"1701:112:12","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":2480,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1827:11:12","nodeType":"FunctionDefinition","parameters":{"id":2410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2407,"mutability":"mutable","name":"value","nameLocation":"1847:5:12","nodeType":"VariableDeclaration","scope":2480,"src":"1839:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2406,"name":"uint256","nodeType":"ElementaryTypeName","src":"1839:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2409,"mutability":"mutable","name":"length","nameLocation":"1862:6:12","nodeType":"VariableDeclaration","scope":2480,"src":"1854:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2408,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1838:31:12"},"returnParameters":{"id":2413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2412,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2480,"src":"1893:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2411,"name":"string","nodeType":"ElementaryTypeName","src":"1893:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1892:15:12"},"scope":2526,"src":"1818:437:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2499,"nodeType":"Block","src":"2480:76:12","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":2493,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"2525:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2517:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2491,"name":"uint160","nodeType":"ElementaryTypeName","src":"2517:7:12","typeDescriptions":{}}},"id":2494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2517:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2489,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:12","typeDescriptions":{}}},"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2496,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"2533:15:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2488,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[2404,2480,2500],"referencedDeclaration":2480,"src":"2497:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2497:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2487,"id":2498,"nodeType":"Return","src":"2490:59:12"}]},"documentation":{"id":2481,"nodeType":"StructuredDocumentation","src":"2261:141:12","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":2500,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2416:11:12","nodeType":"FunctionDefinition","parameters":{"id":2484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2483,"mutability":"mutable","name":"addr","nameLocation":"2436:4:12","nodeType":"VariableDeclaration","scope":2500,"src":"2428:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2482,"name":"address","nodeType":"ElementaryTypeName","src":"2428:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2427:14:12"},"returnParameters":{"id":2487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2500,"src":"2465:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2485,"name":"string","nodeType":"ElementaryTypeName","src":"2465:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2464:15:12"},"scope":2526,"src":"2407:149:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2524,"nodeType":"Block","src":"2711:66:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2513,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"2744:1:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2738:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2511,"name":"bytes","nodeType":"ElementaryTypeName","src":"2738:5:12","typeDescriptions":{}}},"id":2514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2738:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2510,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2728:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":2519,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"2767:1:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2761:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2517,"name":"bytes","nodeType":"ElementaryTypeName","src":"2761:5:12","typeDescriptions":{}}},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2761:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2516,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2751:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2751:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2728:42:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2509,"id":2523,"nodeType":"Return","src":"2721:49:12"}]},"documentation":{"id":2501,"nodeType":"StructuredDocumentation","src":"2562:66:12","text":" @dev Returns true if the two strings are equal."},"id":2525,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2642:5:12","nodeType":"FunctionDefinition","parameters":{"id":2506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2503,"mutability":"mutable","name":"a","nameLocation":"2662:1:12","nodeType":"VariableDeclaration","scope":2525,"src":"2648:15:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2502,"name":"string","nodeType":"ElementaryTypeName","src":"2648:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2505,"mutability":"mutable","name":"b","nameLocation":"2679:1:12","nodeType":"VariableDeclaration","scope":2525,"src":"2665:15:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2504,"name":"string","nodeType":"ElementaryTypeName","src":"2665:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2647:34:12"},"returnParameters":{"id":2509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2508,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2525,"src":"2705:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2507,"name":"bool","nodeType":"ElementaryTypeName","src":"2705:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2704:6:12"},"scope":2526,"src":"2633:144:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2527,"src":"220:2559:12","usedErrors":[]}],"src":"101:2679:12"},"id":12},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[2550],"IERC165":[2562]},"id":2551,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2528,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:13"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":2529,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2551,"sourceUnit":2563,"src":"124:23:13","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2531,"name":"IERC165","nameLocations":["754:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":2562,"src":"754:7:13"},"id":2532,"nodeType":"InheritanceSpecifier","src":"754:7:13"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":2530,"nodeType":"StructuredDocumentation","src":"149:576:13","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":2550,"linearizedBaseContracts":[2550,2562],"name":"ERC165","nameLocation":"744:6:13","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2561],"body":{"id":2548,"nodeType":"Block","src":"920:64:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2541,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2535,"src":"937:11:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2543,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"957:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$2562_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$2562_$","typeString":"type(contract IERC165)"}],"id":2542,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"952:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"952:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$2562","typeString":"type(contract IERC165)"}},"id":2545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"966:11:13","memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2540,"id":2547,"nodeType":"Return","src":"930:47:13"}]},"documentation":{"id":2533,"nodeType":"StructuredDocumentation","src":"768:56:13","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2549,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:13","nodeType":"FunctionDefinition","overrides":{"id":2537,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:13"},"parameters":{"id":2536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2535,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:13","nodeType":"VariableDeclaration","scope":2549,"src":"856:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2534,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:13"},"returnParameters":{"id":2540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2549,"src":"914:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2538,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:13"},"scope":2550,"src":"829:155:13","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":2551,"src":"726:260:13","usedErrors":[]}],"src":"99:888:13"},"id":13},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[2562]},"id":2563,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2552,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:14"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":2553,"nodeType":"StructuredDocumentation","src":"125:279:14","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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":2562,"linearizedBaseContracts":[2562],"name":"IERC165","nameLocation":"415:7:14","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2554,"nodeType":"StructuredDocumentation","src":"429:340:14","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[EIP 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":2561,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:14","nodeType":"FunctionDefinition","parameters":{"id":2557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2556,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:14","nodeType":"VariableDeclaration","scope":2561,"src":"801:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2555,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:14","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:14"},"returnParameters":{"id":2560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2561,"src":"844:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2558,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:14"},"scope":2562,"src":"774:76:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2563,"src":"405:447:14","usedErrors":[]}],"src":"100:753:14"},"id":14},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[3428]},"id":3429,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2564,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:15"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":2565,"nodeType":"StructuredDocumentation","src":"128:73:15","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3428,"linearizedBaseContracts":[3428],"name":"Math","nameLocation":"210:4:15","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":2569,"members":[{"id":2566,"name":"Down","nameLocation":"245:4:15","nodeType":"EnumValue","src":"245:4:15"},{"id":2567,"name":"Up","nameLocation":"287:2:15","nodeType":"EnumValue","src":"287:2:15"},{"id":2568,"name":"Zero","nameLocation":"318:4:15","nodeType":"EnumValue","src":"318:4:15"}],"name":"Rounding","nameLocation":"226:8:15","nodeType":"EnumDefinition","src":"221:122:15"},{"body":{"id":2586,"nodeType":"Block","src":"480:37:15","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2579,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2572,"src":"497:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2580,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2574,"src":"501:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2583,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2574,"src":"509:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:13:15","trueExpression":{"id":2582,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2572,"src":"505:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2578,"id":2585,"nodeType":"Return","src":"490:20:15"}]},"documentation":{"id":2570,"nodeType":"StructuredDocumentation","src":"349:59:15","text":" @dev Returns the largest of two numbers."},"id":2587,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:15","nodeType":"FunctionDefinition","parameters":{"id":2575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2572,"mutability":"mutable","name":"a","nameLocation":"434:1:15","nodeType":"VariableDeclaration","scope":2587,"src":"426:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2571,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2574,"mutability":"mutable","name":"b","nameLocation":"445:1:15","nodeType":"VariableDeclaration","scope":2587,"src":"437:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2573,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:15"},"returnParameters":{"id":2578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2587,"src":"471:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2576,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:15"},"scope":3428,"src":"413:104:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2604,"nodeType":"Block","src":"655:37:15","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2597,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"672:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2598,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"676:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"672:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2601,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"684:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"672:13:15","trueExpression":{"id":2600,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"680:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2596,"id":2603,"nodeType":"Return","src":"665:20:15"}]},"documentation":{"id":2588,"nodeType":"StructuredDocumentation","src":"523:60:15","text":" @dev Returns the smallest of two numbers."},"id":2605,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"597:3:15","nodeType":"FunctionDefinition","parameters":{"id":2593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2590,"mutability":"mutable","name":"a","nameLocation":"609:1:15","nodeType":"VariableDeclaration","scope":2605,"src":"601:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2589,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2592,"mutability":"mutable","name":"b","nameLocation":"620:1:15","nodeType":"VariableDeclaration","scope":2605,"src":"612:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2591,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:15"},"returnParameters":{"id":2596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2595,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2605,"src":"646:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2594,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:15"},"scope":3428,"src":"588:104:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2627,"nodeType":"Block","src":"876:82:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2615,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2608,"src":"931:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2616,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"935:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2618,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2619,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2608,"src":"941:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2620,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"945:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2622,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"940:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":2623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"950:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"940:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"930:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2614,"id":2626,"nodeType":"Return","src":"923:28:15"}]},"documentation":{"id":2606,"nodeType":"StructuredDocumentation","src":"698:102:15","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":2628,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"814:7:15","nodeType":"FunctionDefinition","parameters":{"id":2611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2608,"mutability":"mutable","name":"a","nameLocation":"830:1:15","nodeType":"VariableDeclaration","scope":2628,"src":"822:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2607,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2610,"mutability":"mutable","name":"b","nameLocation":"841:1:15","nodeType":"VariableDeclaration","scope":2628,"src":"833:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2609,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:22:15"},"returnParameters":{"id":2614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2613,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2628,"src":"867:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2612,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"866:9:15"},"scope":3428,"src":"805:153:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2652,"nodeType":"Block","src":"1228:123:15","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2638,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"1316:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1316:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2642,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"1330:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2645,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1329:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2646,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"1339:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1329:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1316:28:15","trueExpression":{"hexValue":"30","id":2641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2637,"id":2651,"nodeType":"Return","src":"1309:35:15"}]},"documentation":{"id":2629,"nodeType":"StructuredDocumentation","src":"964:188:15","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":2653,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1166:7:15","nodeType":"FunctionDefinition","parameters":{"id":2634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2631,"mutability":"mutable","name":"a","nameLocation":"1182:1:15","nodeType":"VariableDeclaration","scope":2653,"src":"1174:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2630,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2633,"mutability":"mutable","name":"b","nameLocation":"1193:1:15","nodeType":"VariableDeclaration","scope":2653,"src":"1185:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2632,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:22:15"},"returnParameters":{"id":2637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2636,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2653,"src":"1219:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2635,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1218:9:15"},"scope":3428,"src":"1157:194:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2775,"nodeType":"Block","src":"1765:4115:15","statements":[{"id":2774,"nodeType":"UncheckedBlock","src":"1775:4099:15","statements":[{"assignments":[2666],"declarations":[{"constant":false,"id":2666,"mutability":"mutable","name":"prod0","nameLocation":"2104:5:15","nodeType":"VariableDeclaration","scope":2774,"src":"2096:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2665,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2667,"nodeType":"VariableDeclarationStatement","src":"2096:13:15"},{"assignments":[2669],"declarations":[{"constant":false,"id":2669,"mutability":"mutable","name":"prod1","nameLocation":"2176:5:15","nodeType":"VariableDeclaration","scope":2774,"src":"2168:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2668,"name":"uint256","nodeType":"ElementaryTypeName","src":"2168:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2670,"nodeType":"VariableDeclarationStatement","src":"2168:13:15"},{"AST":{"nodeType":"YulBlock","src":"2248:157:15","statements":[{"nodeType":"YulVariableDeclaration","src":"2266:30:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2283:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"2286:1:15"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2293:1:15","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2289:3:15"},"nodeType":"YulFunctionCall","src":"2289:6:15"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2276:6:15"},"nodeType":"YulFunctionCall","src":"2276:20:15"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2270:2:15","type":""}]},{"nodeType":"YulAssignment","src":"2313:18:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2326:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"2329:1:15"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2322:3:15"},"nodeType":"YulFunctionCall","src":"2322:9:15"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2313:5:15"}]},{"nodeType":"YulAssignment","src":"2348:43:15","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2365:2:15"},{"name":"prod0","nodeType":"YulIdentifier","src":"2369:5:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2361:3:15"},"nodeType":"YulFunctionCall","src":"2361:14:15"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2380:2:15"},{"name":"prod0","nodeType":"YulIdentifier","src":"2384:5:15"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2377:2:15"},"nodeType":"YulFunctionCall","src":"2377:13:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2357:3:15"},"nodeType":"YulFunctionCall","src":"2357:34:15"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2348:5:15"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2666,"isOffset":false,"isSlot":false,"src":"2313:5:15","valueSize":1},{"declaration":2666,"isOffset":false,"isSlot":false,"src":"2369:5:15","valueSize":1},{"declaration":2666,"isOffset":false,"isSlot":false,"src":"2384:5:15","valueSize":1},{"declaration":2669,"isOffset":false,"isSlot":false,"src":"2348:5:15","valueSize":1},{"declaration":2656,"isOffset":false,"isSlot":false,"src":"2283:1:15","valueSize":1},{"declaration":2656,"isOffset":false,"isSlot":false,"src":"2326:1:15","valueSize":1},{"declaration":2658,"isOffset":false,"isSlot":false,"src":"2286:1:15","valueSize":1},{"declaration":2658,"isOffset":false,"isSlot":false,"src":"2329:1:15","valueSize":1}],"id":2671,"nodeType":"InlineAssembly","src":"2239:166:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2672,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"2486:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2495:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2486:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2680,"nodeType":"IfStatement","src":"2482:368:15","trueBody":{"id":2679,"nodeType":"Block","src":"2498:352:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2675,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2666,"src":"2816:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2676,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"2824:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2816:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2664,"id":2678,"nodeType":"Return","src":"2809:26:15"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2682,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"2960:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2683,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"2974:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2960:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":2685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2981:23:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":2681,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2952:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2952:53:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2687,"nodeType":"ExpressionStatement","src":"2952:53:15"},{"assignments":[2689],"declarations":[{"constant":false,"id":2689,"mutability":"mutable","name":"remainder","nameLocation":"3269:9:15","nodeType":"VariableDeclaration","scope":2774,"src":"3261:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2688,"name":"uint256","nodeType":"ElementaryTypeName","src":"3261:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2690,"nodeType":"VariableDeclarationStatement","src":"3261:17:15"},{"AST":{"nodeType":"YulBlock","src":"3301:291:15","statements":[{"nodeType":"YulAssignment","src":"3370:38:15","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3390:1:15"},{"name":"y","nodeType":"YulIdentifier","src":"3393:1:15"},{"name":"denominator","nodeType":"YulIdentifier","src":"3396:11:15"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3383:6:15"},"nodeType":"YulFunctionCall","src":"3383:25:15"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3370:9:15"}]},{"nodeType":"YulAssignment","src":"3490:41:15","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3503:5:15"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3513:9:15"},{"name":"prod0","nodeType":"YulIdentifier","src":"3524:5:15"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3510:2:15"},"nodeType":"YulFunctionCall","src":"3510:20:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3499:3:15"},"nodeType":"YulFunctionCall","src":"3499:32:15"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3490:5:15"}]},{"nodeType":"YulAssignment","src":"3548:30:15","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3561:5:15"},{"name":"remainder","nodeType":"YulIdentifier","src":"3568:9:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3557:3:15"},"nodeType":"YulFunctionCall","src":"3557:21:15"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3548:5:15"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2660,"isOffset":false,"isSlot":false,"src":"3396:11:15","valueSize":1},{"declaration":2666,"isOffset":false,"isSlot":false,"src":"3524:5:15","valueSize":1},{"declaration":2666,"isOffset":false,"isSlot":false,"src":"3548:5:15","valueSize":1},{"declaration":2666,"isOffset":false,"isSlot":false,"src":"3561:5:15","valueSize":1},{"declaration":2669,"isOffset":false,"isSlot":false,"src":"3490:5:15","valueSize":1},{"declaration":2669,"isOffset":false,"isSlot":false,"src":"3503:5:15","valueSize":1},{"declaration":2689,"isOffset":false,"isSlot":false,"src":"3370:9:15","valueSize":1},{"declaration":2689,"isOffset":false,"isSlot":false,"src":"3513:9:15","valueSize":1},{"declaration":2689,"isOffset":false,"isSlot":false,"src":"3568:9:15","valueSize":1},{"declaration":2656,"isOffset":false,"isSlot":false,"src":"3390:1:15","valueSize":1},{"declaration":2658,"isOffset":false,"isSlot":false,"src":"3393:1:15","valueSize":1}],"id":2691,"nodeType":"InlineAssembly","src":"3292:300:15"},{"assignments":[2693],"declarations":[{"constant":false,"id":2693,"mutability":"mutable","name":"twos","nameLocation":"3907:4:15","nodeType":"VariableDeclaration","scope":2774,"src":"3899:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2692,"name":"uint256","nodeType":"ElementaryTypeName","src":"3899:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2701,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2694,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"3914:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3929:12:15","subExpression":{"id":2695,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"3930:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3944:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3929:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2699,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3928:18:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3914:32:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3899:47:15"},{"AST":{"nodeType":"YulBlock","src":"3969:362:15","statements":[{"nodeType":"YulAssignment","src":"4034:37:15","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4053:11:15"},{"name":"twos","nodeType":"YulIdentifier","src":"4066:4:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4049:3:15"},"nodeType":"YulFunctionCall","src":"4049:22:15"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4034:11:15"}]},{"nodeType":"YulAssignment","src":"4138:25:15","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4151:5:15"},{"name":"twos","nodeType":"YulIdentifier","src":"4158:4:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4147:3:15"},"nodeType":"YulFunctionCall","src":"4147:16:15"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4138:5:15"}]},{"nodeType":"YulAssignment","src":"4278:39:15","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4298:1:15","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4301:4:15"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4294:3:15"},"nodeType":"YulFunctionCall","src":"4294:12:15"},{"name":"twos","nodeType":"YulIdentifier","src":"4308:4:15"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4290:3:15"},"nodeType":"YulFunctionCall","src":"4290:23:15"},{"kind":"number","nodeType":"YulLiteral","src":"4315:1:15","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4286:3:15"},"nodeType":"YulFunctionCall","src":"4286:31:15"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4278:4:15"}]}]},"evmVersion":"london","externalReferences":[{"declaration":2660,"isOffset":false,"isSlot":false,"src":"4034:11:15","valueSize":1},{"declaration":2660,"isOffset":false,"isSlot":false,"src":"4053:11:15","valueSize":1},{"declaration":2666,"isOffset":false,"isSlot":false,"src":"4138:5:15","valueSize":1},{"declaration":2666,"isOffset":false,"isSlot":false,"src":"4151:5:15","valueSize":1},{"declaration":2693,"isOffset":false,"isSlot":false,"src":"4066:4:15","valueSize":1},{"declaration":2693,"isOffset":false,"isSlot":false,"src":"4158:4:15","valueSize":1},{"declaration":2693,"isOffset":false,"isSlot":false,"src":"4278:4:15","valueSize":1},{"declaration":2693,"isOffset":false,"isSlot":false,"src":"4301:4:15","valueSize":1},{"declaration":2693,"isOffset":false,"isSlot":false,"src":"4308:4:15","valueSize":1}],"id":2702,"nodeType":"InlineAssembly","src":"3960:371:15"},{"expression":{"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2703,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2666,"src":"4397:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2704,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"4406:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2705,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"4414:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4406:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4397:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2708,"nodeType":"ExpressionStatement","src":"4397:21:15"},{"assignments":[2710],"declarations":[{"constant":false,"id":2710,"mutability":"mutable","name":"inverse","nameLocation":"4744:7:15","nodeType":"VariableDeclaration","scope":2774,"src":"4736:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2709,"name":"uint256","nodeType":"ElementaryTypeName","src":"4736:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2717,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":2711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4755:1:15","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2712,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"4759:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4755:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2714,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4754:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":2715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4774:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4754:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4736:39:15"},{"expression":{"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2718,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"4992:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5003:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2720,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"5007:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2721,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5021:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5007:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4992:36:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2725,"nodeType":"ExpressionStatement","src":"4992:36:15"},{"expression":{"id":2732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2726,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5061:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5072:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2728,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"5076:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2729,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5090:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5076:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5061:36:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2733,"nodeType":"ExpressionStatement","src":"5061:36:15"},{"expression":{"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2734,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5131:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5142:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2736,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"5146:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2737,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5160:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5146:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5131:36:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2741,"nodeType":"ExpressionStatement","src":"5131:36:15"},{"expression":{"id":2748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2742,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5201:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5212:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2744,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"5216:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2745,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5230:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5216:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5201:36:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2749,"nodeType":"ExpressionStatement","src":"5201:36:15"},{"expression":{"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2750,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5271:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2752,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"5286:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2753,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5300:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5271:36:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2757,"nodeType":"ExpressionStatement","src":"5271:36:15"},{"expression":{"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2758,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5342:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5353:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2760,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"5357:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2761,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5371:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5357:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:25:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5342:36:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2765,"nodeType":"ExpressionStatement","src":"5342:36:15"},{"expression":{"id":2770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2766,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2663,"src":"5812:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2767,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2666,"src":"5821:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2768,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"5829:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5821:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5812:24:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2771,"nodeType":"ExpressionStatement","src":"5812:24:15"},{"expression":{"id":2772,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2663,"src":"5857:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2664,"id":2773,"nodeType":"Return","src":"5850:13:15"}]}]},"documentation":{"id":2654,"nodeType":"StructuredDocumentation","src":"1357:305:15","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":2776,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1676:6:15","nodeType":"FunctionDefinition","parameters":{"id":2661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2656,"mutability":"mutable","name":"x","nameLocation":"1691:1:15","nodeType":"VariableDeclaration","scope":2776,"src":"1683:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2655,"name":"uint256","nodeType":"ElementaryTypeName","src":"1683:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2658,"mutability":"mutable","name":"y","nameLocation":"1702:1:15","nodeType":"VariableDeclaration","scope":2776,"src":"1694:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2657,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2660,"mutability":"mutable","name":"denominator","nameLocation":"1713:11:15","nodeType":"VariableDeclaration","scope":2776,"src":"1705:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2659,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1682:43:15"},"returnParameters":{"id":2664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2663,"mutability":"mutable","name":"result","nameLocation":"1757:6:15","nodeType":"VariableDeclaration","scope":2776,"src":"1749:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2662,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1748:16:15"},"scope":3428,"src":"1667:4213:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2819,"nodeType":"Block","src":"6122:189:15","statements":[{"assignments":[2792],"declarations":[{"constant":false,"id":2792,"mutability":"mutable","name":"result","nameLocation":"6140:6:15","nodeType":"VariableDeclaration","scope":2819,"src":"6132:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2791,"name":"uint256","nodeType":"ElementaryTypeName","src":"6132:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2798,"initialValue":{"arguments":[{"id":2794,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"6156:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2795,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2781,"src":"6159:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2796,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6162:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2793,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[2776,2820],"referencedDeclaration":2776,"src":"6149:6:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6149:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6132:42:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"},"id":2802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2799,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"6188:8:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2800,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"6200:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2569_$","typeString":"type(enum Math.Rounding)"}},"id":2801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6209:2:15","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2567,"src":"6200:11:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"src":"6188:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2804,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"6222:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2805,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2781,"src":"6225:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2806,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2783,"src":"6228:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2803,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"6215:6:15","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6215:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6243:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6215:29:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6188:56:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2816,"nodeType":"IfStatement","src":"6184:98:15","trueBody":{"id":2815,"nodeType":"Block","src":"6246:36:15","statements":[{"expression":{"id":2813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2811,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2792,"src":"6260:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6270:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6260:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2814,"nodeType":"ExpressionStatement","src":"6260:11:15"}]}},{"expression":{"id":2817,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2792,"src":"6298:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2790,"id":2818,"nodeType":"Return","src":"6291:13:15"}]},"documentation":{"id":2777,"nodeType":"StructuredDocumentation","src":"5886:121:15","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":2820,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6021:6:15","nodeType":"FunctionDefinition","parameters":{"id":2787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2779,"mutability":"mutable","name":"x","nameLocation":"6036:1:15","nodeType":"VariableDeclaration","scope":2820,"src":"6028:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2778,"name":"uint256","nodeType":"ElementaryTypeName","src":"6028:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2781,"mutability":"mutable","name":"y","nameLocation":"6047:1:15","nodeType":"VariableDeclaration","scope":2820,"src":"6039:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2780,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2783,"mutability":"mutable","name":"denominator","nameLocation":"6058:11:15","nodeType":"VariableDeclaration","scope":2820,"src":"6050:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2782,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2786,"mutability":"mutable","name":"rounding","nameLocation":"6080:8:15","nodeType":"VariableDeclaration","scope":2820,"src":"6071:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"},"typeName":{"id":2785,"nodeType":"UserDefinedTypeName","pathNode":{"id":2784,"name":"Rounding","nameLocations":["6071:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"6071:8:15"},"referencedDeclaration":2569,"src":"6071:8:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"6027:62:15"},"returnParameters":{"id":2790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2820,"src":"6113:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2788,"name":"uint256","nodeType":"ElementaryTypeName","src":"6113:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6112:9:15"},"scope":3428,"src":"6012:299:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2931,"nodeType":"Block","src":"6587:1585:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2828,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"6601:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6606:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6601:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2834,"nodeType":"IfStatement","src":"6597:45:15","trueBody":{"id":2833,"nodeType":"Block","src":"6609:33:15","statements":[{"expression":{"hexValue":"30","id":2831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6630:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2827,"id":2832,"nodeType":"Return","src":"6623:8:15"}]}},{"assignments":[2836],"declarations":[{"constant":false,"id":2836,"mutability":"mutable","name":"result","nameLocation":"7329:6:15","nodeType":"VariableDeclaration","scope":2931,"src":"7321:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2835,"name":"uint256","nodeType":"ElementaryTypeName","src":"7321:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2845,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7338:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2839,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"7349:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2838,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[3100,3136],"referencedDeclaration":3100,"src":"7344:4:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7344:7:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7355:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7344:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2843,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7343:14:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7338:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7321:36:15"},{"id":2930,"nodeType":"UncheckedBlock","src":"7758:408:15","statements":[{"expression":{"id":2855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2846,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7782:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2847,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7792:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2848,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"7801:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2849,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7805:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7792:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2852,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7791:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7816:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7791:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7782:35:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2856,"nodeType":"ExpressionStatement","src":"7782:35:15"},{"expression":{"id":2866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2857,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7831:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2858,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7841:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2859,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"7850:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2860,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7854:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7850:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7841:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2863,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7840:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7865:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7840:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7831:35:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2867,"nodeType":"ExpressionStatement","src":"7831:35:15"},{"expression":{"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7880:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2869,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7890:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2870,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"7899:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2871,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7903:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7890:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2874,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7889:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7914:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7889:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7880:35:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2878,"nodeType":"ExpressionStatement","src":"7880:35:15"},{"expression":{"id":2888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2879,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7929:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2880,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7939:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2881,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"7948:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2882,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7952:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7948:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7939:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2885,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7938:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7938:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7929:35:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2889,"nodeType":"ExpressionStatement","src":"7929:35:15"},{"expression":{"id":2899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2890,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7978:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2891,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"7988:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2892,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"7997:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2893,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"8001:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7997:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7988:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2896,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7987:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8012:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7987:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7978:35:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2900,"nodeType":"ExpressionStatement","src":"7978:35:15"},{"expression":{"id":2910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2901,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"8027:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2902,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"8037:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2903,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"8046:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2904,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"8050:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8046:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8037:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2907,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8036:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8061:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8036:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8027:35:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2911,"nodeType":"ExpressionStatement","src":"8027:35:15"},{"expression":{"id":2921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2912,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"8076:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2913,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"8086:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2914,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"8095:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2915,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"8099:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8095:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8086:19:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2918,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8085:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8110:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8085:26:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8076:35:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2922,"nodeType":"ExpressionStatement","src":"8076:35:15"},{"expression":{"arguments":[{"id":2924,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"8136:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2925,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"8144:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2926,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2836,"src":"8148:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8144:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2923,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2605,"src":"8132:3:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2827,"id":2929,"nodeType":"Return","src":"8125:30:15"}]}]},"documentation":{"id":2821,"nodeType":"StructuredDocumentation","src":"6317:208:15","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":2932,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6539:4:15","nodeType":"FunctionDefinition","parameters":{"id":2824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2823,"mutability":"mutable","name":"a","nameLocation":"6552:1:15","nodeType":"VariableDeclaration","scope":2932,"src":"6544:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2822,"name":"uint256","nodeType":"ElementaryTypeName","src":"6544:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6543:11:15"},"returnParameters":{"id":2827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2826,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2932,"src":"6578:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2825,"name":"uint256","nodeType":"ElementaryTypeName","src":"6578:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6577:9:15"},"scope":3428,"src":"6530:1642:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2967,"nodeType":"Block","src":"8348:161:15","statements":[{"id":2966,"nodeType":"UncheckedBlock","src":"8358:145:15","statements":[{"assignments":[2944],"declarations":[{"constant":false,"id":2944,"mutability":"mutable","name":"result","nameLocation":"8390:6:15","nodeType":"VariableDeclaration","scope":2966,"src":"8382:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2943,"name":"uint256","nodeType":"ElementaryTypeName","src":"8382:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2948,"initialValue":{"arguments":[{"id":2946,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"8404:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2945,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2932,2968],"referencedDeclaration":2932,"src":"8399:4:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8399:7:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8382:24:15"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2949,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"8427:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"},"id":2953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2950,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"8437:8:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2951,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"8449:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2569_$","typeString":"type(enum Math.Rounding)"}},"id":2952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8458:2:15","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2567,"src":"8449:11:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"src":"8437:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2954,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"8464:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2955,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"8473:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:15:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2957,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2935,"src":"8482:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8437:46:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8490:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8437:54:15","trueExpression":{"hexValue":"31","id":2960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8486:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2963,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8436:56:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8427:65:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2942,"id":2965,"nodeType":"Return","src":"8420:72:15"}]}]},"documentation":{"id":2933,"nodeType":"StructuredDocumentation","src":"8178:89:15","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":2968,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8281:4:15","nodeType":"FunctionDefinition","parameters":{"id":2939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2935,"mutability":"mutable","name":"a","nameLocation":"8294:1:15","nodeType":"VariableDeclaration","scope":2968,"src":"8286:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2934,"name":"uint256","nodeType":"ElementaryTypeName","src":"8286:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2938,"mutability":"mutable","name":"rounding","nameLocation":"8306:8:15","nodeType":"VariableDeclaration","scope":2968,"src":"8297:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"},"typeName":{"id":2937,"nodeType":"UserDefinedTypeName","pathNode":{"id":2936,"name":"Rounding","nameLocations":["8297:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"8297:8:15"},"referencedDeclaration":2569,"src":"8297:8:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8285:30:15"},"returnParameters":{"id":2942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2941,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2968,"src":"8339:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2940,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8338:9:15"},"scope":3428,"src":"8272:237:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3099,"nodeType":"Block","src":"8694:922:15","statements":[{"assignments":[2977],"declarations":[{"constant":false,"id":2977,"mutability":"mutable","name":"result","nameLocation":"8712:6:15","nodeType":"VariableDeclaration","scope":3099,"src":"8704:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2976,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2979,"initialValue":{"hexValue":"30","id":2978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8721:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8704:18:15"},{"id":3096,"nodeType":"UncheckedBlock","src":"8732:855:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2980,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"8760:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8769:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8760:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8760:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2994,"nodeType":"IfStatement","src":"8756:99:15","trueBody":{"id":2993,"nodeType":"Block","src":"8778:77:15","statements":[{"expression":{"id":2987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2985,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"8796:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8796:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2988,"nodeType":"ExpressionStatement","src":"8796:13:15"},{"expression":{"id":2991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2989,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"8827:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8837:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8827:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2992,"nodeType":"ExpressionStatement","src":"8827:13:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2995,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"8872:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8881:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8872:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8886:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8872:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3009,"nodeType":"IfStatement","src":"8868:96:15","trueBody":{"id":3008,"nodeType":"Block","src":"8889:75:15","statements":[{"expression":{"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3000,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"8907:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8917:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8907:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3003,"nodeType":"ExpressionStatement","src":"8907:12:15"},{"expression":{"id":3006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3004,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"8937:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":3005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8947:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8937:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3007,"nodeType":"ExpressionStatement","src":"8937:12:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3010,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"8981:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8981:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8995:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8981:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3024,"nodeType":"IfStatement","src":"8977:96:15","trueBody":{"id":3023,"nodeType":"Block","src":"8998:75:15","statements":[{"expression":{"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3015,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"9016:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9026:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9016:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3018,"nodeType":"ExpressionStatement","src":"9016:12:15"},{"expression":{"id":3021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3019,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"9046:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":3020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9056:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9046:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3022,"nodeType":"ExpressionStatement","src":"9046:12:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3025,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"9090:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9090:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9104:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9090:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3039,"nodeType":"IfStatement","src":"9086:96:15","trueBody":{"id":3038,"nodeType":"Block","src":"9107:75:15","statements":[{"expression":{"id":3032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"9125:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9135:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9125:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3033,"nodeType":"ExpressionStatement","src":"9125:12:15"},{"expression":{"id":3036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3034,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"9155:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9155:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3037,"nodeType":"ExpressionStatement","src":"9155:12:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3040,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"9199:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9208:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9199:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9212:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9199:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3054,"nodeType":"IfStatement","src":"9195:93:15","trueBody":{"id":3053,"nodeType":"Block","src":"9215:73:15","statements":[{"expression":{"id":3047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3045,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"9233:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":3046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9243:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9233:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3048,"nodeType":"ExpressionStatement","src":"9233:11:15"},{"expression":{"id":3051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3049,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"9262:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9272:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9262:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3052,"nodeType":"ExpressionStatement","src":"9262:11:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3055,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"9305:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":3056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9314:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9305:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9318:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9305:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3069,"nodeType":"IfStatement","src":"9301:93:15","trueBody":{"id":3068,"nodeType":"Block","src":"9321:73:15","statements":[{"expression":{"id":3062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3060,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"9339:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":3061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9349:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9339:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3063,"nodeType":"ExpressionStatement","src":"9339:11:15"},{"expression":{"id":3066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3064,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"9368:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9378:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9368:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3067,"nodeType":"ExpressionStatement","src":"9368:11:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3070,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"9411:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9420:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9411:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9424:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9411:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3084,"nodeType":"IfStatement","src":"9407:93:15","trueBody":{"id":3083,"nodeType":"Block","src":"9427:73:15","statements":[{"expression":{"id":3077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"9445:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":3076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9455:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9445:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3078,"nodeType":"ExpressionStatement","src":"9445:11:15"},{"expression":{"id":3081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3079,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"9474:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9484:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9474:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3082,"nodeType":"ExpressionStatement","src":"9474:11:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3085,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"9517:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9526:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9517:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9530:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9517:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3095,"nodeType":"IfStatement","src":"9513:64:15","trueBody":{"id":3094,"nodeType":"Block","src":"9533:44:15","statements":[{"expression":{"id":3092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3090,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"9551:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9561:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9551:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3093,"nodeType":"ExpressionStatement","src":"9551:11:15"}]}}]},{"expression":{"id":3097,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"9603:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2975,"id":3098,"nodeType":"Return","src":"9596:13:15"}]},"documentation":{"id":2969,"nodeType":"StructuredDocumentation","src":"8515:113:15","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":3100,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8642:4:15","nodeType":"FunctionDefinition","parameters":{"id":2972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2971,"mutability":"mutable","name":"value","nameLocation":"8655:5:15","nodeType":"VariableDeclaration","scope":3100,"src":"8647:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2970,"name":"uint256","nodeType":"ElementaryTypeName","src":"8647:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8646:15:15"},"returnParameters":{"id":2975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2974,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3100,"src":"8685:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2973,"name":"uint256","nodeType":"ElementaryTypeName","src":"8685:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8684:9:15"},"scope":3428,"src":"8633:983:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3135,"nodeType":"Block","src":"9849:165:15","statements":[{"id":3134,"nodeType":"UncheckedBlock","src":"9859:149:15","statements":[{"assignments":[3112],"declarations":[{"constant":false,"id":3112,"mutability":"mutable","name":"result","nameLocation":"9891:6:15","nodeType":"VariableDeclaration","scope":3134,"src":"9883:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3111,"name":"uint256","nodeType":"ElementaryTypeName","src":"9883:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3116,"initialValue":{"arguments":[{"id":3114,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"9905:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3113,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[3100,3136],"referencedDeclaration":3100,"src":"9900:4:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9900:11:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9883:28:15"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3117,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3112,"src":"9932:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"},"id":3121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3118,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3106,"src":"9942:8:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3119,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"9954:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2569_$","typeString":"type(enum Math.Rounding)"}},"id":3120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9963:2:15","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2567,"src":"9954:11:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"src":"9942:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9969:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":3123,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3112,"src":"9974:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"9983:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9942:46:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9995:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9942:54:15","trueExpression":{"hexValue":"31","id":3128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9991:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3131,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9941:56:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9932:65:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3110,"id":3133,"nodeType":"Return","src":"9925:72:15"}]}]},"documentation":{"id":3101,"nodeType":"StructuredDocumentation","src":"9622:142:15","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3136,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9778:4:15","nodeType":"FunctionDefinition","parameters":{"id":3107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3103,"mutability":"mutable","name":"value","nameLocation":"9791:5:15","nodeType":"VariableDeclaration","scope":3136,"src":"9783:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3102,"name":"uint256","nodeType":"ElementaryTypeName","src":"9783:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3106,"mutability":"mutable","name":"rounding","nameLocation":"9807:8:15","nodeType":"VariableDeclaration","scope":3136,"src":"9798:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"},"typeName":{"id":3105,"nodeType":"UserDefinedTypeName","pathNode":{"id":3104,"name":"Rounding","nameLocations":["9798:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"9798:8:15"},"referencedDeclaration":2569,"src":"9798:8:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9782:34:15"},"returnParameters":{"id":3110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3136,"src":"9840:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3108,"name":"uint256","nodeType":"ElementaryTypeName","src":"9840:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9839:9:15"},"scope":3428,"src":"9769:245:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3264,"nodeType":"Block","src":"10201:854:15","statements":[{"assignments":[3145],"declarations":[{"constant":false,"id":3145,"mutability":"mutable","name":"result","nameLocation":"10219:6:15","nodeType":"VariableDeclaration","scope":3264,"src":"10211:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3144,"name":"uint256","nodeType":"ElementaryTypeName","src":"10211:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3147,"initialValue":{"hexValue":"30","id":3146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10228:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10211:18:15"},{"id":3261,"nodeType":"UncheckedBlock","src":"10239:787:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3148,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10267:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":3151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10276:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":3150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10282:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10276:8:15","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10267:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3164,"nodeType":"IfStatement","src":"10263:103:15","trueBody":{"id":3163,"nodeType":"Block","src":"10286:80:15","statements":[{"expression":{"id":3157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3153,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10304:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":3156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10313:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":3155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10313:8:15","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10304:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3158,"nodeType":"ExpressionStatement","src":"10304:17:15"},{"expression":{"id":3161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3159,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10339:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":3160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10349:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10339:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3162,"nodeType":"ExpressionStatement","src":"10339:12:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10383:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":3168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10392:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":3167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10398:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10392:8:15","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10383:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3181,"nodeType":"IfStatement","src":"10379:103:15","trueBody":{"id":3180,"nodeType":"Block","src":"10402:80:15","statements":[{"expression":{"id":3174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3170,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10420:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":3173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":3172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10435:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10429:8:15","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10420:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3175,"nodeType":"ExpressionStatement","src":"10420:17:15"},{"expression":{"id":3178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3176,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10455:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":3177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10465:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10455:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3179,"nodeType":"ExpressionStatement","src":"10455:12:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3182,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10499:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10508:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10514:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10508:8:15","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10499:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3198,"nodeType":"IfStatement","src":"10495:103:15","trueBody":{"id":3197,"nodeType":"Block","src":"10518:80:15","statements":[{"expression":{"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3187,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10536:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10545:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10551:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10545:8:15","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10536:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3192,"nodeType":"ExpressionStatement","src":"10536:17:15"},{"expression":{"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3193,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10571:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10581:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10571:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3196,"nodeType":"ExpressionStatement","src":"10571:12:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3199,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10615:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10624:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10630:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10624:7:15","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10615:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3215,"nodeType":"IfStatement","src":"10611:100:15","trueBody":{"id":3214,"nodeType":"Block","src":"10633:78:15","statements":[{"expression":{"id":3208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3204,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10651:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10660:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10666:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10660:7:15","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10651:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3209,"nodeType":"ExpressionStatement","src":"10651:16:15"},{"expression":{"id":3212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3210,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10685:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10695:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10685:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3213,"nodeType":"ExpressionStatement","src":"10685:11:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3216,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10728:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10737:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10743:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10737:7:15","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10728:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3232,"nodeType":"IfStatement","src":"10724:100:15","trueBody":{"id":3231,"nodeType":"Block","src":"10746:78:15","statements":[{"expression":{"id":3225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3221,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10764:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10773:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10779:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10773:7:15","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10764:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3226,"nodeType":"ExpressionStatement","src":"10764:16:15"},{"expression":{"id":3229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3227,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10798:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10808:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10798:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3230,"nodeType":"ExpressionStatement","src":"10798:11:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3233,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10841:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10850:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10856:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10850:7:15","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10841:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3249,"nodeType":"IfStatement","src":"10837:100:15","trueBody":{"id":3248,"nodeType":"Block","src":"10859:78:15","statements":[{"expression":{"id":3242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3238,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10877:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10886:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10892:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10886:7:15","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10877:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3243,"nodeType":"ExpressionStatement","src":"10877:16:15"},{"expression":{"id":3246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3244,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10911:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10921:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10911:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3247,"nodeType":"ExpressionStatement","src":"10911:11:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3250,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10954:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":3253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10963:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":3252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10969:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10963:7:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10954:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3260,"nodeType":"IfStatement","src":"10950:66:15","trueBody":{"id":3259,"nodeType":"Block","src":"10972:44:15","statements":[{"expression":{"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3255,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10990:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11000:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10990:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3258,"nodeType":"ExpressionStatement","src":"10990:11:15"}]}}]},{"expression":{"id":3262,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"11042:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3143,"id":3263,"nodeType":"Return","src":"11035:13:15"}]},"documentation":{"id":3137,"nodeType":"StructuredDocumentation","src":"10020:114:15","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":3265,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10148:5:15","nodeType":"FunctionDefinition","parameters":{"id":3140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3139,"mutability":"mutable","name":"value","nameLocation":"10162:5:15","nodeType":"VariableDeclaration","scope":3265,"src":"10154:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3138,"name":"uint256","nodeType":"ElementaryTypeName","src":"10154:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10153:15:15"},"returnParameters":{"id":3143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3265,"src":"10192:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3141,"name":"uint256","nodeType":"ElementaryTypeName","src":"10192:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10191:9:15"},"scope":3428,"src":"10139:916:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3300,"nodeType":"Block","src":"11290:167:15","statements":[{"id":3299,"nodeType":"UncheckedBlock","src":"11300:151:15","statements":[{"assignments":[3277],"declarations":[{"constant":false,"id":3277,"mutability":"mutable","name":"result","nameLocation":"11332:6:15","nodeType":"VariableDeclaration","scope":3299,"src":"11324:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3276,"name":"uint256","nodeType":"ElementaryTypeName","src":"11324:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3281,"initialValue":{"arguments":[{"id":3279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3268,"src":"11347:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3278,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[3265,3301],"referencedDeclaration":3265,"src":"11341:5:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11341:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11324:29:15"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3282,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"11374:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3283,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3271,"src":"11384:8:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3284,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"11396:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2569_$","typeString":"type(enum Math.Rounding)"}},"id":3285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11405:2:15","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2567,"src":"11396:11:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"src":"11384:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11411:2:15","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":3288,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"11417:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3290,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3268,"src":"11426:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11384:47:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11438:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11384:55:15","trueExpression":{"hexValue":"31","id":3293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11434:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3296,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11383:57:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11374:66:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3275,"id":3298,"nodeType":"Return","src":"11367:73:15"}]}]},"documentation":{"id":3266,"nodeType":"StructuredDocumentation","src":"11061:143:15","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3301,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11218:5:15","nodeType":"FunctionDefinition","parameters":{"id":3272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3268,"mutability":"mutable","name":"value","nameLocation":"11232:5:15","nodeType":"VariableDeclaration","scope":3301,"src":"11224:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3267,"name":"uint256","nodeType":"ElementaryTypeName","src":"11224:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3271,"mutability":"mutable","name":"rounding","nameLocation":"11248:8:15","nodeType":"VariableDeclaration","scope":3301,"src":"11239:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"},"typeName":{"id":3270,"nodeType":"UserDefinedTypeName","pathNode":{"id":3269,"name":"Rounding","nameLocations":["11239:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"11239:8:15"},"referencedDeclaration":2569,"src":"11239:8:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11223:34:15"},"returnParameters":{"id":3275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3274,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3301,"src":"11281:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3273,"name":"uint256","nodeType":"ElementaryTypeName","src":"11281:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11280:9:15"},"scope":3428,"src":"11209:248:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3387,"nodeType":"Block","src":"11771:600:15","statements":[{"assignments":[3310],"declarations":[{"constant":false,"id":3310,"mutability":"mutable","name":"result","nameLocation":"11789:6:15","nodeType":"VariableDeclaration","scope":3387,"src":"11781:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3309,"name":"uint256","nodeType":"ElementaryTypeName","src":"11781:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3312,"initialValue":{"hexValue":"30","id":3311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11798:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11781:18:15"},{"id":3384,"nodeType":"UncheckedBlock","src":"11809:533:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3313,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"11837:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":3314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11846:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11837:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11852:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11837:16:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3327,"nodeType":"IfStatement","src":"11833:98:15","trueBody":{"id":3326,"nodeType":"Block","src":"11855:76:15","statements":[{"expression":{"id":3320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3318,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"11873:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":3319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11883:3:15","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11873:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3321,"nodeType":"ExpressionStatement","src":"11873:13:15"},{"expression":{"id":3324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3322,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3310,"src":"11904:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11914:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11904:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3325,"nodeType":"ExpressionStatement","src":"11904:12:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3328,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"11948:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":3329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11957:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11948:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11962:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11948:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3342,"nodeType":"IfStatement","src":"11944:95:15","trueBody":{"id":3341,"nodeType":"Block","src":"11965:74:15","statements":[{"expression":{"id":3335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3333,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"11983:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11993:2:15","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11983:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3336,"nodeType":"ExpressionStatement","src":"11983:12:15"},{"expression":{"id":3339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3337,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3310,"src":"12013:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12023:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12013:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3340,"nodeType":"ExpressionStatement","src":"12013:11:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"12056:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12065:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12056:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12070:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12056:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3357,"nodeType":"IfStatement","src":"12052:95:15","trueBody":{"id":3356,"nodeType":"Block","src":"12073:74:15","statements":[{"expression":{"id":3350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"12091:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12101:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12091:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3351,"nodeType":"ExpressionStatement","src":"12091:12:15"},{"expression":{"id":3354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3352,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3310,"src":"12121:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12131:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12121:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3355,"nodeType":"ExpressionStatement","src":"12121:11:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3358,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"12164:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12173:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12164:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12178:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12164:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3372,"nodeType":"IfStatement","src":"12160:95:15","trueBody":{"id":3371,"nodeType":"Block","src":"12181:74:15","statements":[{"expression":{"id":3365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3363,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"12199:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12209:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12199:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3366,"nodeType":"ExpressionStatement","src":"12199:12:15"},{"expression":{"id":3369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3367,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3310,"src":"12229:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12239:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12229:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3370,"nodeType":"ExpressionStatement","src":"12229:11:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3373,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"12272:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12281:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12272:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12272:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3383,"nodeType":"IfStatement","src":"12268:64:15","trueBody":{"id":3382,"nodeType":"Block","src":"12288:44:15","statements":[{"expression":{"id":3380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3378,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3310,"src":"12306:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12306:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3381,"nodeType":"ExpressionStatement","src":"12306:11:15"}]}}]},{"expression":{"id":3385,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3310,"src":"12358:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3308,"id":3386,"nodeType":"Return","src":"12351:13:15"}]},"documentation":{"id":3302,"nodeType":"StructuredDocumentation","src":"11463:240:15","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":3388,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11717:6:15","nodeType":"FunctionDefinition","parameters":{"id":3305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3304,"mutability":"mutable","name":"value","nameLocation":"11732:5:15","nodeType":"VariableDeclaration","scope":3388,"src":"11724:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3303,"name":"uint256","nodeType":"ElementaryTypeName","src":"11724:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11723:15:15"},"returnParameters":{"id":3308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3307,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3388,"src":"11762:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3306,"name":"uint256","nodeType":"ElementaryTypeName","src":"11762:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11761:9:15"},"scope":3428,"src":"11708:663:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3426,"nodeType":"Block","src":"12608:174:15","statements":[{"id":3425,"nodeType":"UncheckedBlock","src":"12618:158:15","statements":[{"assignments":[3400],"declarations":[{"constant":false,"id":3400,"mutability":"mutable","name":"result","nameLocation":"12650:6:15","nodeType":"VariableDeclaration","scope":3425,"src":"12642:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3399,"name":"uint256","nodeType":"ElementaryTypeName","src":"12642:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3404,"initialValue":{"arguments":[{"id":3402,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3391,"src":"12666:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3401,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[3388,3427],"referencedDeclaration":3388,"src":"12659:6:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12659:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12642:30:15"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3405,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"12693:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3406,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3394,"src":"12703:8:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3407,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"12715:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2569_$","typeString":"type(enum Math.Rounding)"}},"id":3408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12724:2:15","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2567,"src":"12715:11:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"src":"12703:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12730:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3411,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"12736:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":3412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12746:1:15","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12736:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3414,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12735:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:18:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3391,"src":"12751:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12703:53:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12703:61:15","trueExpression":{"hexValue":"31","id":3419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12759:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3422,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12702:63:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12693:72:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3398,"id":3424,"nodeType":"Return","src":"12686:79:15"}]}]},"documentation":{"id":3389,"nodeType":"StructuredDocumentation","src":"12377:144:15","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3427,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12535:6:15","nodeType":"FunctionDefinition","parameters":{"id":3395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3391,"mutability":"mutable","name":"value","nameLocation":"12550:5:15","nodeType":"VariableDeclaration","scope":3427,"src":"12542:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3390,"name":"uint256","nodeType":"ElementaryTypeName","src":"12542:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3394,"mutability":"mutable","name":"rounding","nameLocation":"12566:8:15","nodeType":"VariableDeclaration","scope":3427,"src":"12557:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"},"typeName":{"id":3393,"nodeType":"UserDefinedTypeName","pathNode":{"id":3392,"name":"Rounding","nameLocations":["12557:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":2569,"src":"12557:8:15"},"referencedDeclaration":2569,"src":"12557:8:15","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2569","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12541:34:15"},"returnParameters":{"id":3398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3397,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3427,"src":"12599:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3396,"name":"uint256","nodeType":"ElementaryTypeName","src":"12599:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12598:9:15"},"scope":3428,"src":"12526:256:15","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3429,"src":"202:12582:15","usedErrors":[]}],"src":"103:12682:15"},"id":15},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SignedMath":[3533]},"id":3534,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3430,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:16"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":3431,"nodeType":"StructuredDocumentation","src":"134:80:16","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3533,"linearizedBaseContracts":[3533],"name":"SignedMath","nameLocation":"223:10:16","nodeType":"ContractDefinition","nodes":[{"body":{"id":3448,"nodeType":"Block","src":"375:37:16","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3441,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"392:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3442,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3436,"src":"396:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"392:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3445,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3436,"src":"404:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"392:13:16","trueExpression":{"id":3444,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3434,"src":"400:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3440,"id":3447,"nodeType":"Return","src":"385:20:16"}]},"documentation":{"id":3432,"nodeType":"StructuredDocumentation","src":"240:66:16","text":" @dev Returns the largest of two signed numbers."},"id":3449,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"320:3:16","nodeType":"FunctionDefinition","parameters":{"id":3437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3434,"mutability":"mutable","name":"a","nameLocation":"331:1:16","nodeType":"VariableDeclaration","scope":3449,"src":"324:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3433,"name":"int256","nodeType":"ElementaryTypeName","src":"324:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3436,"mutability":"mutable","name":"b","nameLocation":"341:1:16","nodeType":"VariableDeclaration","scope":3449,"src":"334:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3435,"name":"int256","nodeType":"ElementaryTypeName","src":"334:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"323:20:16"},"returnParameters":{"id":3440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3439,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3449,"src":"367:6:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3438,"name":"int256","nodeType":"ElementaryTypeName","src":"367:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"366:8:16"},"scope":3533,"src":"311:101:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3466,"nodeType":"Block","src":"554:37:16","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3459,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3452,"src":"571:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3460,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3454,"src":"575:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"571:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3463,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3454,"src":"583:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"571:13:16","trueExpression":{"id":3462,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3452,"src":"579:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3458,"id":3465,"nodeType":"Return","src":"564:20:16"}]},"documentation":{"id":3450,"nodeType":"StructuredDocumentation","src":"418:67:16","text":" @dev Returns the smallest of two signed numbers."},"id":3467,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"499:3:16","nodeType":"FunctionDefinition","parameters":{"id":3455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3452,"mutability":"mutable","name":"a","nameLocation":"510:1:16","nodeType":"VariableDeclaration","scope":3467,"src":"503:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3451,"name":"int256","nodeType":"ElementaryTypeName","src":"503:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3454,"mutability":"mutable","name":"b","nameLocation":"520:1:16","nodeType":"VariableDeclaration","scope":3467,"src":"513:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3453,"name":"int256","nodeType":"ElementaryTypeName","src":"513:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"502:20:16"},"returnParameters":{"id":3458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3467,"src":"546:6:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3456,"name":"int256","nodeType":"ElementaryTypeName","src":"546:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"545:8:16"},"scope":3533,"src":"490:101:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3510,"nodeType":"Block","src":"796:162:16","statements":[{"assignments":[3478],"declarations":[{"constant":false,"id":3478,"mutability":"mutable","name":"x","nameLocation":"865:1:16","nodeType":"VariableDeclaration","scope":3510,"src":"858:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3477,"name":"int256","nodeType":"ElementaryTypeName","src":"858:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3491,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3479,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3470,"src":"870:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3480,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3472,"src":"874:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:5:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3482,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"869:7:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3483,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3470,"src":"881:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3484,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3472,"src":"885:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3486,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"891:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"880:12:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3489,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"879:14:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"869:24:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"858:35:16"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3492,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3478,"src":"910:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3497,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3478,"src":"930:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"922:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3495,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:16","typeDescriptions":{}}},"id":3498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"922:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":3499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:3:16","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"922:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:6:16","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":3493,"name":"int256","nodeType":"ElementaryTypeName","src":"915:6:16","typeDescriptions":{}}},"id":3501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"915:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3502,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3470,"src":"944:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3503,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3472,"src":"948:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"944:5:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3505,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"943:7:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"915:35:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3507,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"914:37:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"910:41:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3476,"id":3509,"nodeType":"Return","src":"903:48:16"}]},"documentation":{"id":3468,"nodeType":"StructuredDocumentation","src":"597:126:16","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":3511,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"737:7:16","nodeType":"FunctionDefinition","parameters":{"id":3473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3470,"mutability":"mutable","name":"a","nameLocation":"752:1:16","nodeType":"VariableDeclaration","scope":3511,"src":"745:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3469,"name":"int256","nodeType":"ElementaryTypeName","src":"745:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3472,"mutability":"mutable","name":"b","nameLocation":"762:1:16","nodeType":"VariableDeclaration","scope":3511,"src":"755:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3471,"name":"int256","nodeType":"ElementaryTypeName","src":"755:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"744:20:16"},"returnParameters":{"id":3476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3511,"src":"788:6:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3474,"name":"int256","nodeType":"ElementaryTypeName","src":"788:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"787:8:16"},"scope":3533,"src":"728:230:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3531,"nodeType":"Block","src":"1102:158:16","statements":[{"id":3530,"nodeType":"UncheckedBlock","src":"1112:142:16","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3521,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"1227:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":3522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1227:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1240:2:16","subExpression":{"id":3525,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"1241:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1227:15:16","trueExpression":{"id":3524,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"1236:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1219:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3519,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:16","typeDescriptions":{}}},"id":3528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1219:24:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3518,"id":3529,"nodeType":"Return","src":"1212:31:16"}]}]},"documentation":{"id":3512,"nodeType":"StructuredDocumentation","src":"964:78:16","text":" @dev Returns the absolute unsigned value of a signed value."},"id":3532,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1056:3:16","nodeType":"FunctionDefinition","parameters":{"id":3515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3514,"mutability":"mutable","name":"n","nameLocation":"1067:1:16","nodeType":"VariableDeclaration","scope":3532,"src":"1060:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3513,"name":"int256","nodeType":"ElementaryTypeName","src":"1060:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1059:10:16"},"returnParameters":{"id":3518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3517,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3532,"src":"1093:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3516,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1092:9:16"},"scope":3533,"src":"1047:213:16","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3534,"src":"215:1047:16","usedErrors":[]}],"src":"109:1154:16"},"id":16},"contracts/Account.sol":{"ast":{"absolutePath":"contracts/Account.sol","exportedSymbols":{"Account":[4122],"AccountLocked":[3548],"ERC6551AccountLib":[4656],"ExceedsMaxLockTime":[3550],"IERC1155Receiver":[167],"IERC1271":[126],"IERC165":[2562],"IERC6551Account":[4566],"IERC6551AccountProxy":[4528],"IERC721":[1900],"IERC721Receiver":[1918],"InvalidInput":[3546],"NotAuthorized":[3544],"OwnershipCycle":[3554],"UntrustedImplementation":[3552]},"id":4123,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3535,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:17"},{"absolutePath":"contracts/interfaces/IERC6551Account.sol","file":"./interfaces/IERC6551Account.sol","id":3536,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4123,"sourceUnit":4567,"src":"65:42:17","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/ERC6551AccountLib.sol","file":"./lib/ERC6551AccountLib.sol","id":3537,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4123,"sourceUnit":4657,"src":"108:37:17","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":3538,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4123,"sourceUnit":2563,"src":"147:65:17","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":3539,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4123,"sourceUnit":1901,"src":"213:58:17","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":3540,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4123,"sourceUnit":1919,"src":"272:66:17","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","file":"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol","id":3541,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4123,"sourceUnit":168,"src":"339:68:17","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","file":"@openzeppelin/contracts/interfaces/IERC1271.sol","id":3542,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4123,"sourceUnit":127,"src":"408:57:17","symbolAliases":[],"unitAlias":""},{"errorSelector":"ea8e4eb5","id":3544,"name":"NotAuthorized","nameLocation":"473:13:17","nodeType":"ErrorDefinition","parameters":{"id":3543,"nodeType":"ParameterList","parameters":[],"src":"486:2:17"},"src":"467:22:17"},{"errorSelector":"b4fa3fb3","id":3546,"name":"InvalidInput","nameLocation":"496:12:17","nodeType":"ErrorDefinition","parameters":{"id":3545,"nodeType":"ParameterList","parameters":[],"src":"508:2:17"},"src":"490:21:17"},{"errorSelector":"6315bfbb","id":3548,"name":"AccountLocked","nameLocation":"518:13:17","nodeType":"ErrorDefinition","parameters":{"id":3547,"nodeType":"ParameterList","parameters":[],"src":"531:2:17"},"src":"512:22:17"},{"errorSelector":"0c0a7be8","id":3550,"name":"ExceedsMaxLockTime","nameLocation":"541:18:17","nodeType":"ErrorDefinition","parameters":{"id":3549,"nodeType":"ParameterList","parameters":[],"src":"559:2:17"},"src":"535:27:17"},{"errorSelector":"b57d5a5e","id":3552,"name":"UntrustedImplementation","nameLocation":"569:23:17","nodeType":"ErrorDefinition","parameters":{"id":3551,"nodeType":"ParameterList","parameters":[],"src":"592:2:17"},"src":"563:32:17"},{"errorSelector":"b79e3f3f","id":3554,"name":"OwnershipCycle","nameLocation":"602:14:17","nodeType":"ErrorDefinition","parameters":{"id":3553,"nodeType":"ParameterList","parameters":[],"src":"616:2:17"},"src":"596:23:17"},{"abstract":false,"baseContracts":[{"baseName":{"id":3556,"name":"IERC165","nameLocations":["719:7:17"],"nodeType":"IdentifierPath","referencedDeclaration":2562,"src":"719:7:17"},"id":3557,"nodeType":"InheritanceSpecifier","src":"719:7:17"},{"baseName":{"id":3558,"name":"IERC6551Account","nameLocations":["732:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":4566,"src":"732:15:17"},"id":3559,"nodeType":"InheritanceSpecifier","src":"732:15:17"},{"baseName":{"id":3560,"name":"IERC721Receiver","nameLocations":["753:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":1918,"src":"753:15:17"},"id":3561,"nodeType":"InheritanceSpecifier","src":"753:15:17"},{"baseName":{"id":3562,"name":"IERC1155Receiver","nameLocations":["774:16:17"],"nodeType":"IdentifierPath","referencedDeclaration":167,"src":"774:16:17"},"id":3563,"nodeType":"InheritanceSpecifier","src":"774:16:17"}],"canonicalName":"Account","contractDependencies":[],"contractKind":"contract","documentation":{"id":3555,"nodeType":"StructuredDocumentation","src":"621:73:17","text":" @title A smart contract account owned by a single ERC721 token"},"fullyImplemented":true,"id":4122,"linearizedBaseContracts":[4122,167,1918,4566,2562],"name":"Account","nameLocation":"704:7:17","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":3564,"nodeType":"StructuredDocumentation","src":"797:57:17","text":"@dev timestamp at which this account will be unlocked"},"functionSelector":"ce0617ec","id":3566,"mutability":"mutable","name":"lockedUntil","nameLocation":"874:11:17","nodeType":"VariableDeclaration","scope":4122,"src":"859:26:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3565,"name":"uint256","nodeType":"ElementaryTypeName","src":"859:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"documentation":{"id":3567,"nodeType":"StructuredDocumentation","src":"892:56:17","text":"@dev mapping from owner => caller => has permissions"},"functionSelector":"1f9838b5","id":3573,"mutability":"mutable","name":"permissions","nameLocation":"1005:11:17","nodeType":"VariableDeclaration","scope":4122,"src":"953:63:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":3572,"keyType":{"id":3568,"name":"address","nodeType":"ElementaryTypeName","src":"961:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"953:44:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":3571,"keyType":{"id":3569,"name":"address","nodeType":"ElementaryTypeName","src":"980:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"972:24:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":3570,"name":"bool","nodeType":"ElementaryTypeName","src":"991:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"public"},{"anonymous":false,"eventSelector":"2c722487e90aca38ec1b074c3403210bd2bfb769b4da7f12f7bf0b9e37517c18","id":3581,"name":"OverrideUpdated","nameLocation":"1029:15:17","nodeType":"EventDefinition","parameters":{"id":3580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3575,"indexed":false,"mutability":"mutable","name":"owner","nameLocation":"1062:5:17","nodeType":"VariableDeclaration","scope":3581,"src":"1054:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3574,"name":"address","nodeType":"ElementaryTypeName","src":"1054:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3577,"indexed":false,"mutability":"mutable","name":"selector","nameLocation":"1084:8:17","nodeType":"VariableDeclaration","scope":3581,"src":"1077:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3576,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1077:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":3579,"indexed":false,"mutability":"mutable","name":"implementation","nameLocation":"1110:14:17","nodeType":"VariableDeclaration","scope":3581,"src":"1102:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3578,"name":"address","nodeType":"ElementaryTypeName","src":"1102:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1044:86:17"},"src":"1023:108:17"},{"anonymous":false,"eventSelector":"394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5","id":3589,"name":"PermissionUpdated","nameLocation":"1143:17:17","nodeType":"EventDefinition","parameters":{"id":3588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3583,"indexed":false,"mutability":"mutable","name":"owner","nameLocation":"1169:5:17","nodeType":"VariableDeclaration","scope":3589,"src":"1161:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3582,"name":"address","nodeType":"ElementaryTypeName","src":"1161:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3585,"indexed":false,"mutability":"mutable","name":"caller","nameLocation":"1184:6:17","nodeType":"VariableDeclaration","scope":3589,"src":"1176:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3584,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3587,"indexed":false,"mutability":"mutable","name":"hasPermission","nameLocation":"1197:13:17","nodeType":"VariableDeclaration","scope":3589,"src":"1192:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3586,"name":"bool","nodeType":"ElementaryTypeName","src":"1192:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1160:51:17"},"src":"1137:75:17"},{"anonymous":false,"eventSelector":"a7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad","id":3593,"name":"LockUpdated","nameLocation":"1224:11:17","nodeType":"EventDefinition","parameters":{"id":3592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3591,"indexed":false,"mutability":"mutable","name":"lockedUntil","nameLocation":"1244:11:17","nodeType":"VariableDeclaration","scope":3593,"src":"1236:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3590,"name":"uint256","nodeType":"ElementaryTypeName","src":"1236:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1235:21:17"},"src":"1218:39:17"},{"body":{"id":3606,"nodeType":"Block","src":"1347:77:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3596,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1361:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1365:6:17","memberName":"sender","nodeType":"MemberAccess","src":"1361:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3598,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"1375:5:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1375:7:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1361:21:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3604,"nodeType":"IfStatement","src":"1357:49:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3601,"name":"NotAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"1391:13:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1391:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3603,"nodeType":"RevertStatement","src":"1384:22:17"}},{"id":3605,"nodeType":"PlaceholderStatement","src":"1416:1:17"}]},"documentation":{"id":3594,"nodeType":"StructuredDocumentation","src":"1263:58:17","text":"@dev reverts if caller is not the owner of the account"},"id":3607,"name":"onlyOwner","nameLocation":"1335:9:17","nodeType":"ModifierDefinition","parameters":{"id":3595,"nodeType":"ParameterList","parameters":[],"src":"1344:2:17"},"src":"1326:98:17","virtual":false,"visibility":"internal"},{"body":{"id":3620,"nodeType":"Block","src":"1532:81:17","statements":[{"condition":{"id":3614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1546:25:17","subExpression":{"arguments":[{"expression":{"id":3611,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1560:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1564:6:17","memberName":"sender","nodeType":"MemberAccess","src":"1560:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3610,"name":"isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"1547:12:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":3613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1547:24:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3618,"nodeType":"IfStatement","src":"1542:53:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3615,"name":"NotAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"1580:13:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1580:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3617,"nodeType":"RevertStatement","src":"1573:22:17"}},{"id":3619,"nodeType":"PlaceholderStatement","src":"1605:1:17"}]},"documentation":{"id":3608,"nodeType":"StructuredDocumentation","src":"1430:71:17","text":"@dev reverts if caller is not authorized to execute on this account"},"id":3621,"name":"onlyAuthorized","nameLocation":"1515:14:17","nodeType":"ModifierDefinition","parameters":{"id":3609,"nodeType":"ParameterList","parameters":[],"src":"1529:2:17"},"src":"1506:107:17","virtual":false,"visibility":"internal"},{"body":{"id":3631,"nodeType":"Block","src":"1700:66:17","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":3624,"name":"isLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3787,"src":"1714:8:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":3625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1714:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3629,"nodeType":"IfStatement","src":"1710:38:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3626,"name":"AccountLocked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3548,"src":"1733:13:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1733:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3628,"nodeType":"RevertStatement","src":"1726:22:17"}},{"id":3630,"nodeType":"PlaceholderStatement","src":"1758:1:17"}]},"documentation":{"id":3622,"nodeType":"StructuredDocumentation","src":"1619:52:17","text":"@dev reverts if this account is currently locked"},"id":3632,"name":"onlyUnlocked","nameLocation":"1685:12:17","nodeType":"ModifierDefinition","parameters":{"id":3623,"nodeType":"ParameterList","parameters":[],"src":"1697:2:17"},"src":"1676:90:17","virtual":false,"visibility":"internal"},{"body":{"id":3635,"nodeType":"Block","src":"1786:2:17","statements":[]},"id":3636,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3633,"nodeType":"ParameterList","parameters":[],"src":"1783:2:17"},"returnParameters":{"id":3634,"nodeType":"ParameterList","parameters":[],"src":"1786:0:17"},"scope":4122,"src":"1772:16:17","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4540],"body":{"id":3640,"nodeType":"Block","src":"1904:7:17","statements":[]},"documentation":{"id":3637,"nodeType":"StructuredDocumentation","src":"1794:78:17","text":"@dev allows eth transfers by default, but allows account owner to override"},"id":3641,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3638,"nodeType":"ParameterList","parameters":[],"src":"1884:2:17"},"returnParameters":{"id":3639,"nodeType":"ParameterList","parameters":[],"src":"1904:0:17"},"scope":4122,"src":"1877:34:17","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4551],"body":{"id":3672,"nodeType":"Block","src":"2208:98:17","statements":[{"eventCall":{"arguments":[{"id":3661,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3644,"src":"2243:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3662,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"2247:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3663,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3648,"src":"2254:4:17","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3660,"name":"TransactionExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4537,"src":"2223:19:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":3664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2223:36:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3665,"nodeType":"EmitStatement","src":"2218:41:17"},{"expression":{"arguments":[{"id":3667,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3644,"src":"2283:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3668,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"2287:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3669,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3648,"src":"2294:4:17","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3666,"name":"_call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4042,"src":"2277:5:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,uint256,bytes calldata) returns (bytes memory)"}},"id":3670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2277:22:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":3659,"id":3671,"nodeType":"Return","src":"2270:29:17"}]},"documentation":{"id":3642,"nodeType":"StructuredDocumentation","src":"1917:95:17","text":"@dev executes a low-level call against an account if the caller is authorized to make calls"},"functionSelector":"9e5d4c49","id":3673,"implemented":true,"kind":"function","modifiers":[{"id":3651,"kind":"modifierInvocation","modifierName":{"id":3650,"name":"onlyAuthorized","nameLocations":["2133:14:17"],"nodeType":"IdentifierPath","referencedDeclaration":3621,"src":"2133:14:17"},"nodeType":"ModifierInvocation","src":"2133:14:17"},{"id":3653,"kind":"modifierInvocation","modifierName":{"id":3652,"name":"onlyUnlocked","nameLocations":["2148:12:17"],"nodeType":"IdentifierPath","referencedDeclaration":3632,"src":"2148:12:17"},"nodeType":"ModifierInvocation","src":"2148:12:17"},{"arguments":[{"id":3655,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3648,"src":"2179:4:17","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":3656,"kind":"modifierInvocation","modifierName":{"id":3654,"name":"onlyAllowedMethod","nameLocations":["2161:17:17"],"nodeType":"IdentifierPath","referencedDeclaration":4121,"src":"2161:17:17"},"nodeType":"ModifierInvocation","src":"2161:23:17"}],"name":"executeCall","nameLocation":"2026:11:17","nodeType":"FunctionDefinition","parameters":{"id":3649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3644,"mutability":"mutable","name":"to","nameLocation":"2055:2:17","nodeType":"VariableDeclaration","scope":3673,"src":"2047:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3643,"name":"address","nodeType":"ElementaryTypeName","src":"2047:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3646,"mutability":"mutable","name":"value","nameLocation":"2075:5:17","nodeType":"VariableDeclaration","scope":3673,"src":"2067:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3645,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3648,"mutability":"mutable","name":"data","nameLocation":"2105:4:17","nodeType":"VariableDeclaration","scope":3673,"src":"2090:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3647,"name":"bytes","nodeType":"ElementaryTypeName","src":"2090:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2037:78:17"},"returnParameters":{"id":3659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3658,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3673,"src":"2194:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3657,"name":"bytes","nodeType":"ElementaryTypeName","src":"2194:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2193:14:17"},"scope":4122,"src":"2017:289:17","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":3745,"nodeType":"Block","src":"2495:402:17","statements":[{"assignments":[3686],"declarations":[{"constant":false,"id":3686,"mutability":"mutable","name":"_owner","nameLocation":"2513:6:17","nodeType":"VariableDeclaration","scope":3745,"src":"2505:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3685,"name":"address","nodeType":"ElementaryTypeName","src":"2505:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3689,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3687,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"2522:5:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2522:7:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2505:24:17"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3690,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2543:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2547:6:17","memberName":"sender","nodeType":"MemberAccess","src":"2543:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3692,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"2557:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2543:20:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3697,"nodeType":"IfStatement","src":"2539:48:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3694,"name":"NotAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"2572:13:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2572:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3696,"nodeType":"RevertStatement","src":"2565:22:17"}},{"assignments":[3699],"declarations":[{"constant":false,"id":3699,"mutability":"mutable","name":"length","nameLocation":"2606:6:17","nodeType":"VariableDeclaration","scope":3745,"src":"2598:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3698,"name":"uint256","nodeType":"ElementaryTypeName","src":"2598:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3702,"initialValue":{"expression":{"id":3700,"name":"callers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3677,"src":"2615:7:17","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2623:6:17","memberName":"length","nodeType":"MemberAccess","src":"2615:14:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2598:31:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3703,"name":"_permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"2644:12:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[] calldata"}},"id":3704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2657:6:17","memberName":"length","nodeType":"MemberAccess","src":"2644:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3705,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3699,"src":"2667:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2644:29:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3710,"nodeType":"IfStatement","src":"2640:56:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3707,"name":"InvalidInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3546,"src":"2682:12:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2682:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3709,"nodeType":"RevertStatement","src":"2675:21:17"}},{"body":{"id":3743,"nodeType":"Block","src":"2744:147:17","statements":[{"expression":{"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":3721,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3573,"src":"2758:11:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":3726,"indexExpression":{"id":3722,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"2770:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2758:19:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3727,"indexExpression":{"baseExpression":{"id":3723,"name":"callers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3677,"src":"2778:7:17","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3725,"indexExpression":{"id":3724,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"2786:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2778:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2758:31:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":3728,"name":"_permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"2792:12:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[] calldata"}},"id":3730,"indexExpression":{"id":3729,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"2805:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2792:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2758:49:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3732,"nodeType":"ExpressionStatement","src":"2758:49:17"},{"eventCall":{"arguments":[{"id":3734,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"2844:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3735,"name":"callers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3677,"src":"2852:7:17","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3737,"indexExpression":{"id":3736,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"2860:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2852:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3738,"name":"_permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3680,"src":"2864:12:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[] calldata"}},"id":3740,"indexExpression":{"id":3739,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"2877:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2864:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3733,"name":"PermissionUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"2826:17:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":3741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2826:54:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3742,"nodeType":"EmitStatement","src":"2821:59:17"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3715,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"2727:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3716,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3699,"src":"2731:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2727:10:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3744,"initializationExpression":{"assignments":[3712],"declarations":[{"constant":false,"id":3712,"mutability":"mutable","name":"i","nameLocation":"2720:1:17","nodeType":"VariableDeclaration","scope":3744,"src":"2712:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3711,"name":"uint256","nodeType":"ElementaryTypeName","src":"2712:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3714,"initialValue":{"hexValue":"30","id":3713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2724:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2712:13:17"},"loopExpression":{"expression":{"id":3719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2739:3:17","subExpression":{"id":3718,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"2739:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3720,"nodeType":"ExpressionStatement","src":"2739:3:17"},"nodeType":"ForStatement","src":"2707:184:17"}]},"documentation":{"id":3674,"nodeType":"StructuredDocumentation","src":"2312:52:17","text":"@dev grants a given caller execution permissions"},"functionSelector":"039721b1","id":3746,"implemented":true,"kind":"function","modifiers":[{"id":3683,"kind":"modifierInvocation","modifierName":{"id":3682,"name":"onlyUnlocked","nameLocations":["2482:12:17"],"nodeType":"IdentifierPath","referencedDeclaration":3632,"src":"2482:12:17"},"nodeType":"ModifierInvocation","src":"2482:12:17"}],"name":"setPermissions","nameLocation":"2378:14:17","nodeType":"FunctionDefinition","parameters":{"id":3681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3677,"mutability":"mutable","name":"callers","nameLocation":"2421:7:17","nodeType":"VariableDeclaration","scope":3746,"src":"2402:26:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3675,"name":"address","nodeType":"ElementaryTypeName","src":"2402:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3676,"nodeType":"ArrayTypeName","src":"2402:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3680,"mutability":"mutable","name":"_permissions","nameLocation":"2454:12:17","nodeType":"VariableDeclaration","scope":3746,"src":"2438:28:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_calldata_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":3678,"name":"bool","nodeType":"ElementaryTypeName","src":"2438:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3679,"nodeType":"ArrayTypeName","src":"2438:6:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"2392:80:17"},"returnParameters":{"id":3684,"nodeType":"ParameterList","parameters":[],"src":"2495:0:17"},"scope":4122,"src":"2369:528:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3774,"nodeType":"Block","src":"3028:181:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3756,"name":"_lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"3042:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3757,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3057:5:17","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3063:9:17","memberName":"timestamp","nodeType":"MemberAccess","src":"3057:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"333635","id":3759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3075:8:17","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_31536000_by_1","typeString":"int_const 31536000"},"value":"365"},"src":"3057:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3042:41:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3765,"nodeType":"IfStatement","src":"3038:86:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3762,"name":"ExceedsMaxLockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"3104:18:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3104:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3764,"nodeType":"RevertStatement","src":"3097:27:17"}},{"expression":{"id":3768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3766,"name":"lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"3135:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3767,"name":"_lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"3149:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3135:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3769,"nodeType":"ExpressionStatement","src":"3135:26:17"},{"eventCall":{"arguments":[{"id":3771,"name":"_lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"3189:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3770,"name":"LockUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"3177:11:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":3772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3177:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3773,"nodeType":"EmitStatement","src":"3172:30:17"}]},"documentation":{"id":3747,"nodeType":"StructuredDocumentation","src":"2903:52:17","text":"@dev locks the account until a certain timestamp"},"functionSelector":"dd467064","id":3775,"implemented":true,"kind":"function","modifiers":[{"id":3752,"kind":"modifierInvocation","modifierName":{"id":3751,"name":"onlyOwner","nameLocations":["3005:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":3607,"src":"3005:9:17"},"nodeType":"ModifierInvocation","src":"3005:9:17"},{"id":3754,"kind":"modifierInvocation","modifierName":{"id":3753,"name":"onlyUnlocked","nameLocations":["3015:12:17"],"nodeType":"IdentifierPath","referencedDeclaration":3632,"src":"3015:12:17"},"nodeType":"ModifierInvocation","src":"3015:12:17"}],"name":"lock","nameLocation":"2969:4:17","nodeType":"FunctionDefinition","parameters":{"id":3750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3749,"mutability":"mutable","name":"_lockedUntil","nameLocation":"2982:12:17","nodeType":"VariableDeclaration","scope":3775,"src":"2974:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3748,"name":"uint256","nodeType":"ElementaryTypeName","src":"2974:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2973:22:17"},"returnParameters":{"id":3755,"nodeType":"ParameterList","parameters":[],"src":"3028:0:17"},"scope":4122,"src":"2960:249:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3786,"nodeType":"Block","src":"3335:53:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3781,"name":"lockedUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"3352:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":3782,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3366:5:17","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3372:9:17","memberName":"timestamp","nodeType":"MemberAccess","src":"3366:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3352:29:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3780,"id":3785,"nodeType":"Return","src":"3345:36:17"}]},"documentation":{"id":3776,"nodeType":"StructuredDocumentation","src":"3215:68:17","text":"@dev returns the current lock status of the account as a boolean"},"functionSelector":"a4e2d634","id":3787,"implemented":true,"kind":"function","modifiers":[],"name":"isLocked","nameLocation":"3297:8:17","nodeType":"FunctionDefinition","parameters":{"id":3777,"nodeType":"ParameterList","parameters":[],"src":"3305:2:17"},"returnParameters":{"id":3780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3779,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3787,"src":"3329:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3778,"name":"bool","nodeType":"ElementaryTypeName","src":"3329:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3328:6:17"},"scope":4122,"src":"3288:100:17","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4560],"body":{"id":3801,"nodeType":"Block","src":"3691:49:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3797,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4656,"src":"3708:17:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$4656_$","typeString":"type(library ERC6551AccountLib)"}},"id":3798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3726:5:17","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4633,"src":"3708:23:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":3799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3708:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"functionReturnParameters":3796,"id":3800,"nodeType":"Return","src":"3701:32:17"}]},"documentation":{"id":3788,"nodeType":"StructuredDocumentation","src":"3394:121:17","text":"@dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\n owns this account."},"functionSelector":"fc0c546a","id":3802,"implemented":true,"kind":"function","modifiers":[],"name":"token","nameLocation":"3529:5:17","nodeType":"FunctionDefinition","parameters":{"id":3789,"nodeType":"ParameterList","parameters":[],"src":"3534:2:17"},"returnParameters":{"id":3796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3791,"mutability":"mutable","name":"chainId","nameLocation":"3605:7:17","nodeType":"VariableDeclaration","scope":3802,"src":"3597:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3790,"name":"uint256","nodeType":"ElementaryTypeName","src":"3597:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3793,"mutability":"mutable","name":"tokenContract","nameLocation":"3634:13:17","nodeType":"VariableDeclaration","scope":3802,"src":"3626:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3792,"name":"address","nodeType":"ElementaryTypeName","src":"3626:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3795,"mutability":"mutable","name":"tokenId","nameLocation":"3669:7:17","nodeType":"VariableDeclaration","scope":3802,"src":"3661:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3794,"name":"uint256","nodeType":"ElementaryTypeName","src":"3661:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3583:103:17"},"scope":4122,"src":"3520:220:17","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4565],"body":{"id":3835,"nodeType":"Block","src":"3950:263:17","statements":[{"assignments":[3809,3811,3813],"declarations":[{"constant":false,"id":3809,"mutability":"mutable","name":"chainId","nameLocation":"3982:7:17","nodeType":"VariableDeclaration","scope":3835,"src":"3974:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3808,"name":"uint256","nodeType":"ElementaryTypeName","src":"3974:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3811,"mutability":"mutable","name":"tokenContract","nameLocation":"4011:13:17","nodeType":"VariableDeclaration","scope":3835,"src":"4003:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3810,"name":"address","nodeType":"ElementaryTypeName","src":"4003:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3813,"mutability":"mutable","name":"tokenId","nameLocation":"4046:7:17","nodeType":"VariableDeclaration","scope":3835,"src":"4038:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3812,"name":"uint256","nodeType":"ElementaryTypeName","src":"4038:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3817,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3814,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4656,"src":"4066:17:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$4656_$","typeString":"type(library ERC6551AccountLib)"}},"id":3815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4084:5:17","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4633,"src":"4066:23:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":3816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4066:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3960:131:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3818,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3809,"src":"4106:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3819,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4117:5:17","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4123:7:17","memberName":"chainid","nodeType":"MemberAccess","src":"4117:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4106:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3827,"nodeType":"IfStatement","src":"4102:47:17","trueBody":{"expression":{"arguments":[{"hexValue":"30","id":3824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4147:1:17","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":3823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4139:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3822,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:17","typeDescriptions":{}}},"id":3825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4139:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3807,"id":3826,"nodeType":"Return","src":"4132:17:17"}},{"expression":{"arguments":[{"id":3832,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"4198:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3829,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"4175:13:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3828,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"4167:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1900_$","typeString":"type(contract IERC721)"}},"id":3830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4167:22:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$1900","typeString":"contract IERC721"}},"id":3831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4190:7:17","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1833,"src":"4167:30:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":3833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4167:39:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3807,"id":3834,"nodeType":"Return","src":"4160:46:17"}]},"documentation":{"id":3803,"nodeType":"StructuredDocumentation","src":"3746:152:17","text":"@dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\n of the token has full permissions on the account."},"functionSelector":"8da5cb5b","id":3836,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"3912:5:17","nodeType":"FunctionDefinition","parameters":{"id":3804,"nodeType":"ParameterList","parameters":[],"src":"3917:2:17"},"returnParameters":{"id":3807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3836,"src":"3941:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3805,"name":"address","nodeType":"ElementaryTypeName","src":"3941:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3940:9:17"},"scope":4122,"src":"3903:310:17","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3877,"nodeType":"Block","src":"4349:415:17","statements":[{"assignments":[null,3845,3847],"declarations":[null,{"constant":false,"id":3845,"mutability":"mutable","name":"tokenContract","nameLocation":"4395:13:17","nodeType":"VariableDeclaration","scope":3877,"src":"4387:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3844,"name":"address","nodeType":"ElementaryTypeName","src":"4387:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3847,"mutability":"mutable","name":"tokenId","nameLocation":"4430:7:17","nodeType":"VariableDeclaration","scope":3877,"src":"4422:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3846,"name":"uint256","nodeType":"ElementaryTypeName","src":"4422:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3851,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3848,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4656,"src":"4450:17:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$4656_$","typeString":"type(library ERC6551AccountLib)"}},"id":3849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4468:5:17","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4633,"src":"4450:23:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4450:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4359:116:17"},{"assignments":[3853],"declarations":[{"constant":false,"id":3853,"mutability":"mutable","name":"_owner","nameLocation":"4493:6:17","nodeType":"VariableDeclaration","scope":3877,"src":"4485:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3852,"name":"address","nodeType":"ElementaryTypeName","src":"4485:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3860,"initialValue":{"arguments":[{"id":3858,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3847,"src":"4533:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3855,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"4510:13:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3854,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"4502:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1900_$","typeString":"type(contract IERC721)"}},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4502:22:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$1900","typeString":"contract IERC721"}},"id":3857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4525:7:17","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1833,"src":"4502:30:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":3859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4502:39:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4485:56:17"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3861,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3839,"src":"4589:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3862,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3853,"src":"4599:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4589:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3866,"nodeType":"IfStatement","src":"4585:33:17","trueBody":{"expression":{"hexValue":"74727565","id":3864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4614:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3843,"id":3865,"nodeType":"Return","src":"4607:11:17"}},{"condition":{"baseExpression":{"baseExpression":{"id":3867,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3573,"src":"4694:11:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":3869,"indexExpression":{"id":3868,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3853,"src":"4706:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4694:19:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3871,"indexExpression":{"id":3870,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3839,"src":"4714:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4694:27:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3874,"nodeType":"IfStatement","src":"4690:44:17","trueBody":{"expression":{"hexValue":"74727565","id":3872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4730:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3843,"id":3873,"nodeType":"Return","src":"4723:11:17"}},{"expression":{"hexValue":"66616c7365","id":3875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4752:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3843,"id":3876,"nodeType":"Return","src":"4745:12:17"}]},"documentation":{"id":3837,"nodeType":"StructuredDocumentation","src":"4219:60:17","text":"@dev Returns the authorization status for a given caller"},"functionSelector":"fe9fbb80","id":3878,"implemented":true,"kind":"function","modifiers":[],"name":"isAuthorized","nameLocation":"4293:12:17","nodeType":"FunctionDefinition","parameters":{"id":3840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3839,"mutability":"mutable","name":"caller","nameLocation":"4314:6:17","nodeType":"VariableDeclaration","scope":3878,"src":"4306:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3838,"name":"address","nodeType":"ElementaryTypeName","src":"4306:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4305:16:17"},"returnParameters":{"id":3843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3878,"src":"4343:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3841,"name":"bool","nodeType":"ElementaryTypeName","src":"4343:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4342:6:17"},"scope":4122,"src":"4284:480:17","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2561],"body":{"id":3916,"nodeType":"Block","src":"5021:273:17","statements":[{"assignments":[3888],"declarations":[{"constant":false,"id":3888,"mutability":"mutable","name":"defaultSupport","nameLocation":"5036:14:17","nodeType":"VariableDeclaration","scope":3916,"src":"5031:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3887,"name":"bool","nodeType":"ElementaryTypeName","src":"5031:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":3909,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3889,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3881,"src":"5053:11:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3891,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"5073:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$2562_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$2562_$","typeString":"type(contract IERC165)"}],"id":3890,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5068:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5068:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$2562","typeString":"type(contract IERC165)"}},"id":3893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5082:11:17","memberName":"interfaceId","nodeType":"MemberAccess","src":"5068:25:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5053:40:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3895,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3881,"src":"5109:11:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3897,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":167,"src":"5129:16:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$167_$","typeString":"type(contract IERC1155Receiver)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC1155Receiver_$167_$","typeString":"type(contract IERC1155Receiver)"}],"id":3896,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5124:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5124:22:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC1155Receiver_$167","typeString":"type(contract IERC1155Receiver)"}},"id":3899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5147:11:17","memberName":"interfaceId","nodeType":"MemberAccess","src":"5124:34:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5109:49:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5053:105:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3902,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3881,"src":"5174:11:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3904,"name":"IERC6551Account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"5194:15:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$4566_$","typeString":"type(contract IERC6551Account)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$4566_$","typeString":"type(contract IERC6551Account)"}],"id":3903,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5189:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5189:21:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC6551Account_$4566","typeString":"type(contract IERC6551Account)"}},"id":3906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5211:11:17","memberName":"interfaceId","nodeType":"MemberAccess","src":"5189:33:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5174:48:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5053:169:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5031:191:17"},{"condition":{"id":3910,"name":"defaultSupport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"5237:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3913,"nodeType":"IfStatement","src":"5233:31:17","trueBody":{"expression":{"hexValue":"74727565","id":3911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5260:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3886,"id":3912,"nodeType":"Return","src":"5253:11:17"}},{"expression":{"hexValue":"66616c7365","id":3914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5282:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3886,"id":3915,"nodeType":"Return","src":"5275:12:17"}]},"documentation":{"id":3879,"nodeType":"StructuredDocumentation","src":"4770:126:17","text":"@dev Returns true if a given interfaceId is supported by this account. This method can be\n extended by an override."},"functionSelector":"01ffc9a7","id":3917,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"4910:17:17","nodeType":"FunctionDefinition","overrides":{"id":3883,"nodeType":"OverrideSpecifier","overrides":[],"src":"4985:8:17"},"parameters":{"id":3882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3881,"mutability":"mutable","name":"interfaceId","nameLocation":"4935:11:17","nodeType":"VariableDeclaration","scope":3917,"src":"4928:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3880,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4928:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4927:20:17"},"returnParameters":{"id":3886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3917,"src":"5011:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3884,"name":"bool","nodeType":"ElementaryTypeName","src":"5011:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5010:6:17"},"scope":4122,"src":"4901:393:17","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[1917],"body":{"id":3963,"nodeType":"Block","src":"5598:367:17","statements":[{"assignments":[3933,3935,3937],"declarations":[{"constant":false,"id":3933,"mutability":"mutable","name":"chainId","nameLocation":"5630:7:17","nodeType":"VariableDeclaration","scope":3963,"src":"5622:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3932,"name":"uint256","nodeType":"ElementaryTypeName","src":"5622:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3935,"mutability":"mutable","name":"tokenContract","nameLocation":"5659:13:17","nodeType":"VariableDeclaration","scope":3963,"src":"5651:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3934,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3937,"mutability":"mutable","name":"tokenId","nameLocation":"5694:7:17","nodeType":"VariableDeclaration","scope":3963,"src":"5686:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3936,"name":"uint256","nodeType":"ElementaryTypeName","src":"5686:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3941,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3938,"name":"ERC6551AccountLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4656,"src":"5714:17:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC6551AccountLib_$4656_$","typeString":"type(library ERC6551AccountLib)"}},"id":3939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5732:5:17","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":4633,"src":"5714:23:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view returns (uint256,address,uint256)"}},"id":3940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5714:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5608:131:17"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3942,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3933,"src":"5767:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3943,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5778:5:17","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5784:7:17","memberName":"chainid","nodeType":"MemberAccess","src":"5778:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5767:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3946,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3935,"src":"5807:13:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3947,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5824:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5828:6:17","memberName":"sender","nodeType":"MemberAccess","src":"5824:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5807:27:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5767:67:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3951,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3937,"src":"5850:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3952,"name":"receivedTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3924,"src":"5861:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5850:26:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5767:109:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3958,"nodeType":"IfStatement","src":"5750:160:17","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3955,"name":"OwnershipCycle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3554,"src":"5894:14:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5894:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3957,"nodeType":"RevertStatement","src":"5887:23:17"}},{"expression":{"expression":{"expression":{"id":3959,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5928:4:17","typeDescriptions":{"typeIdentifier":"t_contract$_Account_$4122","typeString":"contract Account"}},"id":3960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5933:16:17","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":3964,"src":"5928:21:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) view external returns (bytes4)"}},"id":3961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5950:8:17","memberName":"selector","nodeType":"MemberAccess","src":"5928:30:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":3931,"id":3962,"nodeType":"Return","src":"5921:37:17"}]},"documentation":{"id":3918,"nodeType":"StructuredDocumentation","src":"5300:134:17","text":"@dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\n This function can be overriden."},"functionSelector":"150b7a02","id":3964,"implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"5448:16:17","nodeType":"FunctionDefinition","overrides":{"id":3928,"nodeType":"OverrideSpecifier","overrides":[],"src":"5572:8:17"},"parameters":{"id":3927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3920,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3964,"src":"5474:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3919,"name":"address","nodeType":"ElementaryTypeName","src":"5474:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3964,"src":"5491:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3921,"name":"address","nodeType":"ElementaryTypeName","src":"5491:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3924,"mutability":"mutable","name":"receivedTokenId","nameLocation":"5516:15:17","nodeType":"VariableDeclaration","scope":3964,"src":"5508:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3923,"name":"uint256","nodeType":"ElementaryTypeName","src":"5508:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3926,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3964,"src":"5541:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3925,"name":"bytes","nodeType":"ElementaryTypeName","src":"5541:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5464:95:17"},"returnParameters":{"id":3931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3964,"src":"5590:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3929,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5590:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5589:8:17"},"scope":4122,"src":"5439:526:17","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[148],"body":{"id":3985,"nodeType":"Block","src":"6216:55:17","statements":[{"expression":{"expression":{"expression":{"id":3981,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6233:4:17","typeDescriptions":{"typeIdentifier":"t_contract$_Account_$4122","typeString":"contract Account"}},"id":3982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6238:17:17","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":3986,"src":"6233:22:17","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,uint256,bytes memory) pure external returns (bytes4)"}},"id":3983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6256:8:17","memberName":"selector","nodeType":"MemberAccess","src":"6233:31:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":3980,"id":3984,"nodeType":"Return","src":"6226:38:17"}]},"documentation":{"id":3965,"nodeType":"StructuredDocumentation","src":"5971:79:17","text":"@dev Allows ERC-1155 tokens to be received. This function can be overriden."},"functionSelector":"f23a6e61","id":3986,"implemented":true,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"6064:17:17","nodeType":"FunctionDefinition","overrides":{"id":3977,"nodeType":"OverrideSpecifier","overrides":[],"src":"6190:8:17"},"parameters":{"id":3976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3986,"src":"6091:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3966,"name":"address","nodeType":"ElementaryTypeName","src":"6091:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3969,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3986,"src":"6108:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3968,"name":"address","nodeType":"ElementaryTypeName","src":"6108:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3986,"src":"6125:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3970,"name":"uint256","nodeType":"ElementaryTypeName","src":"6125:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3973,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3986,"src":"6142:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3972,"name":"uint256","nodeType":"ElementaryTypeName","src":"6142:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3986,"src":"6159:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3974,"name":"bytes","nodeType":"ElementaryTypeName","src":"6159:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6081:96:17"},"returnParameters":{"id":3980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3979,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3986,"src":"6208:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3978,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6208:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6207:8:17"},"scope":4122,"src":"6055:216:17","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[166],"body":{"id":4009,"nodeType":"Block","src":"6552:60:17","statements":[{"expression":{"expression":{"expression":{"id":4005,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6569:4:17","typeDescriptions":{"typeIdentifier":"t_contract$_Account_$4122","typeString":"contract Account"}},"id":4006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6574:22:17","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":4010,"src":"6569:27:17","typeDescriptions":{"typeIdentifier":"t_function_external_pure$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256[] memory,uint256[] memory,bytes memory) pure external returns (bytes4)"}},"id":4007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6597:8:17","memberName":"selector","nodeType":"MemberAccess","src":"6569:36:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":4004,"id":4008,"nodeType":"Return","src":"6562:43:17"}]},"documentation":{"id":3987,"nodeType":"StructuredDocumentation","src":"6277:86:17","text":"@dev Allows ERC-1155 token batches to be received. This function can be overriden."},"functionSelector":"bc197c81","id":4010,"implemented":true,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"6377:22:17","nodeType":"FunctionDefinition","overrides":{"id":4001,"nodeType":"OverrideSpecifier","overrides":[],"src":"6526:8:17"},"parameters":{"id":4000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3989,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4010,"src":"6409:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3988,"name":"address","nodeType":"ElementaryTypeName","src":"6409:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4010,"src":"6426:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3990,"name":"address","nodeType":"ElementaryTypeName","src":"6426:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4010,"src":"6443:16:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3992,"name":"uint256","nodeType":"ElementaryTypeName","src":"6443:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3993,"nodeType":"ArrayTypeName","src":"6443:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3997,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4010,"src":"6469:16:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3995,"name":"uint256","nodeType":"ElementaryTypeName","src":"6469:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3996,"nodeType":"ArrayTypeName","src":"6469:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3999,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4010,"src":"6495:12:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3998,"name":"bytes","nodeType":"ElementaryTypeName","src":"6495:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6399:114:17"},"returnParameters":{"id":4004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4003,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4010,"src":"6544:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4002,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6544:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6543:8:17"},"scope":4122,"src":"6368:244:17","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":4041,"nodeType":"Block","src":"6789:213:17","statements":[{"assignments":[4023],"declarations":[{"constant":false,"id":4023,"mutability":"mutable","name":"success","nameLocation":"6804:7:17","nodeType":"VariableDeclaration","scope":4041,"src":"6799:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4022,"name":"bool","nodeType":"ElementaryTypeName","src":"6799:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4024,"nodeType":"VariableDeclarationStatement","src":"6799:12:17"},{"expression":{"id":4034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4025,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"6822:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4026,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4020,"src":"6831:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4027,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6821:17:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4032,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4017,"src":"6863:4:17","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":4028,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4013,"src":"6841:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6844:4:17","memberName":"call","nodeType":"MemberAccess","src":"6841:7:17","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":4031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":4030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4015,"src":"6856:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"6841:21:17","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":4033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6841:27:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"6821:47:17","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4035,"nodeType":"ExpressionStatement","src":"6821:47:17"},{"condition":{"id":4037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6883:8:17","subExpression":{"id":4036,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"6884:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4040,"nodeType":"IfStatement","src":"6879:117:17","trueBody":{"id":4039,"nodeType":"Block","src":"6893:103:17","statements":[{"AST":{"nodeType":"YulBlock","src":"6916:70:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"6945:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"6953:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6941:3:17"},"nodeType":"YulFunctionCall","src":"6941:15:17"},{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"6964:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6958:5:17"},"nodeType":"YulFunctionCall","src":"6958:13:17"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6934:6:17"},"nodeType":"YulFunctionCall","src":"6934:38:17"},"nodeType":"YulExpressionStatement","src":"6934:38:17"}]},"evmVersion":"london","externalReferences":[{"declaration":4020,"isOffset":false,"isSlot":false,"src":"6945:6:17","valueSize":1},{"declaration":4020,"isOffset":false,"isSlot":false,"src":"6964:6:17","valueSize":1}],"id":4038,"nodeType":"InlineAssembly","src":"6907:79:17"}]}}]},"documentation":{"id":4011,"nodeType":"StructuredDocumentation","src":"6618:34:17","text":"@dev Executes a low-level call"},"id":4042,"implemented":true,"kind":"function","modifiers":[],"name":"_call","nameLocation":"6666:5:17","nodeType":"FunctionDefinition","parameters":{"id":4018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4013,"mutability":"mutable","name":"to","nameLocation":"6689:2:17","nodeType":"VariableDeclaration","scope":4042,"src":"6681:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4012,"name":"address","nodeType":"ElementaryTypeName","src":"6681:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4015,"mutability":"mutable","name":"value","nameLocation":"6709:5:17","nodeType":"VariableDeclaration","scope":4042,"src":"6701:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4014,"name":"uint256","nodeType":"ElementaryTypeName","src":"6701:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4017,"mutability":"mutable","name":"data","nameLocation":"6739:4:17","nodeType":"VariableDeclaration","scope":4042,"src":"6724:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4016,"name":"bytes","nodeType":"ElementaryTypeName","src":"6724:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6671:78:17"},"returnParameters":{"id":4021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4020,"mutability":"mutable","name":"result","nameLocation":"6781:6:17","nodeType":"VariableDeclaration","scope":4042,"src":"6768:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4019,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:21:17"},"scope":4122,"src":"6657:345:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4069,"nodeType":"Block","src":"7180:205:17","statements":[{"assignments":[4053],"declarations":[{"constant":false,"id":4053,"mutability":"mutable","name":"success","nameLocation":"7195:7:17","nodeType":"VariableDeclaration","scope":4069,"src":"7190:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4052,"name":"bool","nodeType":"ElementaryTypeName","src":"7190:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4054,"nodeType":"VariableDeclarationStatement","src":"7190:12:17"},{"expression":{"id":4062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4055,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4053,"src":"7213:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4056,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4050,"src":"7222:6:17","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4057,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7212:17:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4060,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4047,"src":"7246:4:17","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":4058,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4045,"src":"7232:2:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7235:10:17","memberName":"staticcall","nodeType":"MemberAccess","src":"7232:13:17","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":4061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7232:19:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"src":"7212:39:17","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4063,"nodeType":"ExpressionStatement","src":"7212:39:17"},{"condition":{"id":4065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7266:8:17","subExpression":{"id":4064,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4053,"src":"7267:7:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4068,"nodeType":"IfStatement","src":"7262:117:17","trueBody":{"id":4067,"nodeType":"Block","src":"7276:103:17","statements":[{"AST":{"nodeType":"YulBlock","src":"7299:70:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"7328:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"7336:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7324:3:17"},"nodeType":"YulFunctionCall","src":"7324:15:17"},{"arguments":[{"name":"result","nodeType":"YulIdentifier","src":"7347:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7341:5:17"},"nodeType":"YulFunctionCall","src":"7341:13:17"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7317:6:17"},"nodeType":"YulFunctionCall","src":"7317:38:17"},"nodeType":"YulExpressionStatement","src":"7317:38:17"}]},"evmVersion":"london","externalReferences":[{"declaration":4050,"isOffset":false,"isSlot":false,"src":"7328:6:17","valueSize":1},{"declaration":4050,"isOffset":false,"isSlot":false,"src":"7347:6:17","valueSize":1}],"id":4066,"nodeType":"InlineAssembly","src":"7290:79:17"}]}}]},"documentation":{"id":4043,"nodeType":"StructuredDocumentation","src":"7008:41:17","text":"@dev Executes a low-level static call"},"id":4070,"implemented":true,"kind":"function","modifiers":[],"name":"_callStatic","nameLocation":"7063:11:17","nodeType":"FunctionDefinition","parameters":{"id":4048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4045,"mutability":"mutable","name":"to","nameLocation":"7083:2:17","nodeType":"VariableDeclaration","scope":4070,"src":"7075:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4044,"name":"address","nodeType":"ElementaryTypeName","src":"7075:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4047,"mutability":"mutable","name":"data","nameLocation":"7102:4:17","nodeType":"VariableDeclaration","scope":4070,"src":"7087:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4046,"name":"bytes","nodeType":"ElementaryTypeName","src":"7087:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7074:33:17"},"returnParameters":{"id":4051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4050,"mutability":"mutable","name":"result","nameLocation":"7168:6:17","nodeType":"VariableDeclaration","scope":4070,"src":"7155:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4049,"name":"bytes","nodeType":"ElementaryTypeName","src":"7155:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7154:21:17"},"scope":4122,"src":"7054:331:17","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4092,"nodeType":"Block","src":"7460:190:17","statements":[{"assignments":[4078],"declarations":[{"constant":false,"id":4078,"mutability":"mutable","name":"signature","nameLocation":"7477:9:17","nodeType":"VariableDeclaration","scope":4092,"src":"7470:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4077,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7470:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":4082,"initialValue":{"arguments":[{"id":4080,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4072,"src":"7506:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":4079,"name":"parseFirst4Bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4108,"src":"7489:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":4081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7489:23:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"7470:42:17"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4083,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4078,"src":"7560:9:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783039356561376233","id":4084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7573:10:17","typeDescriptions":{"typeIdentifier":"t_rational_157198259_by_1","typeString":"int_const 157198259"},"value":"0x095ea7b3"},"src":"7560:23:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4089,"nodeType":"IfStatement","src":"7556:66:17","trueBody":{"id":4088,"nodeType":"Block","src":"7585:37:17","statements":[{"expression":{"hexValue":"66616c7365","id":4086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7606:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4076,"id":4087,"nodeType":"Return","src":"7599:12:17"}]}},{"expression":{"hexValue":"74727565","id":4090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7639:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4076,"id":4091,"nodeType":"Return","src":"7632:11:17"}]},"id":4093,"implemented":true,"kind":"function","modifiers":[],"name":"allowedMethod","nameLocation":"7400:13:17","nodeType":"FunctionDefinition","parameters":{"id":4073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4072,"mutability":"mutable","name":"_data","nameLocation":"7429:5:17","nodeType":"VariableDeclaration","scope":4093,"src":"7414:20:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4071,"name":"bytes","nodeType":"ElementaryTypeName","src":"7414:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7413:22:17"},"returnParameters":{"id":4076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4075,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4093,"src":"7454:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4074,"name":"bool","nodeType":"ElementaryTypeName","src":"7454:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7453:6:17"},"scope":4122,"src":"7391:259:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4107,"nodeType":"Block","src":"7733:41:17","statements":[{"expression":{"arguments":[{"baseExpression":{"id":4102,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4095,"src":"7757:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"34","id":4103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7764:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"id":4104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"7757:9:17","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":4101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7750:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":4100,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7750:6:17","typeDescriptions":{}}},"id":4105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7750:17:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":4099,"id":4106,"nodeType":"Return","src":"7743:24:17"}]},"functionSelector":"d0ad2535","id":4108,"implemented":true,"kind":"function","modifiers":[],"name":"parseFirst4Bytes","nameLocation":"7665:16:17","nodeType":"FunctionDefinition","parameters":{"id":4096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4095,"mutability":"mutable","name":"_data","nameLocation":"7697:5:17","nodeType":"VariableDeclaration","scope":4108,"src":"7682:20:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4094,"name":"bytes","nodeType":"ElementaryTypeName","src":"7682:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7681:22:17"},"returnParameters":{"id":4099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4108,"src":"7725:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4097,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7725:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7724:8:17"},"scope":4122,"src":"7656:118:17","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":4120,"nodeType":"Block","src":"7829:83:17","statements":[{"expression":{"arguments":[{"arguments":[{"id":4114,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4110,"src":"7861:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":4113,"name":"allowedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"7847:13:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_calldata_ptr_$returns$_t_bool_$","typeString":"function (bytes calldata) returns (bool)"}},"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7847:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6574686f6420616c6c206e6f7420616c6c6f776564","id":4116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7869:24:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483","typeString":"literal_string \"Method all not allowed\""},"value":"Method all not allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483","typeString":"literal_string \"Method all not allowed\""}],"id":4112,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7839:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7839:55:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4118,"nodeType":"ExpressionStatement","src":"7839:55:17"},{"id":4119,"nodeType":"PlaceholderStatement","src":"7904:1:17"}]},"id":4121,"name":"onlyAllowedMethod","nameLocation":"7789:17:17","nodeType":"ModifierDefinition","parameters":{"id":4111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4110,"mutability":"mutable","name":"_data","nameLocation":"7822:5:17","nodeType":"VariableDeclaration","scope":4121,"src":"7807:20:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4109,"name":"bytes","nodeType":"ElementaryTypeName","src":"7807:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7806:22:17"},"src":"7780:132:17","virtual":false,"visibility":"internal"}],"scope":4123,"src":"695:7219:17","usedErrors":[3544,3546,3548,3550,3554]}],"src":"39:7876:17"},"id":17},"contracts/AccountRegistryBridge.sol":{"ast":{"absolutePath":"contracts/AccountRegistryBridge.sol","exportedSymbols":{"AccountRegistryBridge":[4178],"IERC165":[2562],"IRegistry":[4601]},"id":4179,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4124,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"33:24:18"},{"absolutePath":"contracts/interfaces/IRegistry.sol","file":"./interfaces/IRegistry.sol","id":4125,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4179,"sourceUnit":4602,"src":"59:36:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":4126,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4179,"sourceUnit":2563,"src":"96:65:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"AccountRegistryBridge","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4178,"linearizedBaseContracts":[4178],"name":"AccountRegistryBridge","nameLocation":"172:21:18","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"06433b1b","id":4129,"mutability":"constant","name":"REGISTRY","nameLocation":"224:8:18","nodeType":"VariableDeclaration","scope":4178,"src":"200:78:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4127,"name":"address","nodeType":"ElementaryTypeName","src":"200:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307830323130316466423737464445303236343134383237466463363034646441463232344630393231","id":4128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"236:42:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x02101dfB77FDE026414827Fdc604ddAF224F0921"},"visibility":"public"},{"constant":true,"functionSelector":"3a4741bd","id":4132,"mutability":"constant","name":"IMPLEMENTATION","nameLocation":"308:14:18","nodeType":"VariableDeclaration","scope":4178,"src":"284:83:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4130,"name":"address","nodeType":"ElementaryTypeName","src":"284:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307832443235363032353531343837433366333335346444383044373644353433383341323433333538","id":4131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"325:42:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x2D25602551487C3f3354dD80D76D54383A243358"},"visibility":"public"},{"body":{"id":4154,"nodeType":"Block","src":"488:203:18","statements":[{"expression":{"arguments":[{"id":4145,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4132,"src":"552:14:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4146,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"580:5:18","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"586:7:18","memberName":"chainid","nodeType":"MemberAccess","src":"580:13:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4148,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"607:15:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4149,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"636:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":4150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"657:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"","id":4151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"672:2:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"arguments":[{"id":4142,"name":"REGISTRY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"515:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4141,"name":"IRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4601,"src":"505:9:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRegistry_$4601_$","typeString":"type(contract IRegistry)"}},"id":4143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"505:19:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRegistry_$4601","typeString":"contract IRegistry"}},"id":4144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"525:13:18","memberName":"createAccount","nodeType":"MemberAccess","referencedDeclaration":4585,"src":"505:33:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (address,uint256,address,uint256,uint256,bytes memory) external returns (address)"}},"id":4152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"505:179:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4140,"id":4153,"nodeType":"Return","src":"498:186:18"}]},"functionSelector":"5fbfb9cf","id":4155,"implemented":true,"kind":"function","modifiers":[],"name":"createAccount","nameLocation":"383:13:18","nodeType":"FunctionDefinition","parameters":{"id":4137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4134,"mutability":"mutable","name":"contractAddress","nameLocation":"414:15:18","nodeType":"VariableDeclaration","scope":4155,"src":"406:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4133,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4136,"mutability":"mutable","name":"tokenId","nameLocation":"447:7:18","nodeType":"VariableDeclaration","scope":4155,"src":"439:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4135,"name":"uint256","nodeType":"ElementaryTypeName","src":"439:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"396:64:18"},"returnParameters":{"id":4140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4155,"src":"479:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4138,"name":"address","nodeType":"ElementaryTypeName","src":"479:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"478:9:18"},"scope":4178,"src":"374:317:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4176,"nodeType":"Block","src":"810:181:18","statements":[{"expression":{"arguments":[{"id":4168,"name":"IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4132,"src":"868:14:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4169,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"896:5:18","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"902:7:18","memberName":"chainid","nodeType":"MemberAccess","src":"896:13:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4171,"name":"contractAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"923:15:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4172,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4159,"src":"952:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":4173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"973:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":4165,"name":"REGISTRY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"837:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4164,"name":"IRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4601,"src":"827:9:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRegistry_$4601_$","typeString":"type(contract IRegistry)"}},"id":4166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"827:19:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRegistry_$4601","typeString":"contract IRegistry"}},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"847:7:18","memberName":"account","nodeType":"MemberAccess","referencedDeclaration":4600,"src":"827:27:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_address_$","typeString":"function (address,uint256,address,uint256,uint256) view external returns (address)"}},"id":4174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"827:157:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4163,"id":4175,"nodeType":"Return","src":"820:164:18"}]},"functionSelector":"192df655","id":4177,"implemented":true,"kind":"function","modifiers":[],"name":"account","nameLocation":"706:7:18","nodeType":"FunctionDefinition","parameters":{"id":4160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4157,"mutability":"mutable","name":"contractAddress","nameLocation":"731:15:18","nodeType":"VariableDeclaration","scope":4177,"src":"723:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4156,"name":"address","nodeType":"ElementaryTypeName","src":"723:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4159,"mutability":"mutable","name":"tokenId","nameLocation":"764:7:18","nodeType":"VariableDeclaration","scope":4177,"src":"756:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4158,"name":"uint256","nodeType":"ElementaryTypeName","src":"756:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"713:64:18"},"returnParameters":{"id":4163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4162,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4177,"src":"801:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4161,"name":"address","nodeType":"ElementaryTypeName","src":"801:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"800:9:18"},"scope":4178,"src":"697:294:18","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4179,"src":"163:830:18","usedErrors":[]}],"src":"33:960:18"},"id":18},"contracts/ChargedParticlesAccount.sol":{"ast":{"absolutePath":"contracts/ChargedParticlesAccount.sol","exportedSymbols":{"Account":[4122],"AccountLocked":[3548],"ChargedParticlesAccount":[4272],"ERC6551AccountLib":[4656],"ExceedsMaxLockTime":[3550],"IERC1155Receiver":[167],"IERC1271":[126],"IERC165":[2562],"IERC20":[832],"IERC6551Account":[4566],"IERC6551AccountProxy":[4528],"IERC721":[1900],"IERC721Receiver":[1918],"InvalidInput":[3546],"NotAuthorized":[3544],"OwnershipCycle":[3554],"UntrustedImplementation":[3552]},"id":4273,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":4180,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:19"},{"absolutePath":"contracts/Account.sol","file":"./Account.sol","id":4181,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4273,"sourceUnit":4123,"src":"65:23:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":4182,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4273,"sourceUnit":1901,"src":"89:58:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":4183,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4273,"sourceUnit":833,"src":"148:56:19","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4184,"name":"Account","nameLocations":["242:7:19"],"nodeType":"IdentifierPath","referencedDeclaration":4122,"src":"242:7:19"},"id":4185,"nodeType":"InheritanceSpecifier","src":"242:7:19"}],"canonicalName":"ChargedParticlesAccount","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4272,"linearizedBaseContracts":[4272,4122,167,1918,4566,2562],"name":"ChargedParticlesAccount","nameLocation":"215:23:19","nodeType":"ContractDefinition","nodes":[{"body":{"id":4207,"nodeType":"Block","src":"386:171:19","statements":[{"expression":{"arguments":[{"expression":{"id":4198,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"479:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"483:6:19","memberName":"sender","nodeType":"MemberAccess","src":"479:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4202,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"511:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$4272","typeString":"contract ChargedParticlesAccount"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$4272","typeString":"contract ChargedParticlesAccount"}],"id":4201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"503:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4200,"name":"address","nodeType":"ElementaryTypeName","src":"503:7:19","typeDescriptions":{}}},"id":4203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"503:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4204,"name":"nftTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4189,"src":"530:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4195,"name":"nftTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4187,"src":"432:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4194,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"424:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1900_$","typeString":"type(contract IERC721)"}},"id":4196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"424:24:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$1900","typeString":"contract IERC721"}},"id":4197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"449:16:19","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":1855,"src":"424:41:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":4205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"424:126:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4206,"nodeType":"ExpressionStatement","src":"424:126:19"}]},"functionSelector":"a737a299","id":4208,"implemented":true,"kind":"function","modifiers":[],"name":"covalentBond","nameLocation":"265:12:19","nodeType":"FunctionDefinition","parameters":{"id":4192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4187,"mutability":"mutable","name":"nftTokenAddress","nameLocation":"295:15:19","nodeType":"VariableDeclaration","scope":4208,"src":"287:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4186,"name":"address","nodeType":"ElementaryTypeName","src":"287:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4189,"mutability":"mutable","name":"nftTokenId","nameLocation":"328:10:19","nodeType":"VariableDeclaration","scope":4208,"src":"320:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4188,"name":"uint256","nodeType":"ElementaryTypeName","src":"320:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4191,"mutability":"mutable","name":"nftTokenAmount","nameLocation":"356:14:19","nodeType":"VariableDeclaration","scope":4208,"src":"348:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4190,"name":"uint256","nodeType":"ElementaryTypeName","src":"348:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"277:99:19"},"returnParameters":{"id":4193,"nodeType":"ParameterList","parameters":[],"src":"386:0:19"},"scope":4272,"src":"256:301:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4231,"nodeType":"Block","src":"724:95:19","statements":[{"expression":{"arguments":[{"arguments":[{"id":4225,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"784:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$4272","typeString":"contract ChargedParticlesAccount"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$4272","typeString":"contract ChargedParticlesAccount"}],"id":4224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"776:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4223,"name":"address","nodeType":"ElementaryTypeName","src":"776:7:19","typeDescriptions":{}}},"id":4226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"776:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4227,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4210,"src":"791:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4228,"name":"nftTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"801:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4220,"name":"nftTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4212,"src":"742:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4219,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"734:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1900_$","typeString":"type(contract IERC721)"}},"id":4221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"734:24:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$1900","typeString":"contract IERC721"}},"id":4222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"759:16:19","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":1855,"src":"734:41:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":4229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"734:78:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4230,"nodeType":"ExpressionStatement","src":"734:78:19"}]},"functionSelector":"6b764e1b","id":4232,"implemented":true,"kind":"function","modifiers":[],"name":"breakCovalentBond","nameLocation":"572:17:19","nodeType":"FunctionDefinition","parameters":{"id":4217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4210,"mutability":"mutable","name":"receiver","nameLocation":"607:8:19","nodeType":"VariableDeclaration","scope":4232,"src":"599:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4209,"name":"address","nodeType":"ElementaryTypeName","src":"599:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4212,"mutability":"mutable","name":"nftTokenAddress","nameLocation":"633:15:19","nodeType":"VariableDeclaration","scope":4232,"src":"625:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4211,"name":"address","nodeType":"ElementaryTypeName","src":"625:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4214,"mutability":"mutable","name":"nftTokenId","nameLocation":"666:10:19","nodeType":"VariableDeclaration","scope":4232,"src":"658:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4213,"name":"uint256","nodeType":"ElementaryTypeName","src":"658:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4216,"mutability":"mutable","name":"nftTokenAmount","nameLocation":"694:14:19","nodeType":"VariableDeclaration","scope":4232,"src":"686:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4215,"name":"uint256","nodeType":"ElementaryTypeName","src":"686:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"589:125:19"},"returnParameters":{"id":4218,"nodeType":"ParameterList","parameters":[],"src":"724:0:19"},"scope":4272,"src":"563:256:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4252,"nodeType":"Block","src":"923:88:19","statements":[{"expression":{"arguments":[{"expression":{"id":4243,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"965:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"969:6:19","memberName":"sender","nodeType":"MemberAccess","src":"965:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4247,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"985:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$4272","typeString":"contract ChargedParticlesAccount"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ChargedParticlesAccount_$4272","typeString":"contract ChargedParticlesAccount"}],"id":4246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"977:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4245,"name":"address","nodeType":"ElementaryTypeName","src":"977:7:19","typeDescriptions":{}}},"id":4248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"977:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4249,"name":"assetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4236,"src":"992:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4240,"name":"assetToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4234,"src":"940:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4239,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":832,"src":"933:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$832_$","typeString":"type(contract IERC20)"}},"id":4241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$832","typeString":"contract IERC20"}},"id":4242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"952:12:19","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":831,"src":"933:31:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":4250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"933:71:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4251,"nodeType":"ExpressionStatement","src":"933:71:19"}]},"functionSelector":"a65e78f1","id":4253,"implemented":true,"kind":"function","modifiers":[],"name":"energizeParticle","nameLocation":"834:16:19","nodeType":"FunctionDefinition","parameters":{"id":4237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4234,"mutability":"mutable","name":"assetToken","nameLocation":"868:10:19","nodeType":"VariableDeclaration","scope":4253,"src":"860:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4233,"name":"address","nodeType":"ElementaryTypeName","src":"860:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4236,"mutability":"mutable","name":"assetAmount","nameLocation":"896:11:19","nodeType":"VariableDeclaration","scope":4253,"src":"888:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4235,"name":"uint256","nodeType":"ElementaryTypeName","src":"888:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"850:63:19"},"returnParameters":{"id":4238,"nodeType":"ParameterList","parameters":[],"src":"923:0:19"},"scope":4272,"src":"825:186:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4270,"nodeType":"Block","src":"1134:65:19","statements":[{"expression":{"arguments":[{"id":4266,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4255,"src":"1172:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4267,"name":"assetAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4259,"src":"1182:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4263,"name":"assetToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"1151:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4262,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":832,"src":"1144:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$832_$","typeString":"type(contract IERC20)"}},"id":4264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1144:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$832","typeString":"contract IERC20"}},"id":4265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1163:8:19","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":799,"src":"1144:27:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1144:50:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4269,"nodeType":"ExpressionStatement","src":"1144:50:19"}]},"functionSelector":"ca1cc220","id":4271,"implemented":true,"kind":"function","modifiers":[],"name":"dischargeParticle","nameLocation":"1026:17:19","nodeType":"FunctionDefinition","parameters":{"id":4260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4255,"mutability":"mutable","name":"receiver","nameLocation":"1059:8:19","nodeType":"VariableDeclaration","scope":4271,"src":"1051:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4254,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4257,"mutability":"mutable","name":"assetToken","nameLocation":"1083:10:19","nodeType":"VariableDeclaration","scope":4271,"src":"1075:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4256,"name":"address","nodeType":"ElementaryTypeName","src":"1075:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4259,"mutability":"mutable","name":"assetAmount","nameLocation":"1109:11:19","nodeType":"VariableDeclaration","scope":4271,"src":"1101:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4258,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1043:81:19"},"returnParameters":{"id":4261,"nodeType":"ParameterList","parameters":[],"src":"1134:0:19"},"scope":4272,"src":"1017:182:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4273,"src":"206:995:19","usedErrors":[3544,3546,3548,3550,3554]}],"src":"39:1163:19"},"id":19},"contracts/MinimalAccount.sol":{"ast":{"absolutePath":"contracts/MinimalAccount.sol","exportedSymbols":{"MinimalAccount":[4276]},"id":4277,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":4274,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:20"},{"abstract":false,"baseContracts":[],"canonicalName":"MinimalAccount","contractDependencies":[],"contractKind":"contract","documentation":{"id":4275,"nodeType":"StructuredDocumentation","src":"65:73:20","text":" @title A smart contract account owned by a single ERC721 token"},"fullyImplemented":true,"id":4276,"linearizedBaseContracts":[4276],"name":"MinimalAccount","nameLocation":"148:14:20","nodeType":"ContractDefinition","nodes":[],"scope":4277,"src":"139:28:20","usedErrors":[]}],"src":"39:129:20"},"id":20},"contracts/interfaces/IAccount.sol":{"ast":{"absolutePath":"contracts/interfaces/IAccount.sol","exportedSymbols":{"IAccount":[4302]},"id":4303,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":4278,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:21"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccount","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4302,"linearizedBaseContracts":[4302],"name":"IAccount","nameLocation":"75:8:21","nodeType":"ContractDefinition","nodes":[{"functionSelector":"8da5cb5b","id":4283,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"99:5:21","nodeType":"FunctionDefinition","parameters":{"id":4279,"nodeType":"ParameterList","parameters":[],"src":"104:2:21"},"returnParameters":{"id":4282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4281,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4283,"src":"130:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4280,"name":"address","nodeType":"ElementaryTypeName","src":"130:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"129:9:21"},"scope":4302,"src":"90:49:21","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fc0c546a","id":4290,"implemented":false,"kind":"function","modifiers":[],"name":"token","nameLocation":"154:5:21","nodeType":"FunctionDefinition","parameters":{"id":4284,"nodeType":"ParameterList","parameters":[],"src":"159:2:21"},"returnParameters":{"id":4289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4286,"mutability":"mutable","name":"tokenContract","nameLocation":"217:13:21","nodeType":"VariableDeclaration","scope":4290,"src":"209:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4285,"name":"address","nodeType":"ElementaryTypeName","src":"209:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4288,"mutability":"mutable","name":"tokenId","nameLocation":"240:7:21","nodeType":"VariableDeclaration","scope":4290,"src":"232:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4287,"name":"uint256","nodeType":"ElementaryTypeName","src":"232:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"208:40:21"},"scope":4302,"src":"145:104:21","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9e5d4c49","id":4301,"implemented":false,"kind":"function","modifiers":[],"name":"executeCall","nameLocation":"264:11:21","nodeType":"FunctionDefinition","parameters":{"id":4297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4292,"mutability":"mutable","name":"to","nameLocation":"293:2:21","nodeType":"VariableDeclaration","scope":4301,"src":"285:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4291,"name":"address","nodeType":"ElementaryTypeName","src":"285:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4294,"mutability":"mutable","name":"value","nameLocation":"313:5:21","nodeType":"VariableDeclaration","scope":4301,"src":"305:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4293,"name":"uint256","nodeType":"ElementaryTypeName","src":"305:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4296,"mutability":"mutable","name":"data","nameLocation":"343:4:21","nodeType":"VariableDeclaration","scope":4301,"src":"328:19:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4295,"name":"bytes","nodeType":"ElementaryTypeName","src":"328:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"275:78:21"},"returnParameters":{"id":4300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4299,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4301,"src":"380:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4298,"name":"bytes","nodeType":"ElementaryTypeName","src":"380:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"379:14:21"},"scope":4302,"src":"255:139:21","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":4303,"src":"65:331:21","usedErrors":[]}],"src":"39:358:21"},"id":21},"contracts/interfaces/IChargedParticles.sol":{"ast":{"absolutePath":"contracts/interfaces/IChargedParticles.sol","exportedSymbols":{"IChargedParticles":[4520]},"id":4521,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4304,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"1236:24:22"},{"abstract":false,"baseContracts":[],"canonicalName":"IChargedParticles","contractDependencies":[],"contractKind":"interface","documentation":{"id":4305,"nodeType":"StructuredDocumentation","src":"1262:50:22","text":" @notice Interface for Charged Particles"},"fullyImplemented":false,"id":4520,"linearizedBaseContracts":[4520],"name":"IChargedParticles","nameLocation":"1323:17:22","nodeType":"ContractDefinition","nodes":[{"functionSelector":"31969e57","id":4310,"implemented":false,"kind":"function","modifiers":[],"name":"getStateAddress","nameLocation":"1476:15:22","nodeType":"FunctionDefinition","parameters":{"id":4306,"nodeType":"ParameterList","parameters":[],"src":"1491:2:22"},"returnParameters":{"id":4309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4308,"mutability":"mutable","name":"stateAddress","nameLocation":"1525:12:22","nodeType":"VariableDeclaration","scope":4310,"src":"1517:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4307,"name":"address","nodeType":"ElementaryTypeName","src":"1517:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1516:22:22"},"scope":4520,"src":"1467:72:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d00999fe","id":4315,"implemented":false,"kind":"function","modifiers":[],"name":"getSettingsAddress","nameLocation":"1551:18:22","nodeType":"FunctionDefinition","parameters":{"id":4311,"nodeType":"ParameterList","parameters":[],"src":"1569:2:22"},"returnParameters":{"id":4314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4313,"mutability":"mutable","name":"settingsAddress","nameLocation":"1603:15:22","nodeType":"VariableDeclaration","scope":4315,"src":"1595:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4312,"name":"address","nodeType":"ElementaryTypeName","src":"1595:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1594:25:22"},"scope":4520,"src":"1542:78:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8742f168","id":4320,"implemented":false,"kind":"function","modifiers":[],"name":"getManagersAddress","nameLocation":"1632:18:22","nodeType":"FunctionDefinition","parameters":{"id":4316,"nodeType":"ParameterList","parameters":[],"src":"1650:2:22"},"returnParameters":{"id":4319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4318,"mutability":"mutable","name":"managersAddress","nameLocation":"1684:15:22","nodeType":"VariableDeclaration","scope":4320,"src":"1676:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4317,"name":"address","nodeType":"ElementaryTypeName","src":"1676:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1675:25:22"},"scope":4520,"src":"1623:78:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ee895623","id":4327,"implemented":false,"kind":"function","modifiers":[],"name":"getFeesForDeposit","nameLocation":"1714:17:22","nodeType":"FunctionDefinition","parameters":{"id":4323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4322,"mutability":"mutable","name":"assetAmount","nameLocation":"1740:11:22","nodeType":"VariableDeclaration","scope":4327,"src":"1732:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4321,"name":"uint256","nodeType":"ElementaryTypeName","src":"1732:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1731:21:22"},"returnParameters":{"id":4326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4325,"mutability":"mutable","name":"protocolFee","nameLocation":"1784:11:22","nodeType":"VariableDeclaration","scope":4327,"src":"1776:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4324,"name":"uint256","nodeType":"ElementaryTypeName","src":"1776:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1775:21:22"},"scope":4520,"src":"1705:92:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e6ea6ce7","id":4340,"implemented":false,"kind":"function","modifiers":[],"name":"baseParticleMass","nameLocation":"1809:16:22","nodeType":"FunctionDefinition","parameters":{"id":4336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4329,"mutability":"mutable","name":"contractAddress","nameLocation":"1834:15:22","nodeType":"VariableDeclaration","scope":4340,"src":"1826:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4328,"name":"address","nodeType":"ElementaryTypeName","src":"1826:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4331,"mutability":"mutable","name":"tokenId","nameLocation":"1859:7:22","nodeType":"VariableDeclaration","scope":4340,"src":"1851:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4330,"name":"uint256","nodeType":"ElementaryTypeName","src":"1851:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4333,"mutability":"mutable","name":"walletManagerId","nameLocation":"1884:15:22","nodeType":"VariableDeclaration","scope":4340,"src":"1868:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4332,"name":"string","nodeType":"ElementaryTypeName","src":"1868:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4335,"mutability":"mutable","name":"assetToken","nameLocation":"1909:10:22","nodeType":"VariableDeclaration","scope":4340,"src":"1901:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4334,"name":"address","nodeType":"ElementaryTypeName","src":"1901:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1825:95:22"},"returnParameters":{"id":4339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4338,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4340,"src":"1939:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4337,"name":"uint256","nodeType":"ElementaryTypeName","src":"1939:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1938:9:22"},"scope":4520,"src":"1800:148:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"99fa4c73","id":4353,"implemented":false,"kind":"function","modifiers":[],"name":"currentParticleCharge","nameLocation":"1960:21:22","nodeType":"FunctionDefinition","parameters":{"id":4349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4342,"mutability":"mutable","name":"contractAddress","nameLocation":"1990:15:22","nodeType":"VariableDeclaration","scope":4353,"src":"1982:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4341,"name":"address","nodeType":"ElementaryTypeName","src":"1982:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4344,"mutability":"mutable","name":"tokenId","nameLocation":"2015:7:22","nodeType":"VariableDeclaration","scope":4353,"src":"2007:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4343,"name":"uint256","nodeType":"ElementaryTypeName","src":"2007:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4346,"mutability":"mutable","name":"walletManagerId","nameLocation":"2040:15:22","nodeType":"VariableDeclaration","scope":4353,"src":"2024:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4345,"name":"string","nodeType":"ElementaryTypeName","src":"2024:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4348,"mutability":"mutable","name":"assetToken","nameLocation":"2065:10:22","nodeType":"VariableDeclaration","scope":4353,"src":"2057:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4347,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1981:95:22"},"returnParameters":{"id":4352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4353,"src":"2095:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4350,"name":"uint256","nodeType":"ElementaryTypeName","src":"2095:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2094:9:22"},"scope":4520,"src":"1951:153:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ca92acd0","id":4366,"implemented":false,"kind":"function","modifiers":[],"name":"currentParticleKinetics","nameLocation":"2116:23:22","nodeType":"FunctionDefinition","parameters":{"id":4362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4355,"mutability":"mutable","name":"contractAddress","nameLocation":"2148:15:22","nodeType":"VariableDeclaration","scope":4366,"src":"2140:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4354,"name":"address","nodeType":"ElementaryTypeName","src":"2140:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4357,"mutability":"mutable","name":"tokenId","nameLocation":"2173:7:22","nodeType":"VariableDeclaration","scope":4366,"src":"2165:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4356,"name":"uint256","nodeType":"ElementaryTypeName","src":"2165:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4359,"mutability":"mutable","name":"walletManagerId","nameLocation":"2198:15:22","nodeType":"VariableDeclaration","scope":4366,"src":"2182:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4358,"name":"string","nodeType":"ElementaryTypeName","src":"2182:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4361,"mutability":"mutable","name":"assetToken","nameLocation":"2223:10:22","nodeType":"VariableDeclaration","scope":4366,"src":"2215:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4360,"name":"address","nodeType":"ElementaryTypeName","src":"2215:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2139:95:22"},"returnParameters":{"id":4365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4366,"src":"2253:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4363,"name":"uint256","nodeType":"ElementaryTypeName","src":"2253:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2252:9:22"},"scope":4520,"src":"2107:155:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a13eafd5","id":4377,"implemented":false,"kind":"function","modifiers":[],"name":"currentParticleCovalentBonds","nameLocation":"2274:28:22","nodeType":"FunctionDefinition","parameters":{"id":4373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4368,"mutability":"mutable","name":"contractAddress","nameLocation":"2311:15:22","nodeType":"VariableDeclaration","scope":4377,"src":"2303:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4367,"name":"address","nodeType":"ElementaryTypeName","src":"2303:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4370,"mutability":"mutable","name":"tokenId","nameLocation":"2336:7:22","nodeType":"VariableDeclaration","scope":4377,"src":"2328:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4369,"name":"uint256","nodeType":"ElementaryTypeName","src":"2328:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4372,"mutability":"mutable","name":"basketManagerId","nameLocation":"2361:15:22","nodeType":"VariableDeclaration","scope":4377,"src":"2345:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4371,"name":"string","nodeType":"ElementaryTypeName","src":"2345:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2302:75:22"},"returnParameters":{"id":4376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4377,"src":"2401:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4374,"name":"uint256","nodeType":"ElementaryTypeName","src":"2401:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2400:9:22"},"scope":4520,"src":"2265:145:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0bdde2ca","id":4394,"implemented":false,"kind":"function","modifiers":[],"name":"energizeParticle","nameLocation":"2544:16:22","nodeType":"FunctionDefinition","parameters":{"id":4390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4379,"mutability":"mutable","name":"contractAddress","nameLocation":"2576:15:22","nodeType":"VariableDeclaration","scope":4394,"src":"2568:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4378,"name":"address","nodeType":"ElementaryTypeName","src":"2568:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4381,"mutability":"mutable","name":"tokenId","nameLocation":"2607:7:22","nodeType":"VariableDeclaration","scope":4394,"src":"2599:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4380,"name":"uint256","nodeType":"ElementaryTypeName","src":"2599:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4383,"mutability":"mutable","name":"walletManagerId","nameLocation":"2638:15:22","nodeType":"VariableDeclaration","scope":4394,"src":"2622:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4382,"name":"string","nodeType":"ElementaryTypeName","src":"2622:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4385,"mutability":"mutable","name":"assetToken","nameLocation":"2669:10:22","nodeType":"VariableDeclaration","scope":4394,"src":"2661:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4384,"name":"address","nodeType":"ElementaryTypeName","src":"2661:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4387,"mutability":"mutable","name":"assetAmount","nameLocation":"2695:11:22","nodeType":"VariableDeclaration","scope":4394,"src":"2687:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4386,"name":"uint256","nodeType":"ElementaryTypeName","src":"2687:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4389,"mutability":"mutable","name":"referrer","nameLocation":"2722:8:22","nodeType":"VariableDeclaration","scope":4394,"src":"2714:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4388,"name":"address","nodeType":"ElementaryTypeName","src":"2714:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2560:174:22"},"returnParameters":{"id":4393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4392,"mutability":"mutable","name":"yieldTokensAmount","nameLocation":"2761:17:22","nodeType":"VariableDeclaration","scope":4394,"src":"2753:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4391,"name":"uint256","nodeType":"ElementaryTypeName","src":"2753:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2752:27:22"},"scope":4520,"src":"2535:245:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"621a3b70","id":4411,"implemented":false,"kind":"function","modifiers":[],"name":"dischargeParticle","nameLocation":"2793:17:22","nodeType":"FunctionDefinition","parameters":{"id":4405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4396,"mutability":"mutable","name":"receiver","nameLocation":"2826:8:22","nodeType":"VariableDeclaration","scope":4411,"src":"2818:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4395,"name":"address","nodeType":"ElementaryTypeName","src":"2818:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4398,"mutability":"mutable","name":"contractAddress","nameLocation":"2850:15:22","nodeType":"VariableDeclaration","scope":4411,"src":"2842:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4397,"name":"address","nodeType":"ElementaryTypeName","src":"2842:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4400,"mutability":"mutable","name":"tokenId","nameLocation":"2881:7:22","nodeType":"VariableDeclaration","scope":4411,"src":"2873:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4399,"name":"uint256","nodeType":"ElementaryTypeName","src":"2873:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4402,"mutability":"mutable","name":"walletManagerId","nameLocation":"2912:15:22","nodeType":"VariableDeclaration","scope":4411,"src":"2896:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4401,"name":"string","nodeType":"ElementaryTypeName","src":"2896:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4404,"mutability":"mutable","name":"assetToken","nameLocation":"2943:10:22","nodeType":"VariableDeclaration","scope":4411,"src":"2935:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4403,"name":"address","nodeType":"ElementaryTypeName","src":"2935:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2810:147:22"},"returnParameters":{"id":4410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4407,"mutability":"mutable","name":"creatorAmount","nameLocation":"2984:13:22","nodeType":"VariableDeclaration","scope":4411,"src":"2976:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4406,"name":"uint256","nodeType":"ElementaryTypeName","src":"2976:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4409,"mutability":"mutable","name":"receiverAmount","nameLocation":"3007:14:22","nodeType":"VariableDeclaration","scope":4411,"src":"2999:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4408,"name":"uint256","nodeType":"ElementaryTypeName","src":"2999:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2975:47:22"},"scope":4520,"src":"2784:239:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6697b359","id":4430,"implemented":false,"kind":"function","modifiers":[],"name":"dischargeParticleAmount","nameLocation":"3036:23:22","nodeType":"FunctionDefinition","parameters":{"id":4424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4413,"mutability":"mutable","name":"receiver","nameLocation":"3075:8:22","nodeType":"VariableDeclaration","scope":4430,"src":"3067:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4412,"name":"address","nodeType":"ElementaryTypeName","src":"3067:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4415,"mutability":"mutable","name":"contractAddress","nameLocation":"3099:15:22","nodeType":"VariableDeclaration","scope":4430,"src":"3091:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4414,"name":"address","nodeType":"ElementaryTypeName","src":"3091:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4417,"mutability":"mutable","name":"tokenId","nameLocation":"3130:7:22","nodeType":"VariableDeclaration","scope":4430,"src":"3122:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4416,"name":"uint256","nodeType":"ElementaryTypeName","src":"3122:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4419,"mutability":"mutable","name":"walletManagerId","nameLocation":"3161:15:22","nodeType":"VariableDeclaration","scope":4430,"src":"3145:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4418,"name":"string","nodeType":"ElementaryTypeName","src":"3145:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4421,"mutability":"mutable","name":"assetToken","nameLocation":"3192:10:22","nodeType":"VariableDeclaration","scope":4430,"src":"3184:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4420,"name":"address","nodeType":"ElementaryTypeName","src":"3184:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4423,"mutability":"mutable","name":"assetAmount","nameLocation":"3218:11:22","nodeType":"VariableDeclaration","scope":4430,"src":"3210:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4422,"name":"uint256","nodeType":"ElementaryTypeName","src":"3210:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3059:174:22"},"returnParameters":{"id":4429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4426,"mutability":"mutable","name":"creatorAmount","nameLocation":"3260:13:22","nodeType":"VariableDeclaration","scope":4430,"src":"3252:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4425,"name":"uint256","nodeType":"ElementaryTypeName","src":"3252:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4428,"mutability":"mutable","name":"receiverAmount","nameLocation":"3283:14:22","nodeType":"VariableDeclaration","scope":4430,"src":"3275:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4427,"name":"uint256","nodeType":"ElementaryTypeName","src":"3275:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3251:47:22"},"scope":4520,"src":"3027:272:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"65d20ce2","id":4447,"implemented":false,"kind":"function","modifiers":[],"name":"dischargeParticleForCreator","nameLocation":"3312:27:22","nodeType":"FunctionDefinition","parameters":{"id":4443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4432,"mutability":"mutable","name":"receiver","nameLocation":"3355:8:22","nodeType":"VariableDeclaration","scope":4447,"src":"3347:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4431,"name":"address","nodeType":"ElementaryTypeName","src":"3347:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4434,"mutability":"mutable","name":"contractAddress","nameLocation":"3379:15:22","nodeType":"VariableDeclaration","scope":4447,"src":"3371:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4433,"name":"address","nodeType":"ElementaryTypeName","src":"3371:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4436,"mutability":"mutable","name":"tokenId","nameLocation":"3410:7:22","nodeType":"VariableDeclaration","scope":4447,"src":"3402:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4435,"name":"uint256","nodeType":"ElementaryTypeName","src":"3402:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4438,"mutability":"mutable","name":"walletManagerId","nameLocation":"3441:15:22","nodeType":"VariableDeclaration","scope":4447,"src":"3425:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4437,"name":"string","nodeType":"ElementaryTypeName","src":"3425:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4440,"mutability":"mutable","name":"assetToken","nameLocation":"3472:10:22","nodeType":"VariableDeclaration","scope":4447,"src":"3464:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4439,"name":"address","nodeType":"ElementaryTypeName","src":"3464:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4442,"mutability":"mutable","name":"assetAmount","nameLocation":"3498:11:22","nodeType":"VariableDeclaration","scope":4447,"src":"3490:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4441,"name":"uint256","nodeType":"ElementaryTypeName","src":"3490:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3339:174:22"},"returnParameters":{"id":4446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4445,"mutability":"mutable","name":"receiverAmount","nameLocation":"3540:14:22","nodeType":"VariableDeclaration","scope":4447,"src":"3532:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4444,"name":"uint256","nodeType":"ElementaryTypeName","src":"3532:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3531:24:22"},"scope":4520,"src":"3303:253:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"acab923c","id":4464,"implemented":false,"kind":"function","modifiers":[],"name":"releaseParticle","nameLocation":"3569:15:22","nodeType":"FunctionDefinition","parameters":{"id":4458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4449,"mutability":"mutable","name":"receiver","nameLocation":"3600:8:22","nodeType":"VariableDeclaration","scope":4464,"src":"3592:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4448,"name":"address","nodeType":"ElementaryTypeName","src":"3592:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4451,"mutability":"mutable","name":"contractAddress","nameLocation":"3624:15:22","nodeType":"VariableDeclaration","scope":4464,"src":"3616:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4450,"name":"address","nodeType":"ElementaryTypeName","src":"3616:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4453,"mutability":"mutable","name":"tokenId","nameLocation":"3655:7:22","nodeType":"VariableDeclaration","scope":4464,"src":"3647:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4452,"name":"uint256","nodeType":"ElementaryTypeName","src":"3647:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4455,"mutability":"mutable","name":"walletManagerId","nameLocation":"3686:15:22","nodeType":"VariableDeclaration","scope":4464,"src":"3670:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4454,"name":"string","nodeType":"ElementaryTypeName","src":"3670:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4457,"mutability":"mutable","name":"assetToken","nameLocation":"3717:10:22","nodeType":"VariableDeclaration","scope":4464,"src":"3709:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4456,"name":"address","nodeType":"ElementaryTypeName","src":"3709:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3584:147:22"},"returnParameters":{"id":4463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4460,"mutability":"mutable","name":"creatorAmount","nameLocation":"3758:13:22","nodeType":"VariableDeclaration","scope":4464,"src":"3750:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4459,"name":"uint256","nodeType":"ElementaryTypeName","src":"3750:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4462,"mutability":"mutable","name":"receiverAmount","nameLocation":"3781:14:22","nodeType":"VariableDeclaration","scope":4464,"src":"3773:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4461,"name":"uint256","nodeType":"ElementaryTypeName","src":"3773:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3749:47:22"},"scope":4520,"src":"3560:237:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a8abef47","id":4483,"implemented":false,"kind":"function","modifiers":[],"name":"releaseParticleAmount","nameLocation":"3810:21:22","nodeType":"FunctionDefinition","parameters":{"id":4477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4466,"mutability":"mutable","name":"receiver","nameLocation":"3845:8:22","nodeType":"VariableDeclaration","scope":4483,"src":"3837:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4465,"name":"address","nodeType":"ElementaryTypeName","src":"3837:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4468,"mutability":"mutable","name":"contractAddress","nameLocation":"3867:15:22","nodeType":"VariableDeclaration","scope":4483,"src":"3859:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4467,"name":"address","nodeType":"ElementaryTypeName","src":"3859:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4470,"mutability":"mutable","name":"tokenId","nameLocation":"3896:7:22","nodeType":"VariableDeclaration","scope":4483,"src":"3888:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4469,"name":"uint256","nodeType":"ElementaryTypeName","src":"3888:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4472,"mutability":"mutable","name":"walletManagerId","nameLocation":"3925:15:22","nodeType":"VariableDeclaration","scope":4483,"src":"3909:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4471,"name":"string","nodeType":"ElementaryTypeName","src":"3909:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4474,"mutability":"mutable","name":"assetToken","nameLocation":"3954:10:22","nodeType":"VariableDeclaration","scope":4483,"src":"3946:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4473,"name":"address","nodeType":"ElementaryTypeName","src":"3946:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4476,"mutability":"mutable","name":"assetAmount","nameLocation":"3978:11:22","nodeType":"VariableDeclaration","scope":4483,"src":"3970:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4475,"name":"uint256","nodeType":"ElementaryTypeName","src":"3970:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3831:162:22"},"returnParameters":{"id":4482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4479,"mutability":"mutable","name":"creatorAmount","nameLocation":"4020:13:22","nodeType":"VariableDeclaration","scope":4483,"src":"4012:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4478,"name":"uint256","nodeType":"ElementaryTypeName","src":"4012:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4481,"mutability":"mutable","name":"receiverAmount","nameLocation":"4043:14:22","nodeType":"VariableDeclaration","scope":4483,"src":"4035:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4480,"name":"uint256","nodeType":"ElementaryTypeName","src":"4035:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4011:47:22"},"scope":4520,"src":"3801:258:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3ff956cc","id":4500,"implemented":false,"kind":"function","modifiers":[],"name":"covalentBond","nameLocation":"4072:12:22","nodeType":"FunctionDefinition","parameters":{"id":4496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4485,"mutability":"mutable","name":"contractAddress","nameLocation":"4098:15:22","nodeType":"VariableDeclaration","scope":4500,"src":"4090:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4484,"name":"address","nodeType":"ElementaryTypeName","src":"4090:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4487,"mutability":"mutable","name":"tokenId","nameLocation":"4127:7:22","nodeType":"VariableDeclaration","scope":4500,"src":"4119:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4486,"name":"uint256","nodeType":"ElementaryTypeName","src":"4119:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4489,"mutability":"mutable","name":"basketManagerId","nameLocation":"4156:15:22","nodeType":"VariableDeclaration","scope":4500,"src":"4140:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4488,"name":"string","nodeType":"ElementaryTypeName","src":"4140:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4491,"mutability":"mutable","name":"nftTokenAddress","nameLocation":"4185:15:22","nodeType":"VariableDeclaration","scope":4500,"src":"4177:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4490,"name":"address","nodeType":"ElementaryTypeName","src":"4177:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4493,"mutability":"mutable","name":"nftTokenId","nameLocation":"4214:10:22","nodeType":"VariableDeclaration","scope":4500,"src":"4206:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4492,"name":"uint256","nodeType":"ElementaryTypeName","src":"4206:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4495,"mutability":"mutable","name":"nftTokenAmount","nameLocation":"4238:14:22","nodeType":"VariableDeclaration","scope":4500,"src":"4230:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4494,"name":"uint256","nodeType":"ElementaryTypeName","src":"4230:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4084:172:22"},"returnParameters":{"id":4499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4498,"mutability":"mutable","name":"success","nameLocation":"4280:7:22","nodeType":"VariableDeclaration","scope":4500,"src":"4275:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4497,"name":"bool","nodeType":"ElementaryTypeName","src":"4275:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4274:14:22"},"scope":4520,"src":"4063:226:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fe02fb00","id":4519,"implemented":false,"kind":"function","modifiers":[],"name":"breakCovalentBond","nameLocation":"4302:17:22","nodeType":"FunctionDefinition","parameters":{"id":4515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4502,"mutability":"mutable","name":"receiver","nameLocation":"4333:8:22","nodeType":"VariableDeclaration","scope":4519,"src":"4325:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4501,"name":"address","nodeType":"ElementaryTypeName","src":"4325:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4504,"mutability":"mutable","name":"contractAddress","nameLocation":"4355:15:22","nodeType":"VariableDeclaration","scope":4519,"src":"4347:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4503,"name":"address","nodeType":"ElementaryTypeName","src":"4347:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4506,"mutability":"mutable","name":"tokenId","nameLocation":"4384:7:22","nodeType":"VariableDeclaration","scope":4519,"src":"4376:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4505,"name":"uint256","nodeType":"ElementaryTypeName","src":"4376:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4508,"mutability":"mutable","name":"basketManagerId","nameLocation":"4413:15:22","nodeType":"VariableDeclaration","scope":4519,"src":"4397:31:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":4507,"name":"string","nodeType":"ElementaryTypeName","src":"4397:6:22","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4510,"mutability":"mutable","name":"nftTokenAddress","nameLocation":"4442:15:22","nodeType":"VariableDeclaration","scope":4519,"src":"4434:23:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4509,"name":"address","nodeType":"ElementaryTypeName","src":"4434:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4512,"mutability":"mutable","name":"nftTokenId","nameLocation":"4471:10:22","nodeType":"VariableDeclaration","scope":4519,"src":"4463:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4511,"name":"uint256","nodeType":"ElementaryTypeName","src":"4463:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4514,"mutability":"mutable","name":"nftTokenAmount","nameLocation":"4495:14:22","nodeType":"VariableDeclaration","scope":4519,"src":"4487:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4513,"name":"uint256","nodeType":"ElementaryTypeName","src":"4487:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4319:194:22"},"returnParameters":{"id":4518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4517,"mutability":"mutable","name":"success","nameLocation":"4537:7:22","nodeType":"VariableDeclaration","scope":4519,"src":"4532:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4516,"name":"bool","nodeType":"ElementaryTypeName","src":"4532:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4531:14:22"},"scope":4520,"src":"4293:253:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4521,"src":"1313:3235:22","usedErrors":[]}],"src":"1236:3313:22"},"id":22},"contracts/interfaces/IERC6551Account.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Account.sol","exportedSymbols":{"IERC6551Account":[4566],"IERC6551AccountProxy":[4528]},"id":4567,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":4522,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:23"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551AccountProxy","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4528,"linearizedBaseContracts":[4528],"name":"IERC6551AccountProxy","nameLocation":"75:20:23","nodeType":"ContractDefinition","nodes":[{"functionSelector":"5c60da1b","id":4527,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"111:14:23","nodeType":"FunctionDefinition","parameters":{"id":4523,"nodeType":"ParameterList","parameters":[],"src":"125:2:23"},"returnParameters":{"id":4526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4525,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4527,"src":"151:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4524,"name":"address","nodeType":"ElementaryTypeName","src":"151:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"150:9:23"},"scope":4528,"src":"102:58:23","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4567,"src":"65:97:23","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Account","contractDependencies":[],"contractKind":"interface","documentation":{"id":4529,"nodeType":"StructuredDocumentation","src":"164:67:23","text":"@dev the ERC-165 identifier for this interface is `0xeff4d378`"},"fullyImplemented":false,"id":4566,"linearizedBaseContracts":[4566],"name":"IERC6551Account","nameLocation":"241:15:23","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d2","id":4537,"name":"TransactionExecuted","nameLocation":"269:19:23","nodeType":"EventDefinition","parameters":{"id":4536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4531,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"305:6:23","nodeType":"VariableDeclaration","scope":4537,"src":"289:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4530,"name":"address","nodeType":"ElementaryTypeName","src":"289:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4533,"indexed":true,"mutability":"mutable","name":"value","nameLocation":"329:5:23","nodeType":"VariableDeclaration","scope":4537,"src":"313:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4532,"name":"uint256","nodeType":"ElementaryTypeName","src":"313:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4535,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"342:4:23","nodeType":"VariableDeclaration","scope":4537,"src":"336:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4534,"name":"bytes","nodeType":"ElementaryTypeName","src":"336:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"288:59:23"},"src":"263:85:23"},{"id":4540,"implemented":false,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4538,"nodeType":"ParameterList","parameters":[],"src":"361:2:23"},"returnParameters":{"id":4539,"nodeType":"ParameterList","parameters":[],"src":"380:0:23"},"scope":4566,"src":"354:27:23","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"9e5d4c49","id":4551,"implemented":false,"kind":"function","modifiers":[],"name":"executeCall","nameLocation":"396:11:23","nodeType":"FunctionDefinition","parameters":{"id":4547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4542,"mutability":"mutable","name":"to","nameLocation":"425:2:23","nodeType":"VariableDeclaration","scope":4551,"src":"417:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4541,"name":"address","nodeType":"ElementaryTypeName","src":"417:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4544,"mutability":"mutable","name":"value","nameLocation":"445:5:23","nodeType":"VariableDeclaration","scope":4551,"src":"437:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4543,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4546,"mutability":"mutable","name":"data","nameLocation":"475:4:23","nodeType":"VariableDeclaration","scope":4551,"src":"460:19:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4545,"name":"bytes","nodeType":"ElementaryTypeName","src":"460:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"407:78:23"},"returnParameters":{"id":4550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4549,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4551,"src":"512:12:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4548,"name":"bytes","nodeType":"ElementaryTypeName","src":"512:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"511:14:23"},"scope":4566,"src":"387:139:23","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"fc0c546a","id":4560,"implemented":false,"kind":"function","modifiers":[],"name":"token","nameLocation":"541:5:23","nodeType":"FunctionDefinition","parameters":{"id":4552,"nodeType":"ParameterList","parameters":[],"src":"546:2:23"},"returnParameters":{"id":4559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4554,"mutability":"mutable","name":"chainId","nameLocation":"604:7:23","nodeType":"VariableDeclaration","scope":4560,"src":"596:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4553,"name":"uint256","nodeType":"ElementaryTypeName","src":"596:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4556,"mutability":"mutable","name":"tokenContract","nameLocation":"621:13:23","nodeType":"VariableDeclaration","scope":4560,"src":"613:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4555,"name":"address","nodeType":"ElementaryTypeName","src":"613:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4558,"mutability":"mutable","name":"tokenId","nameLocation":"644:7:23","nodeType":"VariableDeclaration","scope":4560,"src":"636:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4557,"name":"uint256","nodeType":"ElementaryTypeName","src":"636:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"595:57:23"},"scope":4566,"src":"532:121:23","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8da5cb5b","id":4565,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"668:5:23","nodeType":"FunctionDefinition","parameters":{"id":4561,"nodeType":"ParameterList","parameters":[],"src":"673:2:23"},"returnParameters":{"id":4564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4565,"src":"699:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4562,"name":"address","nodeType":"ElementaryTypeName","src":"699:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"698:9:23"},"scope":4566,"src":"659:49:23","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4567,"src":"231:479:23","usedErrors":[]}],"src":"39:672:23"},"id":23},"contracts/interfaces/IRegistry.sol":{"ast":{"absolutePath":"contracts/interfaces/IRegistry.sol","exportedSymbols":{"IRegistry":[4601]},"id":4602,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":4568,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"39:24:24"},{"abstract":false,"baseContracts":[],"canonicalName":"IRegistry","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":4601,"linearizedBaseContracts":[4601],"name":"IRegistry","nameLocation":"75:9:24","nodeType":"ContractDefinition","nodes":[{"functionSelector":"da7323b3","id":4585,"implemented":false,"kind":"function","modifiers":[],"name":"createAccount","nameLocation":"100:13:24","nodeType":"FunctionDefinition","parameters":{"id":4581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4570,"mutability":"mutable","name":"implementation","nameLocation":"131:14:24","nodeType":"VariableDeclaration","scope":4585,"src":"123:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4569,"name":"address","nodeType":"ElementaryTypeName","src":"123:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4572,"mutability":"mutable","name":"chainId","nameLocation":"163:7:24","nodeType":"VariableDeclaration","scope":4585,"src":"155:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4571,"name":"uint256","nodeType":"ElementaryTypeName","src":"155:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4574,"mutability":"mutable","name":"tokenContract","nameLocation":"188:13:24","nodeType":"VariableDeclaration","scope":4585,"src":"180:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4573,"name":"address","nodeType":"ElementaryTypeName","src":"180:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4576,"mutability":"mutable","name":"tokenId","nameLocation":"219:7:24","nodeType":"VariableDeclaration","scope":4585,"src":"211:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4575,"name":"uint256","nodeType":"ElementaryTypeName","src":"211:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4578,"mutability":"mutable","name":"salt","nameLocation":"244:4:24","nodeType":"VariableDeclaration","scope":4585,"src":"236:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4577,"name":"uint256","nodeType":"ElementaryTypeName","src":"236:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4580,"mutability":"mutable","name":"initData","nameLocation":"273:8:24","nodeType":"VariableDeclaration","scope":4585,"src":"258:23:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4579,"name":"bytes","nodeType":"ElementaryTypeName","src":"258:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"113:174:24"},"returnParameters":{"id":4584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4585,"src":"306:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4582,"name":"address","nodeType":"ElementaryTypeName","src":"306:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"305:9:24"},"scope":4601,"src":"91:224:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"5e9bc536","id":4600,"implemented":false,"kind":"function","modifiers":[],"name":"account","nameLocation":"330:7:24","nodeType":"FunctionDefinition","parameters":{"id":4596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4587,"mutability":"mutable","name":"implementation","nameLocation":"355:14:24","nodeType":"VariableDeclaration","scope":4600,"src":"347:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4586,"name":"address","nodeType":"ElementaryTypeName","src":"347:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4589,"mutability":"mutable","name":"chainId","nameLocation":"387:7:24","nodeType":"VariableDeclaration","scope":4600,"src":"379:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4588,"name":"uint256","nodeType":"ElementaryTypeName","src":"379:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4591,"mutability":"mutable","name":"tokenContract","nameLocation":"412:13:24","nodeType":"VariableDeclaration","scope":4600,"src":"404:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4590,"name":"address","nodeType":"ElementaryTypeName","src":"404:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4593,"mutability":"mutable","name":"tokenId","nameLocation":"443:7:24","nodeType":"VariableDeclaration","scope":4600,"src":"435:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4592,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4595,"mutability":"mutable","name":"salt","nameLocation":"468:4:24","nodeType":"VariableDeclaration","scope":4600,"src":"460:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4594,"name":"uint256","nodeType":"ElementaryTypeName","src":"460:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"337:141:24"},"returnParameters":{"id":4599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4600,"src":"502:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4597,"name":"address","nodeType":"ElementaryTypeName","src":"502:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"501:9:24"},"scope":4601,"src":"321:190:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4602,"src":"65:448:24","usedErrors":[]}],"src":"39:475:24"},"id":24},"contracts/lib/ERC6551AccountLib.sol":{"ast":{"absolutePath":"contracts/lib/ERC6551AccountLib.sol","exportedSymbols":{"ERC6551AccountLib":[4656]},"id":4657,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4603,"literals":["solidity","^","0.8",".13"],"nodeType":"PragmaDirective","src":"32:24:25"},{"abstract":false,"baseContracts":[],"canonicalName":"ERC6551AccountLib","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4656,"linearizedBaseContracts":[4656],"name":"ERC6551AccountLib","nameLocation":"66:17:25","nodeType":"ContractDefinition","nodes":[{"body":{"id":4632,"nodeType":"Block","src":"231:265:25","statements":[{"assignments":[4613],"declarations":[{"constant":false,"id":4613,"mutability":"mutable","name":"footer","nameLocation":"254:6:25","nodeType":"VariableDeclaration","scope":4632,"src":"241:19:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4612,"name":"bytes","nodeType":"ElementaryTypeName","src":"241:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4618,"initialValue":{"arguments":[{"hexValue":"30783630","id":4616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"273:4:25","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"0x60"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"}],"id":4615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"263:9:25","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4614,"name":"bytes","nodeType":"ElementaryTypeName","src":"267:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"263:15:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"241:37:25"},{"AST":{"nodeType":"YulBlock","src":"298:127:25","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"address","nodeType":"YulIdentifier","src":"374:7:25"},"nodeType":"YulFunctionCall","src":"374:9:25"},{"arguments":[{"name":"footer","nodeType":"YulIdentifier","src":"389:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"397:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"385:3:25"},"nodeType":"YulFunctionCall","src":"385:17:25"},{"kind":"number","nodeType":"YulLiteral","src":"404:4:25","type":"","value":"0x4d"},{"kind":"number","nodeType":"YulLiteral","src":"410:4:25","type":"","value":"0xad"}],"functionName":{"name":"extcodecopy","nodeType":"YulIdentifier","src":"362:11:25"},"nodeType":"YulFunctionCall","src":"362:53:25"},"nodeType":"YulExpressionStatement","src":"362:53:25"}]},"evmVersion":"london","externalReferences":[{"declaration":4613,"isOffset":false,"isSlot":false,"src":"389:6:25","valueSize":1}],"id":4619,"nodeType":"InlineAssembly","src":"289:136:25"},{"expression":{"arguments":[{"id":4622,"name":"footer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4613,"src":"453:6:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":4624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"462:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4623,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:25","typeDescriptions":{}}},{"id":4626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"471:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4625,"name":"address","nodeType":"ElementaryTypeName","src":"471:7:25","typeDescriptions":{}}},{"id":4628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"480:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4627,"name":"uint256","nodeType":"ElementaryTypeName","src":"480:7:25","typeDescriptions":{}}}],"id":4629,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"461:27:25","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(address),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint256),type(address),type(uint256))"}],"expression":{"id":4620,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"442:3:25","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4621,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"446:6:25","memberName":"decode","nodeType":"MemberAccess","src":"442:10:25","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":4630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"442:47:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_payable_$_t_uint256_$","typeString":"tuple(uint256,address payable,uint256)"}},"functionReturnParameters":4611,"id":4631,"nodeType":"Return","src":"435:54:25"}]},"id":4633,"implemented":true,"kind":"function","modifiers":[],"name":"token","nameLocation":"99:5:25","nodeType":"FunctionDefinition","parameters":{"id":4604,"nodeType":"ParameterList","parameters":[],"src":"104:2:25"},"returnParameters":{"id":4611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4633,"src":"167:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4605,"name":"uint256","nodeType":"ElementaryTypeName","src":"167:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4608,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4633,"src":"188:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4607,"name":"address","nodeType":"ElementaryTypeName","src":"188:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4633,"src":"209:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4609,"name":"uint256","nodeType":"ElementaryTypeName","src":"209:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"153:73:25"},"scope":4656,"src":"90:406:25","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4654,"nodeType":"Block","src":"550:253:25","statements":[{"assignments":[4639],"declarations":[{"constant":false,"id":4639,"mutability":"mutable","name":"footer","nameLocation":"573:6:25","nodeType":"VariableDeclaration","scope":4654,"src":"560:19:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4638,"name":"bytes","nodeType":"ElementaryTypeName","src":"560:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4644,"initialValue":{"arguments":[{"hexValue":"30783230","id":4642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"592:4:25","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"id":4641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"582:9:25","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4640,"name":"bytes","nodeType":"ElementaryTypeName","src":"586:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"582:15:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"560:37:25"},{"AST":{"nodeType":"YulBlock","src":"617:133:25","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"address","nodeType":"YulIdentifier","src":"699:7:25"},"nodeType":"YulFunctionCall","src":"699:9:25"},{"arguments":[{"name":"footer","nodeType":"YulIdentifier","src":"714:6:25"},{"kind":"number","nodeType":"YulLiteral","src":"722:4:25","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"710:3:25"},"nodeType":"YulFunctionCall","src":"710:17:25"},{"kind":"number","nodeType":"YulLiteral","src":"729:4:25","type":"","value":"0x2d"},{"kind":"number","nodeType":"YulLiteral","src":"735:4:25","type":"","value":"0x4d"}],"functionName":{"name":"extcodecopy","nodeType":"YulIdentifier","src":"687:11:25"},"nodeType":"YulFunctionCall","src":"687:53:25"},"nodeType":"YulExpressionStatement","src":"687:53:25"}]},"evmVersion":"london","externalReferences":[{"declaration":4639,"isOffset":false,"isSlot":false,"src":"714:6:25","valueSize":1}],"id":4645,"nodeType":"InlineAssembly","src":"608:142:25"},{"expression":{"arguments":[{"id":4648,"name":"footer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"778:6:25","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":4650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"787:7:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4649,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:25","typeDescriptions":{}}}],"id":4651,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"786:9:25","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"id":4646,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"767:3:25","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"771:6:25","memberName":"decode","nodeType":"MemberAccess","src":"767:10:25","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":4652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"767:29:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4637,"id":4653,"nodeType":"Return","src":"760:36:25"}]},"id":4655,"implemented":true,"kind":"function","modifiers":[],"name":"salt","nameLocation":"511:4:25","nodeType":"FunctionDefinition","parameters":{"id":4634,"nodeType":"ParameterList","parameters":[],"src":"515:2:25"},"returnParameters":{"id":4637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4636,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4655,"src":"541:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4635,"name":"uint256","nodeType":"ElementaryTypeName","src":"541:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"540:9:25"},"scope":4656,"src":"502:301:25","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":4657,"src":"58:747:25","usedErrors":[]}],"src":"32:774:25"},"id":25},"contracts/lib/ERC721.sol":{"ast":{"absolutePath":"contracts/lib/ERC721.sol","exportedSymbols":{"Address":[2275],"Context":[2297],"ERC165":[2550],"ERC721":[5524],"IERC165":[2562],"IERC721":[1900],"IERC721Metadata":[1945],"IERC721Receiver":[1918],"Math":[3428],"SignedMath":[3533],"Strings":[2526]},"id":5525,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4658,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"302:23:26"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":4659,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5525,"sourceUnit":1901,"src":"327:58:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":4660,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5525,"sourceUnit":1919,"src":"386:66:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","id":4661,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5525,"sourceUnit":1946,"src":"453:77:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":4662,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5525,"sourceUnit":2276,"src":"531:51:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":4663,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5525,"sourceUnit":2298,"src":"583:51:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"@openzeppelin/contracts/utils/Strings.sol","id":4664,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5525,"sourceUnit":2527,"src":"635:51:26","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":4665,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5525,"sourceUnit":2551,"src":"687:64:26","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4667,"name":"Context","nameLocations":["1401:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":2297,"src":"1401:7:26"},"id":4668,"nodeType":"InheritanceSpecifier","src":"1401:7:26"},{"baseName":{"id":4669,"name":"ERC165","nameLocations":["1410:6:26"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"1410:6:26"},"id":4670,"nodeType":"InheritanceSpecifier","src":"1410:6:26"},{"baseName":{"id":4671,"name":"IERC721","nameLocations":["1418:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":1900,"src":"1418:7:26"},"id":4672,"nodeType":"InheritanceSpecifier","src":"1418:7:26"},{"baseName":{"id":4673,"name":"IERC721Metadata","nameLocations":["1427:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":1945,"src":"1427:15:26"},"id":4674,"nodeType":"InheritanceSpecifier","src":"1427:15:26"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":4666,"nodeType":"StructuredDocumentation","src":"753:628:26","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}.\n NOTE:\n The only changes made here are:\n - change scope of \"_owners\" from private to internal\n - change scope of \"_balances\" from private to internal\n - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\"\n - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)"},"fullyImplemented":true,"id":5524,"linearizedBaseContracts":[5524,1945,1900,2550,2562,2297],"name":"ERC721","nameLocation":"1391:6:26","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4677,"libraryName":{"id":4675,"name":"Address","nameLocations":["1455:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":2275,"src":"1455:7:26"},"nodeType":"UsingForDirective","src":"1449:26:26","typeName":{"id":4676,"name":"address","nodeType":"ElementaryTypeName","src":"1467:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":4680,"libraryName":{"id":4678,"name":"Strings","nameLocations":["1486:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":2526,"src":"1486:7:26"},"nodeType":"UsingForDirective","src":"1480:26:26","typeName":{"id":4679,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":4683,"mutability":"constant","name":"_NULL_ADDRESS","nameLocation":"1538:13:26","nodeType":"VariableDeclaration","scope":5524,"src":"1512:84:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4681,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307830303030303030303030303030303030303030303030303030303030303030303030303064456144","id":4682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1554:42:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x000000000000000000000000000000000000dEaD"},"visibility":"internal"},{"constant":false,"id":4685,"mutability":"mutable","name":"_name","nameLocation":"1636:5:26","nodeType":"VariableDeclaration","scope":5524,"src":"1621:20:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":4684,"name":"string","nodeType":"ElementaryTypeName","src":"1621:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":4687,"mutability":"mutable","name":"_symbol","nameLocation":"1683:7:26","nodeType":"VariableDeclaration","scope":5524,"src":"1668:22:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":4686,"name":"string","nodeType":"ElementaryTypeName","src":"1668:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":4691,"mutability":"mutable","name":"_owners","nameLocation":"1780:7:26","nodeType":"VariableDeclaration","scope":5524,"src":"1743:44:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":4690,"keyType":{"id":4688,"name":"uint256","nodeType":"ElementaryTypeName","src":"1751:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1743:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":4689,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"internal"},{"constant":false,"id":4695,"mutability":"mutable","name":"_balances","nameLocation":"1875:9:26","nodeType":"VariableDeclaration","scope":5524,"src":"1838:46:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":4694,"keyType":{"id":4692,"name":"address","nodeType":"ElementaryTypeName","src":"1846:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1838:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":4693,"name":"uint256","nodeType":"ElementaryTypeName","src":"1857:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":4699,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1976:15:26","nodeType":"VariableDeclaration","scope":5524,"src":"1940:51:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":4698,"keyType":{"id":4696,"name":"uint256","nodeType":"ElementaryTypeName","src":"1948:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1940:27:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":4697,"name":"address","nodeType":"ElementaryTypeName","src":"1959:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":4705,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"2099:18:26","nodeType":"VariableDeclaration","scope":5524,"src":"2046:71:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":4704,"keyType":{"id":4700,"name":"address","nodeType":"ElementaryTypeName","src":"2054:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2046:44:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":4703,"keyType":{"id":4701,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2065:24:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":4702,"name":"bool","nodeType":"ElementaryTypeName","src":"2084:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":4721,"nodeType":"Block","src":"2293:57:26","statements":[{"expression":{"id":4715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4713,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"2303:5:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4714,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"2311:5:26","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2303:13:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":4716,"nodeType":"ExpressionStatement","src":"2303:13:26"},{"expression":{"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4717,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4687,"src":"2326:7:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4718,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4710,"src":"2336:7:26","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2326:17:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":4720,"nodeType":"ExpressionStatement","src":"2326:17:26"}]},"documentation":{"id":4706,"nodeType":"StructuredDocumentation","src":"2124:108:26","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":4722,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4708,"mutability":"mutable","name":"name_","nameLocation":"2263:5:26","nodeType":"VariableDeclaration","scope":4722,"src":"2249:19:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4707,"name":"string","nodeType":"ElementaryTypeName","src":"2249:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4710,"mutability":"mutable","name":"symbol_","nameLocation":"2284:7:26","nodeType":"VariableDeclaration","scope":4722,"src":"2270:21:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4709,"name":"string","nodeType":"ElementaryTypeName","src":"2270:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2248:44:26"},"returnParameters":{"id":4712,"nodeType":"ParameterList","parameters":[],"src":"2293:0:26"},"scope":5524,"src":"2237:113:26","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2549,2561],"body":{"id":4752,"nodeType":"Block","src":"2525:192:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4733,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"2554:11:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4735,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"2574:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1900_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1900_$","typeString":"type(contract IERC721)"}],"id":4734,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2569:4:26","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2569:13:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1900","typeString":"type(contract IERC721)"}},"id":4737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2583:11:26","memberName":"interfaceId","nodeType":"MemberAccess","src":"2569:25:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2554:40:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4739,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"2610:11:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4741,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1945,"src":"2630:15:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1945_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1945_$","typeString":"type(contract IERC721Metadata)"}],"id":4740,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2625:4:26","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2625:21:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1945","typeString":"type(contract IERC721Metadata)"}},"id":4743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2647:11:26","memberName":"interfaceId","nodeType":"MemberAccess","src":"2625:33:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2610:48:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2554:104:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4748,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4725,"src":"2698:11:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4746,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2674:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$5524_$","typeString":"type(contract super ERC721)"}},"id":4747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2680:17:26","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2549,"src":"2674:23:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2674:36:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2554:156:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4732,"id":4751,"nodeType":"Return","src":"2535:175:26"}]},"documentation":{"id":4723,"nodeType":"StructuredDocumentation","src":"2356:56:26","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":4753,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2426:17:26","nodeType":"FunctionDefinition","overrides":{"id":4729,"nodeType":"OverrideSpecifier","overrides":[{"id":4727,"name":"ERC165","nameLocations":["2493:6:26"],"nodeType":"IdentifierPath","referencedDeclaration":2550,"src":"2493:6:26"},{"id":4728,"name":"IERC165","nameLocations":["2501:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":2562,"src":"2501:7:26"}],"src":"2484:25:26"},"parameters":{"id":4726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4725,"mutability":"mutable","name":"interfaceId","nameLocation":"2451:11:26","nodeType":"VariableDeclaration","scope":4753,"src":"2444:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4724,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2444:6:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2443:20:26"},"returnParameters":{"id":4732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4753,"src":"2519:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4730,"name":"bool","nodeType":"ElementaryTypeName","src":"2519:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2518:6:26"},"scope":5524,"src":"2417:300:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1825],"body":{"id":4776,"nodeType":"Block","src":"2857:123:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4763,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4756,"src":"2875:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2892:1:26","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":4765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2884:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4764,"name":"address","nodeType":"ElementaryTypeName","src":"2884:7:26","typeDescriptions":{}}},"id":4767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2884:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2875:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":4769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2896:43:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":4762,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2867:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2867:73:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4771,"nodeType":"ExpressionStatement","src":"2867:73:26"},{"expression":{"baseExpression":{"id":4772,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"2957:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4774,"indexExpression":{"id":4773,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4756,"src":"2967:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2957:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4761,"id":4775,"nodeType":"Return","src":"2950:23:26"}]},"documentation":{"id":4754,"nodeType":"StructuredDocumentation","src":"2723:48:26","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":4777,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2785:9:26","nodeType":"FunctionDefinition","overrides":{"id":4758,"nodeType":"OverrideSpecifier","overrides":[],"src":"2830:8:26"},"parameters":{"id":4757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4756,"mutability":"mutable","name":"owner","nameLocation":"2803:5:26","nodeType":"VariableDeclaration","scope":4777,"src":"2795:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4755,"name":"address","nodeType":"ElementaryTypeName","src":"2795:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2794:15:26"},"returnParameters":{"id":4761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4760,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4777,"src":"2848:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4759,"name":"uint256","nodeType":"ElementaryTypeName","src":"2848:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2847:9:26"},"scope":5524,"src":"2776:204:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1833],"body":{"id":4804,"nodeType":"Block","src":"3118:137:26","statements":[{"assignments":[4787],"declarations":[{"constant":false,"id":4787,"mutability":"mutable","name":"owner","nameLocation":"3136:5:26","nodeType":"VariableDeclaration","scope":4804,"src":"3128:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4786,"name":"address","nodeType":"ElementaryTypeName","src":"3128:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4791,"initialValue":{"baseExpression":{"id":4788,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4691,"src":"3144:7:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":4790,"indexExpression":{"id":4789,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4780,"src":"3152:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3144:16:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3128:32:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4793,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4787,"src":"3178:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3195:1:26","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":4795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3187:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4794,"name":"address","nodeType":"ElementaryTypeName","src":"3187:7:26","typeDescriptions":{}}},"id":4797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3187:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3178:19:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":4799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3199:26:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":4792,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3170:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3170:56:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4801,"nodeType":"ExpressionStatement","src":"3170:56:26"},{"expression":{"id":4802,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4787,"src":"3243:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4785,"id":4803,"nodeType":"Return","src":"3236:12:26"}]},"documentation":{"id":4778,"nodeType":"StructuredDocumentation","src":"2986:46:26","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":4805,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"3046:7:26","nodeType":"FunctionDefinition","overrides":{"id":4782,"nodeType":"OverrideSpecifier","overrides":[],"src":"3091:8:26"},"parameters":{"id":4781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4780,"mutability":"mutable","name":"tokenId","nameLocation":"3062:7:26","nodeType":"VariableDeclaration","scope":4805,"src":"3054:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4779,"name":"uint256","nodeType":"ElementaryTypeName","src":"3054:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3053:17:26"},"returnParameters":{"id":4785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4805,"src":"3109:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4783,"name":"address","nodeType":"ElementaryTypeName","src":"3109:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3108:9:26"},"scope":5524,"src":"3037:218:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1930],"body":{"id":4814,"nodeType":"Block","src":"3386:29:26","statements":[{"expression":{"id":4812,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"3403:5:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":4811,"id":4813,"nodeType":"Return","src":"3396:12:26"}]},"documentation":{"id":4806,"nodeType":"StructuredDocumentation","src":"3261:51:26","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":4815,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"3326:4:26","nodeType":"FunctionDefinition","overrides":{"id":4808,"nodeType":"OverrideSpecifier","overrides":[],"src":"3353:8:26"},"parameters":{"id":4807,"nodeType":"ParameterList","parameters":[],"src":"3330:2:26"},"returnParameters":{"id":4811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4815,"src":"3371:13:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4809,"name":"string","nodeType":"ElementaryTypeName","src":"3371:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3370:15:26"},"scope":5524,"src":"3317:98:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1936],"body":{"id":4824,"nodeType":"Block","src":"3550:31:26","statements":[{"expression":{"id":4822,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4687,"src":"3567:7:26","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":4821,"id":4823,"nodeType":"Return","src":"3560:14:26"}]},"documentation":{"id":4816,"nodeType":"StructuredDocumentation","src":"3421:53:26","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":4825,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"3488:6:26","nodeType":"FunctionDefinition","overrides":{"id":4818,"nodeType":"OverrideSpecifier","overrides":[],"src":"3517:8:26"},"parameters":{"id":4817,"nodeType":"ParameterList","parameters":[],"src":"3494:2:26"},"returnParameters":{"id":4821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4825,"src":"3535:13:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4819,"name":"string","nodeType":"ElementaryTypeName","src":"3535:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3534:15:26"},"scope":5524,"src":"3479:102:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1944],"body":{"id":4863,"nodeType":"Block","src":"3735:188:26","statements":[{"expression":{"arguments":[{"id":4835,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4828,"src":"3760:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4834,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"3745:14:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":4836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3745:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4837,"nodeType":"ExpressionStatement","src":"3745:23:26"},{"assignments":[4839],"declarations":[{"constant":false,"id":4839,"mutability":"mutable","name":"baseURI","nameLocation":"3793:7:26","nodeType":"VariableDeclaration","scope":4863,"src":"3779:21:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4838,"name":"string","nodeType":"ElementaryTypeName","src":"3779:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":4842,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4840,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"3803:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":4841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3803:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"3779:34:26"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":4845,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4839,"src":"3836:7:26","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":4844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3830:5:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":4843,"name":"bytes","nodeType":"ElementaryTypeName","src":"3830:5:26","typeDescriptions":{}}},"id":4846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3830:14:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3845:6:26","memberName":"length","nodeType":"MemberAccess","src":"3830:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3830:25:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":4860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3914:2:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":4861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3830:86:26","trueExpression":{"arguments":[{"arguments":[{"id":4854,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4839,"src":"3882:7:26","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4855,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4828,"src":"3891:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3899:8:26","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":2356,"src":"3891:16:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":4857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3891:18:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":4852,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3865:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3869:12:26","memberName":"encodePacked","nodeType":"MemberAccess","src":"3865:16:26","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3865:45:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3858:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":4850,"name":"string","nodeType":"ElementaryTypeName","src":"3858:6:26","typeDescriptions":{}}},"id":4859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3858:53:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":4833,"id":4862,"nodeType":"Return","src":"3823:93:26"}]},"documentation":{"id":4826,"nodeType":"StructuredDocumentation","src":"3587:55:26","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":4864,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"3656:8:26","nodeType":"FunctionDefinition","overrides":{"id":4830,"nodeType":"OverrideSpecifier","overrides":[],"src":"3702:8:26"},"parameters":{"id":4829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4828,"mutability":"mutable","name":"tokenId","nameLocation":"3673:7:26","nodeType":"VariableDeclaration","scope":4864,"src":"3665:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4827,"name":"uint256","nodeType":"ElementaryTypeName","src":"3665:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3664:17:26"},"returnParameters":{"id":4833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4832,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4864,"src":"3720:13:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4831,"name":"string","nodeType":"ElementaryTypeName","src":"3720:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3719:15:26"},"scope":5524,"src":"3647:276:26","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4872,"nodeType":"Block","src":"4231:26:26","statements":[{"expression":{"hexValue":"","id":4870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4248:2:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":4869,"id":4871,"nodeType":"Return","src":"4241:9:26"}]},"documentation":{"id":4865,"nodeType":"StructuredDocumentation","src":"3929:231:26","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":4873,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"4174:8:26","nodeType":"FunctionDefinition","parameters":{"id":4866,"nodeType":"ParameterList","parameters":[],"src":"4182:2:26"},"returnParameters":{"id":4869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4868,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4873,"src":"4216:13:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4867,"name":"string","nodeType":"ElementaryTypeName","src":"4216:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4215:15:26"},"scope":5524,"src":"4165:92:26","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1873],"body":{"id":4914,"nodeType":"Block","src":"4384:330:26","statements":[{"assignments":[4883],"declarations":[{"constant":false,"id":4883,"mutability":"mutable","name":"owner","nameLocation":"4402:5:26","nodeType":"VariableDeclaration","scope":4914,"src":"4394:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4882,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4887,"initialValue":{"arguments":[{"id":4885,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4878,"src":"4418:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4884,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"4410:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":4886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4410:16:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4394:32:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4889,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"4444:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4890,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4883,"src":"4450:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4444:11:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":4892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4457:35:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":4888,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4436:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4436:57:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4894,"nodeType":"ExpressionStatement","src":"4436:57:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4896,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"4525:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4525:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4898,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4883,"src":"4541:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4525:21:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4901,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4883,"src":"4567:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":4902,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"4574:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4574:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4900,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4968,"src":"4550:16:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":4904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4550:37:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4525:62:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","id":4906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4601:64:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""},"value":"ERC721: approve caller is not token owner nor approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""}],"id":4895,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4504:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4504:171:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4908,"nodeType":"ExpressionStatement","src":"4504:171:26"},{"expression":{"arguments":[{"id":4910,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4876,"src":"4695:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4911,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4878,"src":"4699:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4909,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5391,"src":"4686:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4686:21:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4913,"nodeType":"ExpressionStatement","src":"4686:21:26"}]},"documentation":{"id":4874,"nodeType":"StructuredDocumentation","src":"4263:46:26","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":4915,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4323:7:26","nodeType":"FunctionDefinition","overrides":{"id":4880,"nodeType":"OverrideSpecifier","overrides":[],"src":"4375:8:26"},"parameters":{"id":4879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4876,"mutability":"mutable","name":"to","nameLocation":"4339:2:26","nodeType":"VariableDeclaration","scope":4915,"src":"4331:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4875,"name":"address","nodeType":"ElementaryTypeName","src":"4331:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4878,"mutability":"mutable","name":"tokenId","nameLocation":"4351:7:26","nodeType":"VariableDeclaration","scope":4915,"src":"4343:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4877,"name":"uint256","nodeType":"ElementaryTypeName","src":"4343:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4330:29:26"},"returnParameters":{"id":4881,"nodeType":"ParameterList","parameters":[],"src":"4384:0:26"},"scope":5524,"src":"4314:400:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1889],"body":{"id":4932,"nodeType":"Block","src":"4860:82:26","statements":[{"expression":{"arguments":[{"id":4925,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4918,"src":"4885:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4924,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5437,"src":"4870:14:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":4926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4870:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4927,"nodeType":"ExpressionStatement","src":"4870:23:26"},{"expression":{"baseExpression":{"id":4928,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4699,"src":"4911:15:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":4930,"indexExpression":{"id":4929,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4918,"src":"4927:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4911:24:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4923,"id":4931,"nodeType":"Return","src":"4904:31:26"}]},"documentation":{"id":4916,"nodeType":"StructuredDocumentation","src":"4720:50:26","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":4933,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4784:11:26","nodeType":"FunctionDefinition","overrides":{"id":4920,"nodeType":"OverrideSpecifier","overrides":[],"src":"4833:8:26"},"parameters":{"id":4919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4918,"mutability":"mutable","name":"tokenId","nameLocation":"4804:7:26","nodeType":"VariableDeclaration","scope":4933,"src":"4796:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4917,"name":"uint256","nodeType":"ElementaryTypeName","src":"4796:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4795:17:26"},"returnParameters":{"id":4923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4933,"src":"4851:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4921,"name":"address","nodeType":"ElementaryTypeName","src":"4851:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4850:9:26"},"scope":5524,"src":"4775:167:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1881],"body":{"id":4949,"nodeType":"Block","src":"5093:69:26","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4943,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"5122:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5122:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4945,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4936,"src":"5136:8:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4946,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4938,"src":"5146:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4942,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5423,"src":"5103:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":4947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5103:52:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4948,"nodeType":"ExpressionStatement","src":"5103:52:26"}]},"documentation":{"id":4934,"nodeType":"StructuredDocumentation","src":"4948:56:26","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":4950,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"5018:17:26","nodeType":"FunctionDefinition","overrides":{"id":4940,"nodeType":"OverrideSpecifier","overrides":[],"src":"5084:8:26"},"parameters":{"id":4939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4936,"mutability":"mutable","name":"operator","nameLocation":"5044:8:26","nodeType":"VariableDeclaration","scope":4950,"src":"5036:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4935,"name":"address","nodeType":"ElementaryTypeName","src":"5036:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4938,"mutability":"mutable","name":"approved","nameLocation":"5059:8:26","nodeType":"VariableDeclaration","scope":4950,"src":"5054:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4937,"name":"bool","nodeType":"ElementaryTypeName","src":"5054:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5035:33:26"},"returnParameters":{"id":4941,"nodeType":"ParameterList","parameters":[],"src":"5093:0:26"},"scope":5524,"src":"5009:153:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1899],"body":{"id":4967,"nodeType":"Block","src":"5331:59:26","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":4961,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4705,"src":"5348:18:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":4963,"indexExpression":{"id":4962,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4953,"src":"5367:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5348:25:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4965,"indexExpression":{"id":4964,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4955,"src":"5374:8:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5348:35:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4960,"id":4966,"nodeType":"Return","src":"5341:42:26"}]},"documentation":{"id":4951,"nodeType":"StructuredDocumentation","src":"5168:55:26","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":4968,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"5237:16:26","nodeType":"FunctionDefinition","overrides":{"id":4957,"nodeType":"OverrideSpecifier","overrides":[],"src":"5307:8:26"},"parameters":{"id":4956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4953,"mutability":"mutable","name":"owner","nameLocation":"5262:5:26","nodeType":"VariableDeclaration","scope":4968,"src":"5254:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4952,"name":"address","nodeType":"ElementaryTypeName","src":"5254:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4955,"mutability":"mutable","name":"operator","nameLocation":"5277:8:26","nodeType":"VariableDeclaration","scope":4968,"src":"5269:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4954,"name":"address","nodeType":"ElementaryTypeName","src":"5269:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5253:33:26"},"returnParameters":{"id":4960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4968,"src":"5325:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4958,"name":"bool","nodeType":"ElementaryTypeName","src":"5325:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5324:6:26"},"scope":5524,"src":"5228:162:26","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1865],"body":{"id":4994,"nodeType":"Block","src":"5571:208:26","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4981,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"5660:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5660:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4983,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4975,"src":"5674:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4980,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5124,"src":"5641:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":4984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5641:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":4985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5684:48:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":4979,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5633:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5633:100:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4987,"nodeType":"ExpressionStatement","src":"5633:100:26"},{"expression":{"arguments":[{"id":4989,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4971,"src":"5754:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4990,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4973,"src":"5760:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4991,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4975,"src":"5764:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4988,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5368,"src":"5744:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5744:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4993,"nodeType":"ExpressionStatement","src":"5744:28:26"}]},"documentation":{"id":4969,"nodeType":"StructuredDocumentation","src":"5396:51:26","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":4995,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5461:12:26","nodeType":"FunctionDefinition","overrides":{"id":4977,"nodeType":"OverrideSpecifier","overrides":[],"src":"5562:8:26"},"parameters":{"id":4976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4971,"mutability":"mutable","name":"from","nameLocation":"5491:4:26","nodeType":"VariableDeclaration","scope":4995,"src":"5483:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4970,"name":"address","nodeType":"ElementaryTypeName","src":"5483:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4973,"mutability":"mutable","name":"to","nameLocation":"5513:2:26","nodeType":"VariableDeclaration","scope":4995,"src":"5505:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4972,"name":"address","nodeType":"ElementaryTypeName","src":"5505:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4975,"mutability":"mutable","name":"tokenId","nameLocation":"5533:7:26","nodeType":"VariableDeclaration","scope":4995,"src":"5525:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4974,"name":"uint256","nodeType":"ElementaryTypeName","src":"5525:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5473:73:26"},"returnParameters":{"id":4978,"nodeType":"ParameterList","parameters":[],"src":"5571:0:26"},"scope":5524,"src":"5452:327:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1855],"body":{"id":5013,"nodeType":"Block","src":"5968:56:26","statements":[{"expression":{"arguments":[{"id":5007,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"5995:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5008,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"6001:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5009,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5002,"src":"6005:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":5010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6014:2:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":5006,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[5014,5044],"referencedDeclaration":5044,"src":"5978:16:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":5011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5978:39:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5012,"nodeType":"ExpressionStatement","src":"5978:39:26"}]},"documentation":{"id":4996,"nodeType":"StructuredDocumentation","src":"5785:55:26","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":5014,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5854:16:26","nodeType":"FunctionDefinition","overrides":{"id":5004,"nodeType":"OverrideSpecifier","overrides":[],"src":"5959:8:26"},"parameters":{"id":5003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4998,"mutability":"mutable","name":"from","nameLocation":"5888:4:26","nodeType":"VariableDeclaration","scope":5014,"src":"5880:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4997,"name":"address","nodeType":"ElementaryTypeName","src":"5880:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5000,"mutability":"mutable","name":"to","nameLocation":"5910:2:26","nodeType":"VariableDeclaration","scope":5014,"src":"5902:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4999,"name":"address","nodeType":"ElementaryTypeName","src":"5902:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5002,"mutability":"mutable","name":"tokenId","nameLocation":"5930:7:26","nodeType":"VariableDeclaration","scope":5014,"src":"5922:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5001,"name":"uint256","nodeType":"ElementaryTypeName","src":"5922:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5870:73:26"},"returnParameters":{"id":5005,"nodeType":"ParameterList","parameters":[],"src":"5968:0:26"},"scope":5524,"src":"5845:179:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1845],"body":{"id":5043,"nodeType":"Block","src":"6240:165:26","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5029,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"6277:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6277:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5031,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5021,"src":"6291:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5028,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5124,"src":"6258:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":5032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6258:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":5033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6301:48:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":5027,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6250:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6250:100:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5035,"nodeType":"ExpressionStatement","src":"6250:100:26"},{"expression":{"arguments":[{"id":5037,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"6374:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5038,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"6380:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5039,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5021,"src":"6384:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5040,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5023,"src":"6393:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5036,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"6360:13:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":5041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6360:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5042,"nodeType":"ExpressionStatement","src":"6360:38:26"}]},"documentation":{"id":5015,"nodeType":"StructuredDocumentation","src":"6030:55:26","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":5044,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"6099:16:26","nodeType":"FunctionDefinition","overrides":{"id":5025,"nodeType":"OverrideSpecifier","overrides":[],"src":"6231:8:26"},"parameters":{"id":5024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5017,"mutability":"mutable","name":"from","nameLocation":"6133:4:26","nodeType":"VariableDeclaration","scope":5044,"src":"6125:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5016,"name":"address","nodeType":"ElementaryTypeName","src":"6125:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5019,"mutability":"mutable","name":"to","nameLocation":"6155:2:26","nodeType":"VariableDeclaration","scope":5044,"src":"6147:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5018,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5021,"mutability":"mutable","name":"tokenId","nameLocation":"6175:7:26","nodeType":"VariableDeclaration","scope":5044,"src":"6167:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5020,"name":"uint256","nodeType":"ElementaryTypeName","src":"6167:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5023,"mutability":"mutable","name":"data","nameLocation":"6205:4:26","nodeType":"VariableDeclaration","scope":5044,"src":"6192:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5022,"name":"bytes","nodeType":"ElementaryTypeName","src":"6192:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6115:100:26"},"returnParameters":{"id":5026,"nodeType":"ParameterList","parameters":[],"src":"6240:0:26"},"scope":5524,"src":"6090:315:26","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5072,"nodeType":"Block","src":"7406:165:26","statements":[{"expression":{"arguments":[{"id":5057,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5047,"src":"7426:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5058,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5049,"src":"7432:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5059,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5051,"src":"7436:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5056,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5368,"src":"7416:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7416:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5061,"nodeType":"ExpressionStatement","src":"7416:28:26"},{"expression":{"arguments":[{"arguments":[{"id":5064,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5047,"src":"7485:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5065,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5049,"src":"7491:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5066,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5051,"src":"7495:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5067,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5053,"src":"7504:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5063,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5501,"src":"7462:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":5068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7462:47:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":5069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7511:52:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":5062,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7454:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7454:110:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5071,"nodeType":"ExpressionStatement","src":"7454:110:26"}]},"documentation":{"id":5045,"nodeType":"StructuredDocumentation","src":"6411:850:26","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":5073,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"7275:13:26","nodeType":"FunctionDefinition","parameters":{"id":5054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5047,"mutability":"mutable","name":"from","nameLocation":"7306:4:26","nodeType":"VariableDeclaration","scope":5073,"src":"7298:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5046,"name":"address","nodeType":"ElementaryTypeName","src":"7298:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5049,"mutability":"mutable","name":"to","nameLocation":"7328:2:26","nodeType":"VariableDeclaration","scope":5073,"src":"7320:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5048,"name":"address","nodeType":"ElementaryTypeName","src":"7320:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5051,"mutability":"mutable","name":"tokenId","nameLocation":"7348:7:26","nodeType":"VariableDeclaration","scope":5073,"src":"7340:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5050,"name":"uint256","nodeType":"ElementaryTypeName","src":"7340:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5053,"mutability":"mutable","name":"data","nameLocation":"7378:4:26","nodeType":"VariableDeclaration","scope":5073,"src":"7365:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5052,"name":"bytes","nodeType":"ElementaryTypeName","src":"7365:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7288:100:26"},"returnParameters":{"id":5055,"nodeType":"ParameterList","parameters":[],"src":"7406:0:26"},"scope":5524,"src":"7266:305:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5090,"nodeType":"Block","src":"7945:54:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":5081,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4691,"src":"7962:7:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":5083,"indexExpression":{"id":5082,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"7970:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7962:16:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7990:1:26","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":5085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7982:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5084,"name":"address","nodeType":"ElementaryTypeName","src":"7982:7:26","typeDescriptions":{}}},"id":5087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7982:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7962:30:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5080,"id":5089,"nodeType":"Return","src":"7955:37:26"}]},"documentation":{"id":5074,"nodeType":"StructuredDocumentation","src":"7577:292:26","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":5091,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7883:7:26","nodeType":"FunctionDefinition","parameters":{"id":5077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5076,"mutability":"mutable","name":"tokenId","nameLocation":"7899:7:26","nodeType":"VariableDeclaration","scope":5091,"src":"7891:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5075,"name":"uint256","nodeType":"ElementaryTypeName","src":"7891:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7890:17:26"},"returnParameters":{"id":5080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5079,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5091,"src":"7939:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5078,"name":"bool","nodeType":"ElementaryTypeName","src":"7939:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7938:6:26"},"scope":5524,"src":"7874:125:26","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5123,"nodeType":"Block","src":"8256:155:26","statements":[{"assignments":[5102],"declarations":[{"constant":false,"id":5102,"mutability":"mutable","name":"owner","nameLocation":"8274:5:26","nodeType":"VariableDeclaration","scope":5123,"src":"8266:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5101,"name":"address","nodeType":"ElementaryTypeName","src":"8266:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5106,"initialValue":{"arguments":[{"id":5104,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5096,"src":"8290:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5103,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"8282:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8282:16:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8266:32:26"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5107,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5094,"src":"8316:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5108,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5102,"src":"8327:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8316:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":5111,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5102,"src":"8353:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5112,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5094,"src":"8360:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5110,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4968,"src":"8336:16:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":5113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8336:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8316:52:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5116,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5096,"src":"8384:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5115,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4933,"src":"8372:11:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8372:20:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5118,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5094,"src":"8396:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8372:31:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8316:87:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5121,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8315:89:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5100,"id":5122,"nodeType":"Return","src":"8308:96:26"}]},"documentation":{"id":5092,"nodeType":"StructuredDocumentation","src":"8005:147:26","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":5124,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"8166:18:26","nodeType":"FunctionDefinition","parameters":{"id":5097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5094,"mutability":"mutable","name":"spender","nameLocation":"8193:7:26","nodeType":"VariableDeclaration","scope":5124,"src":"8185:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5093,"name":"address","nodeType":"ElementaryTypeName","src":"8185:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5096,"mutability":"mutable","name":"tokenId","nameLocation":"8210:7:26","nodeType":"VariableDeclaration","scope":5124,"src":"8202:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5095,"name":"uint256","nodeType":"ElementaryTypeName","src":"8202:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8184:34:26"},"returnParameters":{"id":5100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5124,"src":"8250:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5098,"name":"bool","nodeType":"ElementaryTypeName","src":"8250:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8249:6:26"},"scope":5524,"src":"8157:254:26","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5138,"nodeType":"Block","src":"8806:43:26","statements":[{"expression":{"arguments":[{"id":5133,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5127,"src":"8826:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5134,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5129,"src":"8830:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":5135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8839:2:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":5132,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[5139,5168],"referencedDeclaration":5168,"src":"8816:9:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":5136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8816:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5137,"nodeType":"ExpressionStatement","src":"8816:26:26"}]},"documentation":{"id":5125,"nodeType":"StructuredDocumentation","src":"8417:319:26","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":5139,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8750:9:26","nodeType":"FunctionDefinition","parameters":{"id":5130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5127,"mutability":"mutable","name":"to","nameLocation":"8768:2:26","nodeType":"VariableDeclaration","scope":5139,"src":"8760:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5126,"name":"address","nodeType":"ElementaryTypeName","src":"8760:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5129,"mutability":"mutable","name":"tokenId","nameLocation":"8780:7:26","nodeType":"VariableDeclaration","scope":5139,"src":"8772:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5128,"name":"uint256","nodeType":"ElementaryTypeName","src":"8772:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8759:29:26"},"returnParameters":{"id":5131,"nodeType":"ParameterList","parameters":[],"src":"8806:0:26"},"scope":5524,"src":"8741:108:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5167,"nodeType":"Block","src":"9184:195:26","statements":[{"expression":{"arguments":[{"id":5150,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5142,"src":"9200:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5151,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"9204:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5149,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5234,"src":"9194:5:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9194:18:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5153,"nodeType":"ExpressionStatement","src":"9194:18:26"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":5158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:1:26","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":5157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9266:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5156,"name":"address","nodeType":"ElementaryTypeName","src":"9266:7:26","typeDescriptions":{}}},"id":5159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9266:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5160,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5142,"src":"9278:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5161,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"9282:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5162,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5146,"src":"9291:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5155,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5501,"src":"9243:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":5163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9243:53:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":5164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9310:52:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":5154,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9222:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9222:150:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5166,"nodeType":"ExpressionStatement","src":"9222:150:26"}]},"documentation":{"id":5140,"nodeType":"StructuredDocumentation","src":"8855:210:26","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":5168,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"9079:9:26","nodeType":"FunctionDefinition","parameters":{"id":5147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5142,"mutability":"mutable","name":"to","nameLocation":"9106:2:26","nodeType":"VariableDeclaration","scope":5168,"src":"9098:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5141,"name":"address","nodeType":"ElementaryTypeName","src":"9098:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5144,"mutability":"mutable","name":"tokenId","nameLocation":"9126:7:26","nodeType":"VariableDeclaration","scope":5168,"src":"9118:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5143,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5146,"mutability":"mutable","name":"data","nameLocation":"9156:4:26","nodeType":"VariableDeclaration","scope":5168,"src":"9143:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5145,"name":"bytes","nodeType":"ElementaryTypeName","src":"9143:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9088:78:26"},"returnParameters":{"id":5148,"nodeType":"ParameterList","parameters":[],"src":"9184:0:26"},"scope":5524,"src":"9070:309:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5233,"nodeType":"Block","src":"9762:366:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5177,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5171,"src":"9780:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9794:1:26","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":5179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9786:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5178,"name":"address","nodeType":"ElementaryTypeName","src":"9786:7:26","typeDescriptions":{}}},"id":5181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9786:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9780:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":5183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9798:34:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":5176,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9772:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9772:61:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5185,"nodeType":"ExpressionStatement","src":"9772:61:26"},{"expression":{"arguments":[{"id":5190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9851:17:26","subExpression":{"arguments":[{"id":5188,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"9860:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5187,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"9852:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":5189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9852:16:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":5191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9870:30:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":5186,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9843:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9843:58:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5193,"nodeType":"ExpressionStatement","src":"9843:58:26"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":5197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9941:1:26","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":5196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9933:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5195,"name":"address","nodeType":"ElementaryTypeName","src":"9933:7:26","typeDescriptions":{}}},"id":5198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9933:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5199,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5171,"src":"9945:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5200,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"9949:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5194,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5512,"src":"9912:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9912:45:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5202,"nodeType":"ExpressionStatement","src":"9912:45:26"},{"expression":{"id":5207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5203,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"9968:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5205,"indexExpression":{"id":5204,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5171,"src":"9978:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9968:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":5206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9985:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9968:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5208,"nodeType":"ExpressionStatement","src":"9968:18:26"},{"expression":{"id":5213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5209,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4691,"src":"9996:7:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":5211,"indexExpression":{"id":5210,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"10004:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9996:16:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5212,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5171,"src":"10015:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9996:21:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5214,"nodeType":"ExpressionStatement","src":"9996:21:26"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":5218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10050:1:26","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":5217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10042:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5216,"name":"address","nodeType":"ElementaryTypeName","src":"10042:7:26","typeDescriptions":{}}},"id":5219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10042:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5220,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5171,"src":"10054:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5221,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"10058:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5215,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1799,"src":"10033:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10033:33:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5223,"nodeType":"EmitStatement","src":"10028:38:26"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":5227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10105:1:26","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":5226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10097:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5225,"name":"address","nodeType":"ElementaryTypeName","src":"10097:7:26","typeDescriptions":{}}},"id":5228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10097:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5229,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5171,"src":"10109:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5230,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5173,"src":"10113:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5224,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5523,"src":"10077:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10077:44:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5232,"nodeType":"ExpressionStatement","src":"10077:44:26"}]},"documentation":{"id":5169,"nodeType":"StructuredDocumentation","src":"9385:311:26","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":5234,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9710:5:26","nodeType":"FunctionDefinition","parameters":{"id":5174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5171,"mutability":"mutable","name":"to","nameLocation":"9724:2:26","nodeType":"VariableDeclaration","scope":5234,"src":"9716:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5170,"name":"address","nodeType":"ElementaryTypeName","src":"9716:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5173,"mutability":"mutable","name":"tokenId","nameLocation":"9736:7:26","nodeType":"VariableDeclaration","scope":5234,"src":"9728:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5172,"name":"uint256","nodeType":"ElementaryTypeName","src":"9728:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9715:29:26"},"returnParameters":{"id":5175,"nodeType":"ParameterList","parameters":[],"src":"9762:0:26"},"scope":5524,"src":"9701:427:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5293,"nodeType":"Block","src":"10394:431:26","statements":[{"assignments":[5241],"declarations":[{"constant":false,"id":5241,"mutability":"mutable","name":"owner","nameLocation":"10412:5:26","nodeType":"VariableDeclaration","scope":5293,"src":"10404:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5240,"name":"address","nodeType":"ElementaryTypeName","src":"10404:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5245,"initialValue":{"arguments":[{"id":5243,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5237,"src":"10428:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5242,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"10420:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10420:16:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10404:32:26"},{"expression":{"arguments":[{"id":5247,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"10468:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":5250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10483:1:26","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":5249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10475:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5248,"name":"address","nodeType":"ElementaryTypeName","src":"10475:7:26","typeDescriptions":{}}},"id":5251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10475:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5252,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5237,"src":"10487:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5246,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5512,"src":"10447:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10447:48:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5254,"nodeType":"ExpressionStatement","src":"10447:48:26"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":5258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:26","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":5257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10542:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5256,"name":"address","nodeType":"ElementaryTypeName","src":"10542:7:26","typeDescriptions":{}}},"id":5259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10542:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5260,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5237,"src":"10554:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5255,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5391,"src":"10533:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10533:29:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5262,"nodeType":"ExpressionStatement","src":"10533:29:26"},{"expression":{"id":5267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5263,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"10573:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5265,"indexExpression":{"id":5264,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"10583:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10573:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":5266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10593:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10573:21:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5268,"nodeType":"ExpressionStatement","src":"10573:21:26"},{"expression":{"id":5273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5269,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4691,"src":"10676:7:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":5271,"indexExpression":{"id":5270,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5237,"src":"10684:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10676:16:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5272,"name":"_NULL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4683,"src":"10695:13:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10676:32:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5274,"nodeType":"ExpressionStatement","src":"10676:32:26"},{"eventCall":{"arguments":[{"id":5276,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"10733:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":5279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10748:1:26","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":5278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10740:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5277,"name":"address","nodeType":"ElementaryTypeName","src":"10740:7:26","typeDescriptions":{}}},"id":5280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10740:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5281,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5237,"src":"10752:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5275,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1799,"src":"10724:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10724:36:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5283,"nodeType":"EmitStatement","src":"10719:41:26"},{"expression":{"arguments":[{"id":5285,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"10791:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":5288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10806:1:26","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":5287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10798:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5286,"name":"address","nodeType":"ElementaryTypeName","src":"10798:7:26","typeDescriptions":{}}},"id":5289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10798:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5290,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5237,"src":"10810:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5284,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5523,"src":"10771:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10771:47:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5292,"nodeType":"ExpressionStatement","src":"10771:47:26"}]},"documentation":{"id":5235,"nodeType":"StructuredDocumentation","src":"10134:206:26","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":5294,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10354:5:26","nodeType":"FunctionDefinition","parameters":{"id":5238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5237,"mutability":"mutable","name":"tokenId","nameLocation":"10368:7:26","nodeType":"VariableDeclaration","scope":5294,"src":"10360:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5236,"name":"uint256","nodeType":"ElementaryTypeName","src":"10360:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10359:17:26"},"returnParameters":{"id":5239,"nodeType":"ParameterList","parameters":[],"src":"10394:0:26"},"scope":5524,"src":"10345:480:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5367,"nodeType":"Block","src":"11258:489:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5306,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5301,"src":"11284:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5305,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11276:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11276:16:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5308,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5297,"src":"11296:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11276:24:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":5310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11302:39:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":5304,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11268:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11268:74:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5312,"nodeType":"ExpressionStatement","src":"11268:74:26"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5314,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5299,"src":"11360:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11374:1:26","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":5316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11366:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5315,"name":"address","nodeType":"ElementaryTypeName","src":"11366:7:26","typeDescriptions":{}}},"id":5318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11366:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11360:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":5320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11378:38:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":5313,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11352:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11352:65:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5322,"nodeType":"ExpressionStatement","src":"11352:65:26"},{"expression":{"arguments":[{"id":5324,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5297,"src":"11449:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5325,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5299,"src":"11455:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5326,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5301,"src":"11459:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5323,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5512,"src":"11428:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11428:39:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5328,"nodeType":"ExpressionStatement","src":"11428:39:26"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":5332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11546:1:26","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":5331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11538:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5330,"name":"address","nodeType":"ElementaryTypeName","src":"11538:7:26","typeDescriptions":{}}},"id":5333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11538:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5334,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5301,"src":"11550:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5329,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5391,"src":"11529:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11529:29:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5336,"nodeType":"ExpressionStatement","src":"11529:29:26"},{"expression":{"id":5341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5337,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"11569:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5339,"indexExpression":{"id":5338,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5297,"src":"11579:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11569:15:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":5340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11588:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11569:20:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5342,"nodeType":"ExpressionStatement","src":"11569:20:26"},{"expression":{"id":5347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5343,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"11599:9:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5345,"indexExpression":{"id":5344,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5299,"src":"11609:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11599:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":5346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11616:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11599:18:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5348,"nodeType":"ExpressionStatement","src":"11599:18:26"},{"expression":{"id":5353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5349,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4691,"src":"11627:7:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":5351,"indexExpression":{"id":5350,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5301,"src":"11635:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11627:16:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5352,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5299,"src":"11646:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11627:21:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5354,"nodeType":"ExpressionStatement","src":"11627:21:26"},{"eventCall":{"arguments":[{"id":5356,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5297,"src":"11673:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5357,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5299,"src":"11679:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5358,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5301,"src":"11683:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5355,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1799,"src":"11664:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11664:27:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5360,"nodeType":"EmitStatement","src":"11659:32:26"},{"expression":{"arguments":[{"id":5362,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5297,"src":"11722:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5363,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5299,"src":"11728:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5364,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5301,"src":"11732:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5361,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5523,"src":"11702:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11702:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5366,"nodeType":"ExpressionStatement","src":"11702:38:26"}]},"documentation":{"id":5295,"nodeType":"StructuredDocumentation","src":"10831:313:26","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":5368,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11158:9:26","nodeType":"FunctionDefinition","parameters":{"id":5302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5297,"mutability":"mutable","name":"from","nameLocation":"11185:4:26","nodeType":"VariableDeclaration","scope":5368,"src":"11177:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5296,"name":"address","nodeType":"ElementaryTypeName","src":"11177:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5299,"mutability":"mutable","name":"to","nameLocation":"11207:2:26","nodeType":"VariableDeclaration","scope":5368,"src":"11199:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5298,"name":"address","nodeType":"ElementaryTypeName","src":"11199:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5301,"mutability":"mutable","name":"tokenId","nameLocation":"11227:7:26","nodeType":"VariableDeclaration","scope":5368,"src":"11219:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5300,"name":"uint256","nodeType":"ElementaryTypeName","src":"11219:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11167:73:26"},"returnParameters":{"id":5303,"nodeType":"ParameterList","parameters":[],"src":"11258:0:26"},"scope":5524,"src":"11149:598:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5390,"nodeType":"Block","src":"11923:100:26","statements":[{"expression":{"id":5380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5376,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4699,"src":"11933:15:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":5378,"indexExpression":{"id":5377,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5373,"src":"11949:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11933:24:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5379,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5371,"src":"11960:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11933:29:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5381,"nodeType":"ExpressionStatement","src":"11933:29:26"},{"eventCall":{"arguments":[{"arguments":[{"id":5384,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5373,"src":"11994:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5383,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4805,"src":"11986:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11986:16:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5386,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5371,"src":"12004:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5387,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5373,"src":"12008:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5382,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1808,"src":"11977:8:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11977:39:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5389,"nodeType":"EmitStatement","src":"11972:44:26"}]},"documentation":{"id":5369,"nodeType":"StructuredDocumentation","src":"11753:101:26","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":5391,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"11868:8:26","nodeType":"FunctionDefinition","parameters":{"id":5374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5371,"mutability":"mutable","name":"to","nameLocation":"11885:2:26","nodeType":"VariableDeclaration","scope":5391,"src":"11877:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5370,"name":"address","nodeType":"ElementaryTypeName","src":"11877:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5373,"mutability":"mutable","name":"tokenId","nameLocation":"11897:7:26","nodeType":"VariableDeclaration","scope":5391,"src":"11889:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5372,"name":"uint256","nodeType":"ElementaryTypeName","src":"11889:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11876:29:26"},"returnParameters":{"id":5375,"nodeType":"ParameterList","parameters":[],"src":"11923:0:26"},"scope":5524,"src":"11859:164:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5422,"nodeType":"Block","src":"12282:184:26","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5402,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"12300:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5403,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5396,"src":"12309:8:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12300:17:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":5405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12319:27:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":5401,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12292:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12292:55:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5407,"nodeType":"ExpressionStatement","src":"12292:55:26"},{"expression":{"id":5414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":5408,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4705,"src":"12357:18:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":5411,"indexExpression":{"id":5409,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"12376:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12357:25:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":5412,"indexExpression":{"id":5410,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5396,"src":"12383:8:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12357:35:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5413,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5398,"src":"12395:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12357:46:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5415,"nodeType":"ExpressionStatement","src":"12357:46:26"},{"eventCall":{"arguments":[{"id":5417,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5394,"src":"12433:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5418,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5396,"src":"12440:8:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5419,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5398,"src":"12450:8:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5416,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"12418:14:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":5420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12418:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5421,"nodeType":"EmitStatement","src":"12413:46:26"}]},"documentation":{"id":5392,"nodeType":"StructuredDocumentation","src":"12029:125:26","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":5423,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"12168:18:26","nodeType":"FunctionDefinition","parameters":{"id":5399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5394,"mutability":"mutable","name":"owner","nameLocation":"12204:5:26","nodeType":"VariableDeclaration","scope":5423,"src":"12196:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5393,"name":"address","nodeType":"ElementaryTypeName","src":"12196:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5396,"mutability":"mutable","name":"operator","nameLocation":"12227:8:26","nodeType":"VariableDeclaration","scope":5423,"src":"12219:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5395,"name":"address","nodeType":"ElementaryTypeName","src":"12219:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5398,"mutability":"mutable","name":"approved","nameLocation":"12250:8:26","nodeType":"VariableDeclaration","scope":5423,"src":"12245:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5397,"name":"bool","nodeType":"ElementaryTypeName","src":"12245:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12186:78:26"},"returnParameters":{"id":5400,"nodeType":"ParameterList","parameters":[],"src":"12282:0:26"},"scope":5524,"src":"12159:307:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5436,"nodeType":"Block","src":"12613:70:26","statements":[{"expression":{"arguments":[{"arguments":[{"id":5431,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5426,"src":"12639:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5430,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"12631:7:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":5432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12631:16:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":5433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12649:26:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":5429,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12623:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12623:53:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5435,"nodeType":"ExpressionStatement","src":"12623:53:26"}]},"documentation":{"id":5424,"nodeType":"StructuredDocumentation","src":"12472:73:26","text":" @dev Reverts if the `tokenId` has not been minted yet."},"id":5437,"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"12559:14:26","nodeType":"FunctionDefinition","parameters":{"id":5427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5426,"mutability":"mutable","name":"tokenId","nameLocation":"12582:7:26","nodeType":"VariableDeclaration","scope":5437,"src":"12574:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5425,"name":"uint256","nodeType":"ElementaryTypeName","src":"12574:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12573:17:26"},"returnParameters":{"id":5428,"nodeType":"ParameterList","parameters":[],"src":"12613:0:26"},"scope":5524,"src":"12550:133:26","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5500,"nodeType":"Block","src":"13390:679:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":5451,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5442,"src":"13404:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13407:4:26","memberName":"code","nodeType":"MemberAccess","src":"13404:7:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13412:6:26","memberName":"length","nodeType":"MemberAccess","src":"13404:14:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13421:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13404:18:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5498,"nodeType":"Block","src":"14027:36:26","statements":[{"expression":{"hexValue":"74727565","id":5496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14048:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":5450,"id":5497,"nodeType":"Return","src":"14041:11:26"}]},"id":5499,"nodeType":"IfStatement","src":"13400:663:26","trueBody":{"id":5495,"nodeType":"Block","src":"13424:597:26","statements":[{"clauses":[{"block":{"id":5475,"nodeType":"Block","src":"13538:91:26","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5469,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5467,"src":"13563:6:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":5470,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"13573:15:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1918_$","typeString":"type(contract IERC721Receiver)"}},"id":5471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13589:16:26","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"13573:32:26","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":5472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13606:8:26","memberName":"selector","nodeType":"MemberAccess","src":"13573:41:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"13563:51:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5450,"id":5474,"nodeType":"Return","src":"13556:58:26"}]},"errorName":"","id":5476,"nodeType":"TryCatchClause","parameters":{"id":5468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5467,"mutability":"mutable","name":"retval","nameLocation":"13530:6:26","nodeType":"VariableDeclaration","scope":5476,"src":"13523:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5466,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13523:6:26","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"13522:15:26"},"src":"13514:115:26"},{"block":{"id":5492,"nodeType":"Block","src":"13658:353:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5480,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5478,"src":"13680:6:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13687:6:26","memberName":"length","nodeType":"MemberAccess","src":"13680:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13697:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13680:18:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5490,"nodeType":"Block","src":"13807:190:26","statements":[{"AST":{"nodeType":"YulBlock","src":"13893:86:26","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13930:2:26","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"13934:6:26"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13926:3:26"},"nodeType":"YulFunctionCall","src":"13926:15:26"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"13949:6:26"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13943:5:26"},"nodeType":"YulFunctionCall","src":"13943:13:26"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13919:6:26"},"nodeType":"YulFunctionCall","src":"13919:38:26"},"nodeType":"YulExpressionStatement","src":"13919:38:26"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":5478,"isOffset":false,"isSlot":false,"src":"13934:6:26","valueSize":1},{"declaration":5478,"isOffset":false,"isSlot":false,"src":"13949:6:26","valueSize":1}],"id":5489,"nodeType":"InlineAssembly","src":"13884:95:26"}]},"id":5491,"nodeType":"IfStatement","src":"13676:321:26","trueBody":{"id":5488,"nodeType":"Block","src":"13700:101:26","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":5485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13729:52:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":5484,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"13722:6:26","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":5486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13722:60:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5487,"nodeType":"ExpressionStatement","src":"13722:60:26"}]}}]},"errorName":"","id":5493,"nodeType":"TryCatchClause","parameters":{"id":5479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5478,"mutability":"mutable","name":"reason","nameLocation":"13650:6:26","nodeType":"VariableDeclaration","scope":5493,"src":"13637:19:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5477,"name":"bytes","nodeType":"ElementaryTypeName","src":"13637:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13636:21:26"},"src":"13630:381:26"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5460,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"13479:10:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13479:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5462,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5440,"src":"13493:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5463,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5444,"src":"13499:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5464,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5446,"src":"13508:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":5457,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5442,"src":"13458:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5456,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"13442:15:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1918_$","typeString":"type(contract IERC721Receiver)"}},"id":5458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13442:19:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1918","typeString":"contract IERC721Receiver"}},"id":5459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13462:16:26","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"13442:36:26","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":5465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13442:71:26","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5494,"nodeType":"TryStatement","src":"13438:573:26"}]}}]},"documentation":{"id":5438,"nodeType":"StructuredDocumentation","src":"12689:541:26","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":5501,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"13244:22:26","nodeType":"FunctionDefinition","parameters":{"id":5447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5440,"mutability":"mutable","name":"from","nameLocation":"13284:4:26","nodeType":"VariableDeclaration","scope":5501,"src":"13276:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5439,"name":"address","nodeType":"ElementaryTypeName","src":"13276:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5442,"mutability":"mutable","name":"to","nameLocation":"13306:2:26","nodeType":"VariableDeclaration","scope":5501,"src":"13298:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5441,"name":"address","nodeType":"ElementaryTypeName","src":"13298:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5444,"mutability":"mutable","name":"tokenId","nameLocation":"13326:7:26","nodeType":"VariableDeclaration","scope":5501,"src":"13318:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5443,"name":"uint256","nodeType":"ElementaryTypeName","src":"13318:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5446,"mutability":"mutable","name":"data","nameLocation":"13356:4:26","nodeType":"VariableDeclaration","scope":5501,"src":"13343:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5445,"name":"bytes","nodeType":"ElementaryTypeName","src":"13343:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13266:100:26"},"returnParameters":{"id":5450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5449,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5501,"src":"13384:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5448,"name":"bool","nodeType":"ElementaryTypeName","src":"13384:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13383:6:26"},"scope":5524,"src":"13235:834:26","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5511,"nodeType":"Block","src":"14745:2:26","statements":[]},"documentation":{"id":5502,"nodeType":"StructuredDocumentation","src":"14075:545:26","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":5512,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"14634:20:26","nodeType":"FunctionDefinition","parameters":{"id":5509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5504,"mutability":"mutable","name":"from","nameLocation":"14672:4:26","nodeType":"VariableDeclaration","scope":5512,"src":"14664:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5503,"name":"address","nodeType":"ElementaryTypeName","src":"14664:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5506,"mutability":"mutable","name":"to","nameLocation":"14694:2:26","nodeType":"VariableDeclaration","scope":5512,"src":"14686:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5505,"name":"address","nodeType":"ElementaryTypeName","src":"14686:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5508,"mutability":"mutable","name":"tokenId","nameLocation":"14714:7:26","nodeType":"VariableDeclaration","scope":5512,"src":"14706:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5507,"name":"uint256","nodeType":"ElementaryTypeName","src":"14706:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14654:73:26"},"returnParameters":{"id":5510,"nodeType":"ParameterList","parameters":[],"src":"14745:0:26"},"scope":5524,"src":"14625:122:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5522,"nodeType":"Block","src":"15238:2:26","statements":[]},"documentation":{"id":5513,"nodeType":"StructuredDocumentation","src":"14753:361:26","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":5523,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"15128:19:26","nodeType":"FunctionDefinition","parameters":{"id":5520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5515,"mutability":"mutable","name":"from","nameLocation":"15165:4:26","nodeType":"VariableDeclaration","scope":5523,"src":"15157:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5514,"name":"address","nodeType":"ElementaryTypeName","src":"15157:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5517,"mutability":"mutable","name":"to","nameLocation":"15187:2:26","nodeType":"VariableDeclaration","scope":5523,"src":"15179:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5516,"name":"address","nodeType":"ElementaryTypeName","src":"15179:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5519,"mutability":"mutable","name":"tokenId","nameLocation":"15207:7:26","nodeType":"VariableDeclaration","scope":5523,"src":"15199:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5518,"name":"uint256","nodeType":"ElementaryTypeName","src":"15199:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15147:73:26"},"returnParameters":{"id":5521,"nodeType":"ParameterList","parameters":[],"src":"15238:0:26"},"scope":5524,"src":"15119:121:26","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":5525,"src":"1382:13860:26","usedErrors":[]}],"src":"302:14941:26"},"id":26},"contracts/mock/ERC20Mock.sol":{"ast":{"absolutePath":"contracts/mock/ERC20Mock.sol","exportedSymbols":{"Context":[2297],"ERC20":[754],"ERC20Mock":[5558],"IERC20":[832],"IERC20Metadata":[857],"Ownable":[112]},"id":5559,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5526,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"33:23:27"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":5527,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5559,"sourceUnit":755,"src":"58:55:27","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":5528,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5559,"sourceUnit":113,"src":"114:52:27","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5529,"name":"ERC20","nameLocations":["190:5:27"],"nodeType":"IdentifierPath","referencedDeclaration":754,"src":"190:5:27"},"id":5530,"nodeType":"InheritanceSpecifier","src":"190:5:27"},{"baseName":{"id":5531,"name":"Ownable","nameLocations":["197:7:27"],"nodeType":"IdentifierPath","referencedDeclaration":112,"src":"197:7:27"},"id":5532,"nodeType":"InheritanceSpecifier","src":"197:7:27"}],"canonicalName":"ERC20Mock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5558,"linearizedBaseContracts":[5558,112,754,857,832,2297],"name":"ERC20Mock","nameLocation":"177:9:27","nodeType":"ContractDefinition","nodes":[{"body":{"id":5541,"nodeType":"Block","src":"279:2:27","statements":[]},"id":5542,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d79546f6b656e","id":5535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"239:9:27","typeDescriptions":{"typeIdentifier":"t_stringliteral_245c734e6d4ec044daf7beffa09d54d4bafba490113c199734d790b04a7390e5","typeString":"literal_string \"MyToken\""},"value":"MyToken"},{"hexValue":"4d544b","id":5536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"250:5:27","typeDescriptions":{"typeIdentifier":"t_stringliteral_793539e36336d70961c91bdb898dff4b065dbb5ef5ac709025f5b68be91dd01e","typeString":"literal_string \"MTK\""},"value":"MTK"}],"id":5537,"kind":"baseConstructorSpecifier","modifierName":{"id":5534,"name":"ERC20","nameLocations":["233:5:27"],"nodeType":"IdentifierPath","referencedDeclaration":754,"src":"233:5:27"},"nodeType":"ModifierInvocation","src":"233:23:27"},{"arguments":[],"id":5539,"kind":"baseConstructorSpecifier","modifierName":{"id":5538,"name":"Ownable","nameLocations":["265:7:27"],"nodeType":"IdentifierPath","referencedDeclaration":112,"src":"265:7:27"},"nodeType":"ModifierInvocation","src":"265:9:27"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5533,"nodeType":"ParameterList","parameters":[],"src":"222:2:27"},"returnParameters":{"id":5540,"nodeType":"ParameterList","parameters":[],"src":"279:0:27"},"scope":5558,"src":"211:70:27","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5556,"nodeType":"Block","src":"346:34:27","statements":[{"expression":{"arguments":[{"id":5552,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5544,"src":"362:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5553,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5546,"src":"366:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5551,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"356:5:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"356:17:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5555,"nodeType":"ExpressionStatement","src":"356:17:27"}]},"functionSelector":"40c10f19","id":5557,"implemented":true,"kind":"function","modifiers":[{"id":5549,"kind":"modifierInvocation","modifierName":{"id":5548,"name":"onlyOwner","nameLocations":["336:9:27"],"nodeType":"IdentifierPath","referencedDeclaration":31,"src":"336:9:27"},"nodeType":"ModifierInvocation","src":"336:9:27"}],"name":"mint","nameLocation":"296:4:27","nodeType":"FunctionDefinition","parameters":{"id":5547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5544,"mutability":"mutable","name":"to","nameLocation":"309:2:27","nodeType":"VariableDeclaration","scope":5557,"src":"301:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5543,"name":"address","nodeType":"ElementaryTypeName","src":"301:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5546,"mutability":"mutable","name":"amount","nameLocation":"321:6:27","nodeType":"VariableDeclaration","scope":5557,"src":"313:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5545,"name":"uint256","nodeType":"ElementaryTypeName","src":"313:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"300:28:27"},"returnParameters":{"id":5550,"nodeType":"ParameterList","parameters":[],"src":"346:0:27"},"scope":5558,"src":"287:93:27","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":5559,"src":"168:214:27","usedErrors":[]}],"src":"33:349:27"},"id":27},"contracts/mock/NFTMock.sol":{"ast":{"absolutePath":"contracts/mock/NFTMock.sol","exportedSymbols":{"Address":[2275],"Context":[2297],"ERC165":[2550],"ERC721":[1784],"IERC165":[2562],"IERC721":[1900],"IERC721Metadata":[1945],"IERC721Receiver":[1918],"Math":[3428],"NFTMock":[5589],"SignedMath":[3533],"Strings":[2526]},"id":5590,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5560,"literals":["solidity","^","0.8",".8"],"nodeType":"PragmaDirective","src":"33:23:28"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"@openzeppelin/contracts/token/ERC721/ERC721.sol","id":5561,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5590,"sourceUnit":1785,"src":"58:57:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5562,"name":"ERC721","nameLocations":["137:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":1784,"src":"137:6:28"},"id":5563,"nodeType":"InheritanceSpecifier","src":"137:6:28"}],"canonicalName":"NFTMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":5589,"linearizedBaseContracts":[5589,1784,1945,1900,2550,2562,2297],"name":"NFTMock","nameLocation":"126:7:28","nodeType":"ContractDefinition","nodes":[{"body":{"id":5574,"nodeType":"Block","src":"278:7:28","statements":[]},"id":5575,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":5570,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5565,"src":"262:5:28","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":5571,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5567,"src":"269:7:28","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":5572,"kind":"baseConstructorSpecifier","modifierName":{"id":5569,"name":"ERC721","nameLocations":["255:6:28"],"nodeType":"IdentifierPath","referencedDeclaration":1784,"src":"255:6:28"},"nodeType":"ModifierInvocation","src":"255:22:28"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5565,"mutability":"mutable","name":"name_","nameLocation":"225:5:28","nodeType":"VariableDeclaration","scope":5575,"src":"211:19:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5564,"name":"string","nodeType":"ElementaryTypeName","src":"211:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5567,"mutability":"mutable","name":"symbol_","nameLocation":"246:7:28","nodeType":"VariableDeclaration","scope":5575,"src":"232:21:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5566,"name":"string","nodeType":"ElementaryTypeName","src":"232:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"210:44:28"},"returnParameters":{"id":5573,"nodeType":"ParameterList","parameters":[],"src":"278:0:28"},"scope":5589,"src":"199:86:28","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5587,"nodeType":"Block","src":"343:35:28","statements":[{"expression":{"arguments":[{"id":5583,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5577,"src":"359:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5584,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5579,"src":"363:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5582,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"353:5:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"353:18:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5586,"nodeType":"ExpressionStatement","src":"353:18:28"}]},"functionSelector":"40c10f19","id":5588,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"300:4:28","nodeType":"FunctionDefinition","parameters":{"id":5580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5577,"mutability":"mutable","name":"to","nameLocation":"313:2:28","nodeType":"VariableDeclaration","scope":5588,"src":"305:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5576,"name":"address","nodeType":"ElementaryTypeName","src":"305:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5579,"mutability":"mutable","name":"tokenId","nameLocation":"325:7:28","nodeType":"VariableDeclaration","scope":5588,"src":"317:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5578,"name":"uint256","nodeType":"ElementaryTypeName","src":"317:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"304:29:28"},"returnParameters":{"id":5581,"nodeType":"ParameterList","parameters":[],"src":"343:0:28"},"scope":5589,"src":"291:87:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5590,"src":"117:263:28","usedErrors":[]}],"src":"33:347:28"},"id":28}},"contracts":{"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@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 ERC1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. _Available since v4.1._","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 _data"}}},"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.17+commit.8df45f5f\"},\"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 ERC1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. _Available since v4.1._\",\"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 _data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"london\",\"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 v4.4.1 (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n *\\n * _Available since v4.1._\\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 _data\\n */\\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol":{"IERC1155Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"_Available since v3.1._","kind":"dev","methods":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` (i.e. 0xbc197c81, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","ids":"An array containing ids of each token being transferred (order and length must match values array)","operator":"The address which initiated the batch transfer (i.e. msg.sender)","values":"An array containing amounts of each token being transferred (order and length must match ids array)"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed"}},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` (i.e. 0xf23a6e61, or its own function selector).","params":{"data":"Additional data with no specified format","from":"The address which previously owned the token","id":"The ID of the token being transferred","operator":"The address which initiated the transfer (i.e. msg.sender)","value":"The amount of tokens being transferred"},"returns":{"_0":"`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed"}},"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[EIP 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":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"_Available since v3.1._\",\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` (i.e. 0xbc197c81, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"An array containing ids of each token being transferred (order and length must match values array)\",\"operator\":\"The address which initiated the batch transfer (i.e. msg.sender)\",\"values\":\"An array containing amounts of each token being transferred (order and length must match ids array)\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` (i.e. 0xf23a6e61, or its own function selector).\",\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"id\":\"The ID of the token being transferred\",\"operator\":\"The address which initiated the transfer (i.e. msg.sender)\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"`bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\"}},\"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[EIP 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/token/ERC1155/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.","kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_212":{"entryPoint":null,"id":212,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":287,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":453,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":536,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":393,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":90,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:29"},"nodeType":"YulFunctionCall","src":"66:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:29"},"nodeType":"YulFunctionCall","src":"56:31:29"},"nodeType":"YulExpressionStatement","src":"56:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:29","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:29"},"nodeType":"YulFunctionCall","src":"96:15:29"},"nodeType":"YulExpressionStatement","src":"96:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:29"},"nodeType":"YulFunctionCall","src":"120:15:29"},"nodeType":"YulExpressionStatement","src":"120:15:29"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:29"},{"body":{"nodeType":"YulBlock","src":"210:776:29","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:29"},"nodeType":"YulFunctionCall","src":"261:12:29"},"nodeType":"YulExpressionStatement","src":"261:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:29"},"nodeType":"YulFunctionCall","src":"234:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:29"},"nodeType":"YulFunctionCall","src":"230:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:29"},"nodeType":"YulFunctionCall","src":"223:35:29"},"nodeType":"YulIf","src":"220:55:29"},{"nodeType":"YulVariableDeclaration","src":"284:23:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:29"},"nodeType":"YulFunctionCall","src":"294:13:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:29"},"nodeType":"YulFunctionCall","src":"330:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:29"},"nodeType":"YulFunctionCall","src":"326:18:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:29"},"nodeType":"YulFunctionCall","src":"369:18:29"},"nodeType":"YulExpressionStatement","src":"369:18:29"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:29"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:29"},"nodeType":"YulFunctionCall","src":"356:10:29"},"nodeType":"YulIf","src":"353:36:29"},{"nodeType":"YulVariableDeclaration","src":"398:17:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:29"},"nodeType":"YulFunctionCall","src":"408:7:29"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:29","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:29"},"nodeType":"YulFunctionCall","src":"438:9:29"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:29","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:29"},"nodeType":"YulFunctionCall","src":"498:13:29"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:29"},"nodeType":"YulFunctionCall","src":"494:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:29","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:29"},"nodeType":"YulFunctionCall","src":"490:31:29"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:29"},"nodeType":"YulFunctionCall","src":"486:40:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:29"},"nodeType":"YulFunctionCall","src":"474:53:29"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:29"},"nodeType":"YulFunctionCall","src":"588:18:29"},"nodeType":"YulExpressionStatement","src":"588:18:29"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:29"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:29"},"nodeType":"YulFunctionCall","src":"542:18:29"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:29"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:29"},"nodeType":"YulFunctionCall","src":"562:22:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:29"},"nodeType":"YulFunctionCall","src":"539:46:29"},"nodeType":"YulIf","src":"536:72:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:29","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:29"},"nodeType":"YulFunctionCall","src":"617:22:29"},"nodeType":"YulExpressionStatement","src":"617:22:29"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:29"},"nodeType":"YulFunctionCall","src":"648:18:29"},"nodeType":"YulExpressionStatement","src":"648:18:29"},{"nodeType":"YulVariableDeclaration","src":"675:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:29","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:29"},"nodeType":"YulFunctionCall","src":"737:12:29"},"nodeType":"YulExpressionStatement","src":"737:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:29"},"nodeType":"YulFunctionCall","src":"708:15:29"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:29"},"nodeType":"YulFunctionCall","src":"704:24:29"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:29"},"nodeType":"YulFunctionCall","src":"701:33:29"},"nodeType":"YulIf","src":"698:53:29"},{"nodeType":"YulVariableDeclaration","src":"760:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:29"},"nodeType":"YulFunctionCall","src":"850:14:29"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:29"},"nodeType":"YulFunctionCall","src":"846:23:29"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:29"},"nodeType":"YulFunctionCall","src":"881:14:29"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:29"},"nodeType":"YulFunctionCall","src":"877:23:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:29"},"nodeType":"YulFunctionCall","src":"871:30:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:29"},"nodeType":"YulFunctionCall","src":"839:63:29"},"nodeType":"YulExpressionStatement","src":"839:63:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:29"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:29"},"nodeType":"YulFunctionCall","src":"787:9:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:29","statements":[{"nodeType":"YulAssignment","src":"799:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:29"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:29"},"nodeType":"YulFunctionCall","src":"804:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:29","statements":[]},"src":"779:133:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:29"},"nodeType":"YulFunctionCall","src":"932:15:29"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:29"},"nodeType":"YulFunctionCall","src":"928:24:29"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:29"},"nodeType":"YulFunctionCall","src":"921:35:29"},"nodeType":"YulExpressionStatement","src":"921:35:29"},{"nodeType":"YulAssignment","src":"965:15:29","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:29"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:29"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:29","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:29","type":""}],"src":"146:840:29"},{"body":{"nodeType":"YulBlock","src":"1109:444:29","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:29"},"nodeType":"YulFunctionCall","src":"1157:12:29"},"nodeType":"YulExpressionStatement","src":"1157:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:29"},"nodeType":"YulFunctionCall","src":"1126:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:29"},"nodeType":"YulFunctionCall","src":"1122:32:29"},"nodeType":"YulIf","src":"1119:52:29"},{"nodeType":"YulVariableDeclaration","src":"1180:30:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:29"},"nodeType":"YulFunctionCall","src":"1194:16:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:29"},"nodeType":"YulFunctionCall","src":"1233:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:29"},"nodeType":"YulFunctionCall","src":"1229:18:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:29"},"nodeType":"YulFunctionCall","src":"1276:12:29"},"nodeType":"YulExpressionStatement","src":"1276:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:29"},"nodeType":"YulFunctionCall","src":"1259:14:29"},"nodeType":"YulIf","src":"1256:34:29"},{"nodeType":"YulAssignment","src":"1299:71:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:29"},"nodeType":"YulFunctionCall","src":"1338:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:29"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:29"},"nodeType":"YulFunctionCall","src":"1309:61:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:29"},"nodeType":"YulFunctionCall","src":"1401:18:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:29"},"nodeType":"YulFunctionCall","src":"1395:25:29"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:29"},"nodeType":"YulFunctionCall","src":"1451:12:29"},"nodeType":"YulExpressionStatement","src":"1451:12:29"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:29"},"nodeType":"YulFunctionCall","src":"1432:16:29"},"nodeType":"YulIf","src":"1429:36:29"},{"nodeType":"YulAssignment","src":"1474:73:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:29"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:29"},"nodeType":"YulFunctionCall","src":"1513:24:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:29"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:29"},"nodeType":"YulFunctionCall","src":"1484:63:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:29"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:29","type":""}],"src":"991:562:29"},{"body":{"nodeType":"YulBlock","src":"1613:325:29","statements":[{"nodeType":"YulAssignment","src":"1623:22:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:29","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:29"},"nodeType":"YulFunctionCall","src":"1633:12:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:29","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:29"},"nodeType":"YulFunctionCall","src":"1680:12:29"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:29","statements":[{"nodeType":"YulAssignment","src":"1733:27:29","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:29","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:29"},"nodeType":"YulFunctionCall","src":"1743:17:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:29"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:29"},"nodeType":"YulFunctionCall","src":"1704:26:29"},"nodeType":"YulIf","src":"1701:61:29"},{"body":{"nodeType":"YulBlock","src":"1821:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:29"},"nodeType":"YulFunctionCall","src":"1845:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:29"},"nodeType":"YulFunctionCall","src":"1835:31:29"},"nodeType":"YulExpressionStatement","src":"1835:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:29","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:29"},"nodeType":"YulFunctionCall","src":"1879:15:29"},"nodeType":"YulExpressionStatement","src":"1879:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:29"},"nodeType":"YulFunctionCall","src":"1907:15:29"},"nodeType":"YulExpressionStatement","src":"1907:15:29"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:29"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:29","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:29"},"nodeType":"YulFunctionCall","src":"1797:14:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:29"},"nodeType":"YulFunctionCall","src":"1774:38:29"},"nodeType":"YulIf","src":"1771:161:29"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:29","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:29","type":""}],"src":"1558:380:29"},{"body":{"nodeType":"YulBlock","src":"1999:65:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:29","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:29"},"nodeType":"YulFunctionCall","src":"2009:14:29"},"nodeType":"YulExpressionStatement","src":"2009:14:29"},{"nodeType":"YulAssignment","src":"2032:26:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:29","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:29"},"nodeType":"YulFunctionCall","src":"2040:18:29"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:29"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:29","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:29","type":""}],"src":"1943:121:29"},{"body":{"nodeType":"YulBlock","src":"2150:464:29","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:29","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:29","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:29","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:29"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:29"},"nodeType":"YulFunctionCall","src":"2221:17:29"},"nodeType":"YulExpressionStatement","src":"2221:17:29"},{"nodeType":"YulVariableDeclaration","src":"2251:31:29","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:29","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:29"},"nodeType":"YulFunctionCall","src":"2263:19:29"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:29","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:29"},"nodeType":"YulFunctionCall","src":"2331:19:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:29"},"nodeType":"YulFunctionCall","src":"2324:27:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:29"},"nodeType":"YulFunctionCall","src":"2314:38:29"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:29","statements":[{"nodeType":"YulAssignment","src":"2391:19:29","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:29"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:29"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:29","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:29"},"nodeType":"YulFunctionCall","src":"2368:20:29"},"nodeType":"YulIf","src":"2365:47:29"},{"nodeType":"YulVariableDeclaration","src":"2425:41:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:29","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:29"},"nodeType":"YulFunctionCall","src":"2452:12:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:29"},"nodeType":"YulFunctionCall","src":"2445:20:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:29"},"nodeType":"YulFunctionCall","src":"2435:31:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:29","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:29"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:29","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:29"},"nodeType":"YulFunctionCall","src":"2579:17:29"},"nodeType":"YulExpressionStatement","src":"2579:17:29"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:29"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:29"},"nodeType":"YulFunctionCall","src":"2524:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:29","statements":[{"nodeType":"YulAssignment","src":"2540:22:29","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:29"},"nodeType":"YulFunctionCall","src":"2549:13:29"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:29"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:29","statements":[]},"src":"2516:82:29"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:29","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:29"},"nodeType":"YulFunctionCall","src":"2163:11:29"},"nodeType":"YulIf","src":"2160:448:29"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:29","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:29","type":""}],"src":"2069:545:29"},{"body":{"nodeType":"YulBlock","src":"2704:81:29","statements":[{"nodeType":"YulAssignment","src":"2714:65:29","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:29"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:29","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:29"},"nodeType":"YulFunctionCall","src":"2743:11:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:29"},"nodeType":"YulFunctionCall","src":"2756:6:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:29"},"nodeType":"YulFunctionCall","src":"2739:24:29"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:29"},"nodeType":"YulFunctionCall","src":"2735:29:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:29"},"nodeType":"YulFunctionCall","src":"2725:40:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:29","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:29"},"nodeType":"YulFunctionCall","src":"2767:11:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:29"},"nodeType":"YulFunctionCall","src":"2722:57:29"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:29"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:29","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:29","type":""}],"src":"2619:166:29"},{"body":{"nodeType":"YulBlock","src":"2886:1256:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:29","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:29"},"nodeType":"YulFunctionCall","src":"2910:10:29"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:29"},"nodeType":"YulFunctionCall","src":"2965:18:29"},"nodeType":"YulExpressionStatement","src":"2965:18:29"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:29"},"nodeType":"YulFunctionCall","src":"2947:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:29"},"nodeType":"YulFunctionCall","src":"2943:18:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:29"},"nodeType":"YulFunctionCall","src":"2932:30:29"},"nodeType":"YulIf","src":"2929:56:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:29"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:29"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:29"},"nodeType":"YulFunctionCall","src":"3070:11:29"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:29"},"nodeType":"YulFunctionCall","src":"3044:38:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:29"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:29"},"nodeType":"YulFunctionCall","src":"2994:97:29"},"nodeType":"YulExpressionStatement","src":"2994:97:29"},{"nodeType":"YulVariableDeclaration","src":"3100:18:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:29","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:29","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:29","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:29","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:29"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:29"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:29","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:29"},"nodeType":"YulFunctionCall","src":"3270:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:29"},"nodeType":"YulFunctionCall","src":"3258:20:29"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:29","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:29"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:29"},"nodeType":"YulFunctionCall","src":"3305:35:29"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:29","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:29"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:29"},"nodeType":"YulFunctionCall","src":"3479:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:29"},"nodeType":"YulFunctionCall","src":"3473:26:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:29"},"nodeType":"YulFunctionCall","src":"3458:42:29"},"nodeType":"YulExpressionStatement","src":"3458:42:29"},{"nodeType":"YulAssignment","src":"3517:24:29","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:29"},"nodeType":"YulFunctionCall","src":"3527:14:29"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:29"}]},{"nodeType":"YulAssignment","src":"3558:40:29","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:29"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:29"},"nodeType":"YulFunctionCall","src":"3571:27:29"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:29"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:29"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:29"},"nodeType":"YulFunctionCall","src":"3384:14:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:29","statements":[{"nodeType":"YulAssignment","src":"3401:24:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:29"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:29"},"nodeType":"YulFunctionCall","src":"3406:19:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:29","statements":[]},"src":"3376:236:29"},{"body":{"nodeType":"YulBlock","src":"3660:166:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:29","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:29"},"nodeType":"YulFunctionCall","src":"3701:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:29"},"nodeType":"YulFunctionCall","src":"3695:26:29"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:29","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:29"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:29","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:29"},"nodeType":"YulFunctionCall","src":"3780:14:29"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:29","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:29"},"nodeType":"YulFunctionCall","src":"3776:24:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:29"},"nodeType":"YulFunctionCall","src":"3802:6:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:29"},"nodeType":"YulFunctionCall","src":"3772:37:29"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:29"},"nodeType":"YulFunctionCall","src":"3768:42:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:29"},"nodeType":"YulFunctionCall","src":"3753:58:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:29"},"nodeType":"YulFunctionCall","src":"3738:74:29"},"nodeType":"YulExpressionStatement","src":"3738:74:29"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:29"},"nodeType":"YulFunctionCall","src":"3628:19:29"},"nodeType":"YulIf","src":"3625:201:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:29","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:29"},"nodeType":"YulFunctionCall","src":"3856:14:29"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:29"},"nodeType":"YulFunctionCall","src":"3852:22:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:29"},"nodeType":"YulFunctionCall","src":"3839:36:29"},"nodeType":"YulExpressionStatement","src":"3839:36:29"}]},"nodeType":"YulCase","src":"3222:663:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:29","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:29","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:29","statements":[{"nodeType":"YulAssignment","src":"3983:35:29","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:29"},"nodeType":"YulFunctionCall","src":"3998:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:29"},"nodeType":"YulFunctionCall","src":"3992:26:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:29"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:29"},"nodeType":"YulIf","src":"3943:89:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:29"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:29"},"nodeType":"YulFunctionCall","src":"4058:67:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:29"},"nodeType":"YulFunctionCall","src":"4045:81:29"},"nodeType":"YulExpressionStatement","src":"4045:81:29"}]},"nodeType":"YulCase","src":"3894:242:29","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:29","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:29"},"nodeType":"YulFunctionCall","src":"3199:14:29"},"nodeType":"YulSwitch","src":"3192:944:29"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:29","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:29","type":""}],"src":"2790:1352:29"}]},"contents":"{\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_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162000b4638038062000b4683398101604081905262000034916200011f565b600362000042838262000218565b50600462000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61085280620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069c565b60405180910390f35b6100df6100da366004610706565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610730565b61024c565b604051601281526020016100c3565b6100df610131366004610706565b610270565b6100f361014436600461076c565b6001600160a01b031660009081526020819052604090205490565b6100b6610292565b6100df610175366004610706565b6102a1565b6100df610188366004610706565b610321565b6100f361019b36600461078e565b61032f565b6060600380546101af906107c1565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c1565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b60003361024081858561035a565b60019150505b92915050565b60003361025a85828561047e565b6102658585856104f8565b506001949350505050565b600033610240818585610283838361032f565b61028d91906107fb565b61035a565b6060600480546101af906107c1565b600033816102af828661032f565b9050838110156103145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610265828686840361035a565b6000336102408185856104f8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161030b565b6001600160a01b03821661041d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161030b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061048a848461032f565b905060001981146104f257818110156104e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161030b565b6104f2848484840361035a565b50505050565b6001600160a01b03831661055c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161030b565b6001600160a01b0382166105be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161030b565b6001600160a01b038316600090815260208190526040902054818110156106365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161030b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f2565b600060208083528351808285015260005b818110156106c9578581018301518582016040015282016106ad565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461070157600080fd5b919050565b6000806040838503121561071957600080fd5b610722836106ea565b946020939093013593505050565b60008060006060848603121561074557600080fd5b61074e846106ea565b925061075c602085016106ea565b9150604084013590509250925092565b60006020828403121561077e57600080fd5b610787826106ea565b9392505050565b600080604083850312156107a157600080fd5b6107aa836106ea565b91506107b8602084016106ea565b90509250929050565b600181811c908216806107d557607f821691505b6020821081036107f557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024657634e487b7160e01b600052601160045260246000fdfea26469706673582212204e1b5c9203fdcf282118254837716598ef63fcaee013682e64d3a332c014b18a64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xB46 CODESIZE SUB DUP1 PUSH3 0xB46 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x3 PUSH3 0x42 DUP4 DUP3 PUSH3 0x218 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x51 DUP3 DUP3 PUSH3 0x218 JUMP JUMPDEST POP POP POP PUSH3 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9F JUMPI PUSH3 0x9F PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCA JUMPI PUSH3 0xCA PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x159 DUP7 DUP4 DUP8 ADD PUSH3 0x70 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x17F DUP6 DUP3 DUP7 ADD PUSH3 0x70 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x19E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1EE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x20F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x234 JUMPI PUSH3 0x234 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x24C DUP2 PUSH3 0x245 DUP5 SLOAD PUSH3 0x189 JUMP JUMPDEST DUP5 PUSH3 0x1C5 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x284 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x20F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x294 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x852 DUP1 PUSH3 0x2F4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x114 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC3 SWAP2 SWAP1 PUSH2 0x69C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDF PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0x706 JUMP JUMPDEST PUSH2 0x232 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x24C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x706 JUMP JUMPDEST PUSH2 0x270 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x76C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x292 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x175 CALLDATASIZE PUSH1 0x4 PUSH2 0x706 JUMP JUMPDEST PUSH2 0x2A1 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x188 CALLDATASIZE PUSH1 0x4 PUSH2 0x706 JUMP JUMPDEST PUSH2 0x321 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x78E JUMP JUMPDEST PUSH2 0x32F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x1AF SWAP1 PUSH2 0x7C1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1DB SWAP1 PUSH2 0x7C1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x228 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1FD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x228 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x20B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x240 DUP2 DUP6 DUP6 PUSH2 0x35A JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x25A DUP6 DUP3 DUP6 PUSH2 0x47E JUMP JUMPDEST PUSH2 0x265 DUP6 DUP6 DUP6 PUSH2 0x4F8 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x240 DUP2 DUP6 DUP6 PUSH2 0x283 DUP4 DUP4 PUSH2 0x32F JUMP JUMPDEST PUSH2 0x28D SWAP2 SWAP1 PUSH2 0x7FB JUMP JUMPDEST PUSH2 0x35A JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1AF SWAP1 PUSH2 0x7C1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x2AF DUP3 DUP7 PUSH2 0x32F JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x314 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x265 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x35A JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x240 DUP2 DUP6 DUP6 PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x41D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48A DUP5 DUP5 PUSH2 0x32F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 NOT DUP2 EQ PUSH2 0x4F2 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x30B JUMP JUMPDEST PUSH2 0x4F2 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x35A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x55C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x636 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6C9 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x6AD JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x722 DUP4 PUSH2 0x6EA JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74E DUP5 PUSH2 0x6EA JUMP JUMPDEST SWAP3 POP PUSH2 0x75C PUSH1 0x20 DUP6 ADD PUSH2 0x6EA JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x787 DUP3 PUSH2 0x6EA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7AA DUP4 PUSH2 0x6EA JUMP JUMPDEST SWAP2 POP PUSH2 0x7B8 PUSH1 0x20 DUP5 ADD PUSH2 0x6EA JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x7D5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x7F5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x246 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E SHL 0x5C SWAP3 SUB REVERT 0xCF 0x28 0x21 XOR 0x25 BASEFEE CALLDATACOPY PUSH18 0x6598EF63FCAEE013682E64D3A332C014B18A PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"1532:11312:3:-:0;;;1980:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2046:5;:13;2054:5;2046;:13;:::i;:::-;-1:-1:-1;2069:7:3;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;1532:11312;;14:127:29;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:29;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:29;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:29:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:29;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:29;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:29;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:29;;;3992:26;3943:89;-1:-1:-1;;2747:1:29;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:29;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:29;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:29;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:29:o;:::-;1532:11312:3;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_753":{"entryPoint":null,"id":753,"parameterSlots":3,"returnSlots":0},"@_approve_688":{"entryPoint":858,"id":688,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_742":{"entryPoint":null,"id":742,"parameterSlots":3,"returnSlots":0},"@_msgSender_2287":{"entryPoint":null,"id":2287,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_731":{"entryPoint":1150,"id":731,"parameterSlots":3,"returnSlots":0},"@_transfer_514":{"entryPoint":1272,"id":514,"parameterSlots":3,"returnSlots":0},"@allowance_309":{"entryPoint":815,"id":309,"parameterSlots":2,"returnSlots":1},"@approve_334":{"entryPoint":562,"id":334,"parameterSlots":2,"returnSlots":1},"@balanceOf_266":{"entryPoint":null,"id":266,"parameterSlots":1,"returnSlots":1},"@decimals_242":{"entryPoint":null,"id":242,"parameterSlots":0,"returnSlots":1},"@decreaseAllowance_437":{"entryPoint":673,"id":437,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_396":{"entryPoint":624,"id":396,"parameterSlots":2,"returnSlots":1},"@name_222":{"entryPoint":416,"id":222,"parameterSlots":0,"returnSlots":1},"@symbol_232":{"entryPoint":658,"id":232,"parameterSlots":0,"returnSlots":1},"@totalSupply_252":{"entryPoint":null,"id":252,"parameterSlots":0,"returnSlots":1},"@transferFrom_367":{"entryPoint":588,"id":367,"parameterSlots":3,"returnSlots":1},"@transfer_291":{"entryPoint":801,"id":291,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":1770,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":1900,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":1934,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":1840,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":1798,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1692,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__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_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2043,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":1985,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5754:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"135:427:29","statements":[{"nodeType":"YulVariableDeclaration","src":"145:12:29","value":{"kind":"number","nodeType":"YulLiteral","src":"155:2:29","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"149:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"173:9:29"},{"name":"_1","nodeType":"YulIdentifier","src":"184:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"166:6:29"},"nodeType":"YulFunctionCall","src":"166:21:29"},"nodeType":"YulExpressionStatement","src":"166:21:29"},{"nodeType":"YulVariableDeclaration","src":"196:27:29","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"216:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"210:5:29"},"nodeType":"YulFunctionCall","src":"210:13:29"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"200:6:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"243:9:29"},{"name":"_1","nodeType":"YulIdentifier","src":"254:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"239:3:29"},"nodeType":"YulFunctionCall","src":"239:18:29"},{"name":"length","nodeType":"YulIdentifier","src":"259:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"232:6:29"},"nodeType":"YulFunctionCall","src":"232:34:29"},"nodeType":"YulExpressionStatement","src":"232:34:29"},{"nodeType":"YulVariableDeclaration","src":"275:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"284:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"279:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"344:90:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"373:9:29"},{"name":"i","nodeType":"YulIdentifier","src":"384:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"369:3:29"},"nodeType":"YulFunctionCall","src":"369:17:29"},{"kind":"number","nodeType":"YulLiteral","src":"388:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:29"},"nodeType":"YulFunctionCall","src":"365:26:29"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"407:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"415:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"403:3:29"},"nodeType":"YulFunctionCall","src":"403:14:29"},{"name":"_1","nodeType":"YulIdentifier","src":"419:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"399:3:29"},"nodeType":"YulFunctionCall","src":"399:23:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"393:5:29"},"nodeType":"YulFunctionCall","src":"393:30:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"358:6:29"},"nodeType":"YulFunctionCall","src":"358:66:29"},"nodeType":"YulExpressionStatement","src":"358:66:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"305:1:29"},{"name":"length","nodeType":"YulIdentifier","src":"308:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"302:2:29"},"nodeType":"YulFunctionCall","src":"302:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"316:19:29","statements":[{"nodeType":"YulAssignment","src":"318:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"327:1:29"},{"name":"_1","nodeType":"YulIdentifier","src":"330:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"323:3:29"},"nodeType":"YulFunctionCall","src":"323:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"318:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"298:3:29","statements":[]},"src":"294:140:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"458:9:29"},{"name":"length","nodeType":"YulIdentifier","src":"469:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"454:3:29"},"nodeType":"YulFunctionCall","src":"454:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"478:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"450:3:29"},"nodeType":"YulFunctionCall","src":"450:31:29"},{"kind":"number","nodeType":"YulLiteral","src":"483:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"443:6:29"},"nodeType":"YulFunctionCall","src":"443:42:29"},"nodeType":"YulExpressionStatement","src":"443:42:29"},{"nodeType":"YulAssignment","src":"494:62:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"510:9:29"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"529:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"537:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"525:3:29"},"nodeType":"YulFunctionCall","src":"525:15:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"546:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"542:3:29"},"nodeType":"YulFunctionCall","src":"542:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"521:3:29"},"nodeType":"YulFunctionCall","src":"521:29:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"506:3:29"},"nodeType":"YulFunctionCall","src":"506:45:29"},{"kind":"number","nodeType":"YulLiteral","src":"553:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"502:3:29"},"nodeType":"YulFunctionCall","src":"502:54:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"494:4:29"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"104:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"115:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"126:4:29","type":""}],"src":"14:548:29"},{"body":{"nodeType":"YulBlock","src":"616:124:29","statements":[{"nodeType":"YulAssignment","src":"626:29:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"648:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"635:12:29"},"nodeType":"YulFunctionCall","src":"635:20:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"626:5:29"}]},{"body":{"nodeType":"YulBlock","src":"718:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"727:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"730:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"720:6:29"},"nodeType":"YulFunctionCall","src":"720:12:29"},"nodeType":"YulExpressionStatement","src":"720:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"677:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"688:5:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"708:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"699:3:29"},"nodeType":"YulFunctionCall","src":"699:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"712:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"695:3:29"},"nodeType":"YulFunctionCall","src":"695:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"684:3:29"},"nodeType":"YulFunctionCall","src":"684:31:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"674:2:29"},"nodeType":"YulFunctionCall","src":"674:42:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"667:6:29"},"nodeType":"YulFunctionCall","src":"667:50:29"},"nodeType":"YulIf","src":"664:70:29"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"595:6:29","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"606:5:29","type":""}],"src":"567:173:29"},{"body":{"nodeType":"YulBlock","src":"832:167:29","statements":[{"body":{"nodeType":"YulBlock","src":"878:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"887:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"890:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"880:6:29"},"nodeType":"YulFunctionCall","src":"880:12:29"},"nodeType":"YulExpressionStatement","src":"880:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"853:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"862:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"849:3:29"},"nodeType":"YulFunctionCall","src":"849:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"874:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"845:3:29"},"nodeType":"YulFunctionCall","src":"845:32:29"},"nodeType":"YulIf","src":"842:52:29"},{"nodeType":"YulAssignment","src":"903:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"932:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"913:18:29"},"nodeType":"YulFunctionCall","src":"913:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"903:6:29"}]},{"nodeType":"YulAssignment","src":"951:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"978:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"989:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"974:3:29"},"nodeType":"YulFunctionCall","src":"974:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"961:12:29"},"nodeType":"YulFunctionCall","src":"961:32:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"951:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"790:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"801:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"813:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"821:6:29","type":""}],"src":"745:254:29"},{"body":{"nodeType":"YulBlock","src":"1099:92:29","statements":[{"nodeType":"YulAssignment","src":"1109:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1132:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1117:3:29"},"nodeType":"YulFunctionCall","src":"1117:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1109:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1151:9:29"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1176:6:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1169:6:29"},"nodeType":"YulFunctionCall","src":"1169:14:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1162:6:29"},"nodeType":"YulFunctionCall","src":"1162:22:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1144:6:29"},"nodeType":"YulFunctionCall","src":"1144:41:29"},"nodeType":"YulExpressionStatement","src":"1144:41:29"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1068:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1079:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1090:4:29","type":""}],"src":"1004:187:29"},{"body":{"nodeType":"YulBlock","src":"1297:76:29","statements":[{"nodeType":"YulAssignment","src":"1307:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1319:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1330:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1315:3:29"},"nodeType":"YulFunctionCall","src":"1315:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1307:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1349:9:29"},{"name":"value0","nodeType":"YulIdentifier","src":"1360:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1342:6:29"},"nodeType":"YulFunctionCall","src":"1342:25:29"},"nodeType":"YulExpressionStatement","src":"1342:25:29"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1266:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1277:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1288:4:29","type":""}],"src":"1196:177:29"},{"body":{"nodeType":"YulBlock","src":"1482:224:29","statements":[{"body":{"nodeType":"YulBlock","src":"1528:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1537:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1540:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1530:6:29"},"nodeType":"YulFunctionCall","src":"1530:12:29"},"nodeType":"YulExpressionStatement","src":"1530:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1503:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1512:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1499:3:29"},"nodeType":"YulFunctionCall","src":"1499:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1524:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1495:3:29"},"nodeType":"YulFunctionCall","src":"1495:32:29"},"nodeType":"YulIf","src":"1492:52:29"},{"nodeType":"YulAssignment","src":"1553:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1582:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1563:18:29"},"nodeType":"YulFunctionCall","src":"1563:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1553:6:29"}]},{"nodeType":"YulAssignment","src":"1601:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1634:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1645:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1630:3:29"},"nodeType":"YulFunctionCall","src":"1630:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1611:18:29"},"nodeType":"YulFunctionCall","src":"1611:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1601:6:29"}]},{"nodeType":"YulAssignment","src":"1658:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1685:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1696:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1681:3:29"},"nodeType":"YulFunctionCall","src":"1681:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1668:12:29"},"nodeType":"YulFunctionCall","src":"1668:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1658:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1432:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1443:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1455:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1463:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1471:6:29","type":""}],"src":"1378:328:29"},{"body":{"nodeType":"YulBlock","src":"1808:87:29","statements":[{"nodeType":"YulAssignment","src":"1818:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1830:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1841:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1826:3:29"},"nodeType":"YulFunctionCall","src":"1826:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1818:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1860:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1875:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1883:4:29","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1871:3:29"},"nodeType":"YulFunctionCall","src":"1871:17:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1853:6:29"},"nodeType":"YulFunctionCall","src":"1853:36:29"},"nodeType":"YulExpressionStatement","src":"1853:36:29"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1777:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1788:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1799:4:29","type":""}],"src":"1711:184:29"},{"body":{"nodeType":"YulBlock","src":"1970:116:29","statements":[{"body":{"nodeType":"YulBlock","src":"2016:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2025:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2028:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2018:6:29"},"nodeType":"YulFunctionCall","src":"2018:12:29"},"nodeType":"YulExpressionStatement","src":"2018:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1991:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2000:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1987:3:29"},"nodeType":"YulFunctionCall","src":"1987:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2012:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1983:3:29"},"nodeType":"YulFunctionCall","src":"1983:32:29"},"nodeType":"YulIf","src":"1980:52:29"},{"nodeType":"YulAssignment","src":"2041:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2070:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2051:18:29"},"nodeType":"YulFunctionCall","src":"2051:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2041:6:29"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1936:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1947:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1959:6:29","type":""}],"src":"1900:186:29"},{"body":{"nodeType":"YulBlock","src":"2178:173:29","statements":[{"body":{"nodeType":"YulBlock","src":"2224:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2233:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2236:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2226:6:29"},"nodeType":"YulFunctionCall","src":"2226:12:29"},"nodeType":"YulExpressionStatement","src":"2226:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2199:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2208:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2195:3:29"},"nodeType":"YulFunctionCall","src":"2195:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2220:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2191:3:29"},"nodeType":"YulFunctionCall","src":"2191:32:29"},"nodeType":"YulIf","src":"2188:52:29"},{"nodeType":"YulAssignment","src":"2249:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2278:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2259:18:29"},"nodeType":"YulFunctionCall","src":"2259:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2249:6:29"}]},{"nodeType":"YulAssignment","src":"2297:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2330:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2341:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2326:3:29"},"nodeType":"YulFunctionCall","src":"2326:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2307:18:29"},"nodeType":"YulFunctionCall","src":"2307:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2297:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2136:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2147:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2159:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2167:6:29","type":""}],"src":"2091:260:29"},{"body":{"nodeType":"YulBlock","src":"2411:325:29","statements":[{"nodeType":"YulAssignment","src":"2421:22:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2435:1:29","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"2438:4:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2431:3:29"},"nodeType":"YulFunctionCall","src":"2431:12:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2421:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"2452:38:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2482:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"2488:1:29","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2478:3:29"},"nodeType":"YulFunctionCall","src":"2478:12:29"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"2456:18:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2529:31:29","statements":[{"nodeType":"YulAssignment","src":"2531:27:29","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2545:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"2553:4:29","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2541:3:29"},"nodeType":"YulFunctionCall","src":"2541:17:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2531:6:29"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2509:18:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2502:6:29"},"nodeType":"YulFunctionCall","src":"2502:26:29"},"nodeType":"YulIf","src":"2499:61:29"},{"body":{"nodeType":"YulBlock","src":"2619:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2640:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2647:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2652:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2643:3:29"},"nodeType":"YulFunctionCall","src":"2643:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2633:6:29"},"nodeType":"YulFunctionCall","src":"2633:31:29"},"nodeType":"YulExpressionStatement","src":"2633:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2684:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2687:4:29","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2677:6:29"},"nodeType":"YulFunctionCall","src":"2677:15:29"},"nodeType":"YulExpressionStatement","src":"2677:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2712:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2715:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2705:6:29"},"nodeType":"YulFunctionCall","src":"2705:15:29"},"nodeType":"YulExpressionStatement","src":"2705:15:29"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2575:18:29"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2598:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"2606:2:29","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2595:2:29"},"nodeType":"YulFunctionCall","src":"2595:14:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2572:2:29"},"nodeType":"YulFunctionCall","src":"2572:38:29"},"nodeType":"YulIf","src":"2569:161:29"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2391:4:29","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"2400:6:29","type":""}],"src":"2356:380:29"},{"body":{"nodeType":"YulBlock","src":"2789:174:29","statements":[{"nodeType":"YulAssignment","src":"2799:16:29","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2810:1:29"},{"name":"y","nodeType":"YulIdentifier","src":"2813:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2806:3:29"},"nodeType":"YulFunctionCall","src":"2806:9:29"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"2799:3:29"}]},{"body":{"nodeType":"YulBlock","src":"2846:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2867:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2874:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2879:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2870:3:29"},"nodeType":"YulFunctionCall","src":"2870:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2860:6:29"},"nodeType":"YulFunctionCall","src":"2860:31:29"},"nodeType":"YulExpressionStatement","src":"2860:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2911:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2914:4:29","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2904:6:29"},"nodeType":"YulFunctionCall","src":"2904:15:29"},"nodeType":"YulExpressionStatement","src":"2904:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2939:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2942:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2932:6:29"},"nodeType":"YulFunctionCall","src":"2932:15:29"},"nodeType":"YulExpressionStatement","src":"2932:15:29"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2830:1:29"},{"name":"sum","nodeType":"YulIdentifier","src":"2833:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2827:2:29"},"nodeType":"YulFunctionCall","src":"2827:10:29"},"nodeType":"YulIf","src":"2824:133:29"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2772:1:29","type":""},{"name":"y","nodeType":"YulTypedName","src":"2775:1:29","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"2781:3:29","type":""}],"src":"2741:222:29"},{"body":{"nodeType":"YulBlock","src":"3142:227:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3159:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3170:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3152:6:29"},"nodeType":"YulFunctionCall","src":"3152:21:29"},"nodeType":"YulExpressionStatement","src":"3152:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3193:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3204:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3189:3:29"},"nodeType":"YulFunctionCall","src":"3189:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"3209:2:29","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3182:6:29"},"nodeType":"YulFunctionCall","src":"3182:30:29"},"nodeType":"YulExpressionStatement","src":"3182:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3232:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3243:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3228:3:29"},"nodeType":"YulFunctionCall","src":"3228:18:29"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"3248:34:29","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3221:6:29"},"nodeType":"YulFunctionCall","src":"3221:62:29"},"nodeType":"YulExpressionStatement","src":"3221:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3303:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3314:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3299:3:29"},"nodeType":"YulFunctionCall","src":"3299:18:29"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"3319:7:29","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3292:6:29"},"nodeType":"YulFunctionCall","src":"3292:35:29"},"nodeType":"YulExpressionStatement","src":"3292:35:29"},{"nodeType":"YulAssignment","src":"3336:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3348:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3359:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3344:3:29"},"nodeType":"YulFunctionCall","src":"3344:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3336:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3119:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3133:4:29","type":""}],"src":"2968:401:29"},{"body":{"nodeType":"YulBlock","src":"3548:226:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3565:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3576:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3558:6:29"},"nodeType":"YulFunctionCall","src":"3558:21:29"},"nodeType":"YulExpressionStatement","src":"3558:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3599:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3610:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3595:3:29"},"nodeType":"YulFunctionCall","src":"3595:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"3615:2:29","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3588:6:29"},"nodeType":"YulFunctionCall","src":"3588:30:29"},"nodeType":"YulExpressionStatement","src":"3588:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3638:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3649:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3634:3:29"},"nodeType":"YulFunctionCall","src":"3634:18:29"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"3654:34:29","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3627:6:29"},"nodeType":"YulFunctionCall","src":"3627:62:29"},"nodeType":"YulExpressionStatement","src":"3627:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3709:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3720:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3705:3:29"},"nodeType":"YulFunctionCall","src":"3705:18:29"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"3725:6:29","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3698:6:29"},"nodeType":"YulFunctionCall","src":"3698:34:29"},"nodeType":"YulExpressionStatement","src":"3698:34:29"},{"nodeType":"YulAssignment","src":"3741:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3753:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3764:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3749:3:29"},"nodeType":"YulFunctionCall","src":"3749:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3741:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3525:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3539:4:29","type":""}],"src":"3374:400:29"},{"body":{"nodeType":"YulBlock","src":"3953:224:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3970:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3981:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3963:6:29"},"nodeType":"YulFunctionCall","src":"3963:21:29"},"nodeType":"YulExpressionStatement","src":"3963:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4004:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4015:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4000:3:29"},"nodeType":"YulFunctionCall","src":"4000:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"4020:2:29","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3993:6:29"},"nodeType":"YulFunctionCall","src":"3993:30:29"},"nodeType":"YulExpressionStatement","src":"3993:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4043:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4054:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4039:3:29"},"nodeType":"YulFunctionCall","src":"4039:18:29"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"4059:34:29","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4032:6:29"},"nodeType":"YulFunctionCall","src":"4032:62:29"},"nodeType":"YulExpressionStatement","src":"4032:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4114:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4125:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4110:3:29"},"nodeType":"YulFunctionCall","src":"4110:18:29"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"4130:4:29","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4103:6:29"},"nodeType":"YulFunctionCall","src":"4103:32:29"},"nodeType":"YulExpressionStatement","src":"4103:32:29"},{"nodeType":"YulAssignment","src":"4144:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4156:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4167:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4152:3:29"},"nodeType":"YulFunctionCall","src":"4152:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4144:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3930:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3944:4:29","type":""}],"src":"3779:398:29"},{"body":{"nodeType":"YulBlock","src":"4356:179:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4373:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4384:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4366:6:29"},"nodeType":"YulFunctionCall","src":"4366:21:29"},"nodeType":"YulExpressionStatement","src":"4366:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4407:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4418:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4403:3:29"},"nodeType":"YulFunctionCall","src":"4403:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"4423:2:29","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4396:6:29"},"nodeType":"YulFunctionCall","src":"4396:30:29"},"nodeType":"YulExpressionStatement","src":"4396:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4446:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4457:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4442:3:29"},"nodeType":"YulFunctionCall","src":"4442:18:29"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"4462:31:29","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4435:6:29"},"nodeType":"YulFunctionCall","src":"4435:59:29"},"nodeType":"YulExpressionStatement","src":"4435:59:29"},{"nodeType":"YulAssignment","src":"4503:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4515:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4526:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4511:3:29"},"nodeType":"YulFunctionCall","src":"4511:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4503:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4333:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4347:4:29","type":""}],"src":"4182:353:29"},{"body":{"nodeType":"YulBlock","src":"4714:227:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4731:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4742:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4724:6:29"},"nodeType":"YulFunctionCall","src":"4724:21:29"},"nodeType":"YulExpressionStatement","src":"4724:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4765:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4776:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4761:3:29"},"nodeType":"YulFunctionCall","src":"4761:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"4781:2:29","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4754:6:29"},"nodeType":"YulFunctionCall","src":"4754:30:29"},"nodeType":"YulExpressionStatement","src":"4754:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4804:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4815:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4800:3:29"},"nodeType":"YulFunctionCall","src":"4800:18:29"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"4820:34:29","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4793:6:29"},"nodeType":"YulFunctionCall","src":"4793:62:29"},"nodeType":"YulExpressionStatement","src":"4793:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4875:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4886:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4871:3:29"},"nodeType":"YulFunctionCall","src":"4871:18:29"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"4891:7:29","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4864:6:29"},"nodeType":"YulFunctionCall","src":"4864:35:29"},"nodeType":"YulExpressionStatement","src":"4864:35:29"},{"nodeType":"YulAssignment","src":"4908:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4920:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4931:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4916:3:29"},"nodeType":"YulFunctionCall","src":"4916:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4908:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4691:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4705:4:29","type":""}],"src":"4540:401:29"},{"body":{"nodeType":"YulBlock","src":"5120:225:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5137:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5148:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5130:6:29"},"nodeType":"YulFunctionCall","src":"5130:21:29"},"nodeType":"YulExpressionStatement","src":"5130:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5171:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5182:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5167:3:29"},"nodeType":"YulFunctionCall","src":"5167:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5187:2:29","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5160:6:29"},"nodeType":"YulFunctionCall","src":"5160:30:29"},"nodeType":"YulExpressionStatement","src":"5160:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5210:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5221:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5206:3:29"},"nodeType":"YulFunctionCall","src":"5206:18:29"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"5226:34:29","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5199:6:29"},"nodeType":"YulFunctionCall","src":"5199:62:29"},"nodeType":"YulExpressionStatement","src":"5199:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5281:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5292:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5277:3:29"},"nodeType":"YulFunctionCall","src":"5277:18:29"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"5297:5:29","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5270:6:29"},"nodeType":"YulFunctionCall","src":"5270:33:29"},"nodeType":"YulExpressionStatement","src":"5270:33:29"},{"nodeType":"YulAssignment","src":"5312:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5324:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5335:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5320:3:29"},"nodeType":"YulFunctionCall","src":"5320:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5312:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5097:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5111:4:29","type":""}],"src":"4946:399:29"},{"body":{"nodeType":"YulBlock","src":"5524:228:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5541:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5552:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5534:6:29"},"nodeType":"YulFunctionCall","src":"5534:21:29"},"nodeType":"YulExpressionStatement","src":"5534:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5575:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5586:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5571:3:29"},"nodeType":"YulFunctionCall","src":"5571:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5591:2:29","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5564:6:29"},"nodeType":"YulFunctionCall","src":"5564:30:29"},"nodeType":"YulExpressionStatement","src":"5564:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5614:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5625:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5610:3:29"},"nodeType":"YulFunctionCall","src":"5610:18:29"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"5630:34:29","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5603:6:29"},"nodeType":"YulFunctionCall","src":"5603:62:29"},"nodeType":"YulExpressionStatement","src":"5603:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5685:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5696:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5681:3:29"},"nodeType":"YulFunctionCall","src":"5681:18:29"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"5701:8:29","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5674:6:29"},"nodeType":"YulFunctionCall","src":"5674:36:29"},"nodeType":"YulExpressionStatement","src":"5674:36:29"},{"nodeType":"YulAssignment","src":"5719:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5731:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5742:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5727:3:29"},"nodeType":"YulFunctionCall","src":"5727:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5719:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5501:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5515:4:29","type":""}],"src":"5350:402:29"}]},"contents":"{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_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_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n mstore(add(headStart, 96), \" zero\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n mstore(add(headStart, 96), \"alance\")\n tail := add(headStart, 128)\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069c565b60405180910390f35b6100df6100da366004610706565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610730565b61024c565b604051601281526020016100c3565b6100df610131366004610706565b610270565b6100f361014436600461076c565b6001600160a01b031660009081526020819052604090205490565b6100b6610292565b6100df610175366004610706565b6102a1565b6100df610188366004610706565b610321565b6100f361019b36600461078e565b61032f565b6060600380546101af906107c1565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c1565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b60003361024081858561035a565b60019150505b92915050565b60003361025a85828561047e565b6102658585856104f8565b506001949350505050565b600033610240818585610283838361032f565b61028d91906107fb565b61035a565b6060600480546101af906107c1565b600033816102af828661032f565b9050838110156103145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b610265828686840361035a565b6000336102408185856104f8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103bc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161030b565b6001600160a01b03821661041d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161030b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061048a848461032f565b905060001981146104f257818110156104e55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161030b565b6104f2848484840361035a565b50505050565b6001600160a01b03831661055c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161030b565b6001600160a01b0382166105be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161030b565b6001600160a01b038316600090815260208190526040902054818110156106365760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161030b565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f2565b600060208083528351808285015260005b818110156106c9578581018301518582016040015282016106ad565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461070157600080fd5b919050565b6000806040838503121561071957600080fd5b610722836106ea565b946020939093013593505050565b60008060006060848603121561074557600080fd5b61074e846106ea565b925061075c602085016106ea565b9150604084013590509250925092565b60006020828403121561077e57600080fd5b610787826106ea565b9392505050565b600080604083850312156107a157600080fd5b6107aa836106ea565b91506107b8602084016106ea565b90509250929050565b600181811c908216806107d557607f821691505b6020821081036107f557634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561024657634e487b7160e01b600052601160045260246000fdfea26469706673582212204e1b5c9203fdcf282118254837716598ef63fcaee013682e64d3a332c014b18a64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x114 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC3 SWAP2 SWAP1 PUSH2 0x69C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDF PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0x706 JUMP JUMPDEST PUSH2 0x232 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x24C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x706 JUMP JUMPDEST PUSH2 0x270 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x76C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x292 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x175 CALLDATASIZE PUSH1 0x4 PUSH2 0x706 JUMP JUMPDEST PUSH2 0x2A1 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x188 CALLDATASIZE PUSH1 0x4 PUSH2 0x706 JUMP JUMPDEST PUSH2 0x321 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x78E JUMP JUMPDEST PUSH2 0x32F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x1AF SWAP1 PUSH2 0x7C1 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1DB SWAP1 PUSH2 0x7C1 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x228 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1FD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x228 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x20B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x240 DUP2 DUP6 DUP6 PUSH2 0x35A JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x25A DUP6 DUP3 DUP6 PUSH2 0x47E JUMP JUMPDEST PUSH2 0x265 DUP6 DUP6 DUP6 PUSH2 0x4F8 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x240 DUP2 DUP6 DUP6 PUSH2 0x283 DUP4 DUP4 PUSH2 0x32F JUMP JUMPDEST PUSH2 0x28D SWAP2 SWAP1 PUSH2 0x7FB JUMP JUMPDEST PUSH2 0x35A JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1AF SWAP1 PUSH2 0x7C1 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x2AF DUP3 DUP7 PUSH2 0x32F JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x314 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x265 DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x35A JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x240 DUP2 DUP6 DUP6 PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3BC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x41D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48A DUP5 DUP5 PUSH2 0x32F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 NOT DUP2 EQ PUSH2 0x4F2 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x30B JUMP JUMPDEST PUSH2 0x4F2 DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x35A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x55C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x636 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x30B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x4F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6C9 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x6AD JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x722 DUP4 PUSH2 0x6EA JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x74E DUP5 PUSH2 0x6EA JUMP JUMPDEST SWAP3 POP PUSH2 0x75C PUSH1 0x20 DUP6 ADD PUSH2 0x6EA JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x77E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x787 DUP3 PUSH2 0x6EA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7AA DUP4 PUSH2 0x6EA JUMP JUMPDEST SWAP2 POP PUSH2 0x7B8 PUSH1 0x20 DUP5 ADD PUSH2 0x6EA JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x7D5 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x7F5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x246 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E SHL 0x5C SWAP3 SUB REVERT 0xCF 0x28 0x21 XOR 0x25 BASEFEE CALLDATACOPY PUSH18 0x6598EF63FCAEE013682E64D3A332C014B18A PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"1532:11312:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:29;;1162:22;1144:41;;1132:2;1117:18;4444:197:3;1004:187:29;3255:106:3;3342:12;;3255:106;;;1342:25:29;;;1330:2;1315:18;3255:106:3;1196:177:29;5203:256:3;;;;;;:::i;:::-;;:::i;3104:91::-;;;3186:2;1853:36:29;;1841:2;1826:18;3104:91:3;1711:184:29;5854:234:3;;;;;;:::i;:::-;;:::i;3419:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:3;3493:7;3519:18;;;;;;;;;;;;3419:125;2369:102;;;:::i;6575:427::-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;;:::i;2158:98::-;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;719:10:11;4581:32:3;719:10:11;4597:7:3;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;719:10:11;5356:38:3;5372:4;719:10:11;5387:6:3;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:3;;5203:256;-1:-1:-1;;;;5203:256:3:o;5854:234::-;5942:4;719:10:11;5996:64:3;719:10:11;6012:7:3;6049:10;6021:25;719:10:11;6012:7:3;6021:9;:25::i;:::-;:38;;;;:::i;:::-;5996:8;:64::i;2369:102::-;2425:13;2457:7;2450:14;;;;;:::i;6575:427::-;6668:4;719:10:11;6668:4:3;6749:25;719:10:11;6766:7:3;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:3;;3170:2:29;6784:85:3;;;3152:21:29;3209:2;3189:18;;;3182:30;3248:34;3228:18;;;3221:62;-1:-1:-1;;;3299:18:29;;;3292:35;3344:19;;6784:85:3;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;719:10:11;3873:28:3;719:10:11;3890:2:3;3894:6;3873:9;:28::i;3987:149::-;-1:-1:-1;;;;;4102:18:3;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149::o;10457:340::-;-1:-1:-1;;;;;10558:19:3;;10550:68;;;;-1:-1:-1;;;10550:68:3;;3576:2:29;10550:68:3;;;3558:21:29;3615:2;3595:18;;;3588:30;3654:34;3634:18;;;3627:62;-1:-1:-1;;;3705:18:29;;;3698:34;3749:19;;10550:68:3;3374:400:29;10550:68:3;-1:-1:-1;;;;;10636:21:3;;10628:68;;;;-1:-1:-1;;;10628:68:3;;3981:2:29;10628:68:3;;;3963:21:29;4020:2;4000:18;;;3993:30;4059:34;4039:18;;;4032:62;-1:-1:-1;;;4110:18:29;;;4103:32;4152:19;;10628:68:3;3779:398:29;10628:68:3;-1:-1:-1;;;;;10707:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1342:25:29;;;10758:32:3;;1315:18:29;10758:32:3;;;;;;;10457:340;;;:::o;11078:411::-;11178:24;11205:25;11215:5;11222:7;11205:9;:25::i;:::-;11178:52;;-1:-1:-1;;11244:16:3;:37;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:3;;4384:2:29;11297:68:3;;;4366:21:29;4423:2;4403:18;;;4396:30;4462:31;4442:18;;;4435:59;4511:18;;11297:68:3;4182:353:29;11297:68:3;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:3;;7544:68;;;;-1:-1:-1;;;7544:68:3;;4742:2:29;7544:68:3;;;4724:21:29;4781:2;4761:18;;;4754:30;4820:34;4800:18;;;4793:62;-1:-1:-1;;;4871:18:29;;;4864:35;4916:19;;7544:68:3;4540:401:29;7544:68:3;-1:-1:-1;;;;;7630:16:3;;7622:64;;;;-1:-1:-1;;;7622:64:3;;5148:2:29;7622:64:3;;;5130:21:29;5187:2;5167:18;;;5160:30;5226:34;5206:18;;;5199:62;-1:-1:-1;;;5277:18:29;;;5270:33;5320:19;;7622:64:3;4946:399:29;7622:64:3;-1:-1:-1;;;;;7768:15:3;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:3;;5552:2:29;7793:72:3;;;5534:21:29;5591:2;5571:18;;;5564:30;5630:34;5610:18;;;5603:62;-1:-1:-1;;;5681:18:29;;;5674:36;5727:19;;7793:72:3;5350:402:29;7793:72:3;-1:-1:-1;;;;;7899:15:3;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1342:25:29;;;8114:13:3;;8163:26;;1315:18:29;8163:26:3;;;;;;;8200:37;12073:91;14:548:29;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:29;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:29:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:186::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2051:29;2070:9;2051:29;:::i;:::-;2041:39;1900:186;-1:-1:-1;;;1900:186:29:o;2091:260::-;2159:6;2167;2220:2;2208:9;2199:7;2195:23;2191:32;2188:52;;;2236:1;2233;2226:12;2188:52;2259:29;2278:9;2259:29;:::i;:::-;2249:39;;2307:38;2341:2;2330:9;2326:18;2307:38;:::i;:::-;2297:48;;2091:260;;;;;:::o;2356:380::-;2435:1;2431:12;;;;2478;;;2499:61;;2553:4;2545:6;2541:17;2531:27;;2499:61;2606:2;2598:6;2595:14;2575:18;2572:38;2569:161;;2652:10;2647:3;2643:20;2640:1;2633:31;2687:4;2684:1;2677:15;2715:4;2712:1;2705:15;2569:161;;2356:380;;;:::o;2741:222::-;2806:9;;;2827:10;;;2824:133;;;2879:10;2874:3;2870:20;2867:1;2860:31;2914:4;2911:1;2904:15;2942:4;2939:1;2932:15"},"gasEstimates":{"creation":{"codeDepositCost":"426000","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"24628","balanceOf(address)":"2562","decimals()":"266","decreaseAllowance(address,uint256)":"27016","increaseAllowance(address,uint256)":"infinite","name()":"infinite","symbol()":"infinite","totalSupply()":"2326","transfer(address,uint256)":"51138","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,uint256)":"infinite","_approve(address,address,uint256)":"infinite","_beforeTokenTransfer(address,address,uint256)":"infinite","_burn(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_spendAllowance(address,address,uint256)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n mapping(address => uint256) private _balances;\\n\\n mapping(address => mapping(address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n\\n /**\\n * @dev Sets the values for {name} and {symbol}.\\n *\\n * All two of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the default value returned by this function, unless\\n * it's overridden.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view virtual override returns (uint8) {\\n return 18;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view virtual override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _transfer(owner, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n * `transferFrom`. This is semantically equivalent to an infinite approval.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20}.\\n *\\n * NOTE: Does not update the allowance if the current allowance\\n * is the maximum `uint256`.\\n *\\n * Requirements:\\n *\\n * - `from` and `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n * - the caller must have allowance for ``from``'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\\n address spender = _msgSender();\\n _spendAllowance(from, spender, amount);\\n _transfer(from, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, allowance(owner, spender) + addedValue);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n uint256 currentAllowance = allowance(owner, spender);\\n require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - subtractedValue);\\n }\\n\\n return true;\\n }\\n\\n /**\\n * @dev Moves `amount` of tokens from `from` to `to`.\\n *\\n * This internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n */\\n function _transfer(address from, address to, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, amount);\\n\\n uint256 fromBalance = _balances[from];\\n require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n unchecked {\\n _balances[from] = fromBalance - amount;\\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\\n // decrementing then incrementing.\\n _balances[to] += amount;\\n }\\n\\n emit Transfer(from, to, amount);\\n\\n _afterTokenTransfer(from, to, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply += amount;\\n unchecked {\\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\\n _balances[account] += amount;\\n }\\n emit Transfer(address(0), account, amount);\\n\\n _afterTokenTransfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n uint256 accountBalance = _balances[account];\\n require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[account] = accountBalance - amount;\\n // Overflow not possible: amount <= accountBalance <= totalSupply.\\n _totalSupply -= amount;\\n }\\n\\n emit Transfer(account, address(0), amount);\\n\\n _afterTokenTransfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n *\\n * This internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n *\\n * Does not update the allowance amount in case of infinite allowance.\\n * Revert if not enough allowance is available.\\n *\\n * Might emit an {Approval} event.\\n */\\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\\n uint256 currentAllowance = allowance(owner, spender);\\n if (currentAllowance != type(uint256).max) {\\n require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - amount);\\n }\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * will be transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * has been transferred to `to`.\\n * - when `from` is zero, `amount` tokens have been minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n}\\n\",\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":183,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":189,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":191,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":193,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":195,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC20 standard as defined in the EIP.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. 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":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._","kind":"dev","methods":{"allowance(address,address)":{"details":"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."},"approve(address,uint256)":{"details":"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the amount of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the amount of tokens in existence."},"transfer(address,uint256)":{"details":"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."},"transferFrom(address,address,uint256)":{"details":"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. 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":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_920":{"entryPoint":null,"id":920,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":287,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":453,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":536,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":393,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":90,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:29"},"nodeType":"YulFunctionCall","src":"66:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:29"},"nodeType":"YulFunctionCall","src":"56:31:29"},"nodeType":"YulExpressionStatement","src":"56:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:29","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:29"},"nodeType":"YulFunctionCall","src":"96:15:29"},"nodeType":"YulExpressionStatement","src":"96:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:29"},"nodeType":"YulFunctionCall","src":"120:15:29"},"nodeType":"YulExpressionStatement","src":"120:15:29"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:29"},{"body":{"nodeType":"YulBlock","src":"210:776:29","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:29"},"nodeType":"YulFunctionCall","src":"261:12:29"},"nodeType":"YulExpressionStatement","src":"261:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:29"},"nodeType":"YulFunctionCall","src":"234:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:29"},"nodeType":"YulFunctionCall","src":"230:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:29"},"nodeType":"YulFunctionCall","src":"223:35:29"},"nodeType":"YulIf","src":"220:55:29"},{"nodeType":"YulVariableDeclaration","src":"284:23:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:29"},"nodeType":"YulFunctionCall","src":"294:13:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:29"},"nodeType":"YulFunctionCall","src":"330:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:29"},"nodeType":"YulFunctionCall","src":"326:18:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:29"},"nodeType":"YulFunctionCall","src":"369:18:29"},"nodeType":"YulExpressionStatement","src":"369:18:29"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:29"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:29"},"nodeType":"YulFunctionCall","src":"356:10:29"},"nodeType":"YulIf","src":"353:36:29"},{"nodeType":"YulVariableDeclaration","src":"398:17:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:29"},"nodeType":"YulFunctionCall","src":"408:7:29"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:29","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:29"},"nodeType":"YulFunctionCall","src":"438:9:29"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:29","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:29"},"nodeType":"YulFunctionCall","src":"498:13:29"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:29"},"nodeType":"YulFunctionCall","src":"494:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:29","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:29"},"nodeType":"YulFunctionCall","src":"490:31:29"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:29"},"nodeType":"YulFunctionCall","src":"486:40:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:29"},"nodeType":"YulFunctionCall","src":"474:53:29"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:29"},"nodeType":"YulFunctionCall","src":"588:18:29"},"nodeType":"YulExpressionStatement","src":"588:18:29"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:29"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:29"},"nodeType":"YulFunctionCall","src":"542:18:29"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:29"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:29"},"nodeType":"YulFunctionCall","src":"562:22:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:29"},"nodeType":"YulFunctionCall","src":"539:46:29"},"nodeType":"YulIf","src":"536:72:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:29","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:29"},"nodeType":"YulFunctionCall","src":"617:22:29"},"nodeType":"YulExpressionStatement","src":"617:22:29"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:29"},"nodeType":"YulFunctionCall","src":"648:18:29"},"nodeType":"YulExpressionStatement","src":"648:18:29"},{"nodeType":"YulVariableDeclaration","src":"675:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:29","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:29"},"nodeType":"YulFunctionCall","src":"737:12:29"},"nodeType":"YulExpressionStatement","src":"737:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:29"},"nodeType":"YulFunctionCall","src":"708:15:29"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:29"},"nodeType":"YulFunctionCall","src":"704:24:29"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:29"},"nodeType":"YulFunctionCall","src":"701:33:29"},"nodeType":"YulIf","src":"698:53:29"},{"nodeType":"YulVariableDeclaration","src":"760:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:29"},"nodeType":"YulFunctionCall","src":"850:14:29"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:29"},"nodeType":"YulFunctionCall","src":"846:23:29"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:29"},"nodeType":"YulFunctionCall","src":"881:14:29"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:29"},"nodeType":"YulFunctionCall","src":"877:23:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:29"},"nodeType":"YulFunctionCall","src":"871:30:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:29"},"nodeType":"YulFunctionCall","src":"839:63:29"},"nodeType":"YulExpressionStatement","src":"839:63:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:29"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:29"},"nodeType":"YulFunctionCall","src":"787:9:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:29","statements":[{"nodeType":"YulAssignment","src":"799:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:29"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:29"},"nodeType":"YulFunctionCall","src":"804:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:29","statements":[]},"src":"779:133:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:29"},"nodeType":"YulFunctionCall","src":"932:15:29"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:29"},"nodeType":"YulFunctionCall","src":"928:24:29"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:29"},"nodeType":"YulFunctionCall","src":"921:35:29"},"nodeType":"YulExpressionStatement","src":"921:35:29"},{"nodeType":"YulAssignment","src":"965:15:29","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:29"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:29"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:29","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:29","type":""}],"src":"146:840:29"},{"body":{"nodeType":"YulBlock","src":"1109:444:29","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:29"},"nodeType":"YulFunctionCall","src":"1157:12:29"},"nodeType":"YulExpressionStatement","src":"1157:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:29"},"nodeType":"YulFunctionCall","src":"1126:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:29"},"nodeType":"YulFunctionCall","src":"1122:32:29"},"nodeType":"YulIf","src":"1119:52:29"},{"nodeType":"YulVariableDeclaration","src":"1180:30:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:29"},"nodeType":"YulFunctionCall","src":"1194:16:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:29"},"nodeType":"YulFunctionCall","src":"1233:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:29"},"nodeType":"YulFunctionCall","src":"1229:18:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:29"},"nodeType":"YulFunctionCall","src":"1276:12:29"},"nodeType":"YulExpressionStatement","src":"1276:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:29"},"nodeType":"YulFunctionCall","src":"1259:14:29"},"nodeType":"YulIf","src":"1256:34:29"},{"nodeType":"YulAssignment","src":"1299:71:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:29"},"nodeType":"YulFunctionCall","src":"1338:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:29"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:29"},"nodeType":"YulFunctionCall","src":"1309:61:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:29"},"nodeType":"YulFunctionCall","src":"1401:18:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:29"},"nodeType":"YulFunctionCall","src":"1395:25:29"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:29"},"nodeType":"YulFunctionCall","src":"1451:12:29"},"nodeType":"YulExpressionStatement","src":"1451:12:29"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:29"},"nodeType":"YulFunctionCall","src":"1432:16:29"},"nodeType":"YulIf","src":"1429:36:29"},{"nodeType":"YulAssignment","src":"1474:73:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:29"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:29"},"nodeType":"YulFunctionCall","src":"1513:24:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:29"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:29"},"nodeType":"YulFunctionCall","src":"1484:63:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:29"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:29","type":""}],"src":"991:562:29"},{"body":{"nodeType":"YulBlock","src":"1613:325:29","statements":[{"nodeType":"YulAssignment","src":"1623:22:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:29","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:29"},"nodeType":"YulFunctionCall","src":"1633:12:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:29","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:29"},"nodeType":"YulFunctionCall","src":"1680:12:29"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:29","statements":[{"nodeType":"YulAssignment","src":"1733:27:29","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:29","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:29"},"nodeType":"YulFunctionCall","src":"1743:17:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:29"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:29"},"nodeType":"YulFunctionCall","src":"1704:26:29"},"nodeType":"YulIf","src":"1701:61:29"},{"body":{"nodeType":"YulBlock","src":"1821:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:29"},"nodeType":"YulFunctionCall","src":"1845:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:29"},"nodeType":"YulFunctionCall","src":"1835:31:29"},"nodeType":"YulExpressionStatement","src":"1835:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:29","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:29"},"nodeType":"YulFunctionCall","src":"1879:15:29"},"nodeType":"YulExpressionStatement","src":"1879:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:29"},"nodeType":"YulFunctionCall","src":"1907:15:29"},"nodeType":"YulExpressionStatement","src":"1907:15:29"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:29"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:29","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:29"},"nodeType":"YulFunctionCall","src":"1797:14:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:29"},"nodeType":"YulFunctionCall","src":"1774:38:29"},"nodeType":"YulIf","src":"1771:161:29"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:29","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:29","type":""}],"src":"1558:380:29"},{"body":{"nodeType":"YulBlock","src":"1999:65:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:29","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:29"},"nodeType":"YulFunctionCall","src":"2009:14:29"},"nodeType":"YulExpressionStatement","src":"2009:14:29"},{"nodeType":"YulAssignment","src":"2032:26:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:29","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:29"},"nodeType":"YulFunctionCall","src":"2040:18:29"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:29"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:29","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:29","type":""}],"src":"1943:121:29"},{"body":{"nodeType":"YulBlock","src":"2150:464:29","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:29","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:29","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:29","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:29"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:29"},"nodeType":"YulFunctionCall","src":"2221:17:29"},"nodeType":"YulExpressionStatement","src":"2221:17:29"},{"nodeType":"YulVariableDeclaration","src":"2251:31:29","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:29","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:29"},"nodeType":"YulFunctionCall","src":"2263:19:29"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:29","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:29"},"nodeType":"YulFunctionCall","src":"2331:19:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:29"},"nodeType":"YulFunctionCall","src":"2324:27:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:29"},"nodeType":"YulFunctionCall","src":"2314:38:29"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:29","statements":[{"nodeType":"YulAssignment","src":"2391:19:29","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:29"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:29"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:29","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:29"},"nodeType":"YulFunctionCall","src":"2368:20:29"},"nodeType":"YulIf","src":"2365:47:29"},{"nodeType":"YulVariableDeclaration","src":"2425:41:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:29","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:29"},"nodeType":"YulFunctionCall","src":"2452:12:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:29"},"nodeType":"YulFunctionCall","src":"2445:20:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:29"},"nodeType":"YulFunctionCall","src":"2435:31:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:29","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:29"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:29","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:29"},"nodeType":"YulFunctionCall","src":"2579:17:29"},"nodeType":"YulExpressionStatement","src":"2579:17:29"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:29"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:29"},"nodeType":"YulFunctionCall","src":"2524:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:29","statements":[{"nodeType":"YulAssignment","src":"2540:22:29","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:29"},"nodeType":"YulFunctionCall","src":"2549:13:29"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:29"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:29","statements":[]},"src":"2516:82:29"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:29","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:29"},"nodeType":"YulFunctionCall","src":"2163:11:29"},"nodeType":"YulIf","src":"2160:448:29"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:29","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:29","type":""}],"src":"2069:545:29"},{"body":{"nodeType":"YulBlock","src":"2704:81:29","statements":[{"nodeType":"YulAssignment","src":"2714:65:29","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:29"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:29","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:29"},"nodeType":"YulFunctionCall","src":"2743:11:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:29"},"nodeType":"YulFunctionCall","src":"2756:6:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:29"},"nodeType":"YulFunctionCall","src":"2739:24:29"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:29"},"nodeType":"YulFunctionCall","src":"2735:29:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:29"},"nodeType":"YulFunctionCall","src":"2725:40:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:29","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:29"},"nodeType":"YulFunctionCall","src":"2767:11:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:29"},"nodeType":"YulFunctionCall","src":"2722:57:29"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:29"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:29","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:29","type":""}],"src":"2619:166:29"},{"body":{"nodeType":"YulBlock","src":"2886:1256:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:29","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:29"},"nodeType":"YulFunctionCall","src":"2910:10:29"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:29"},"nodeType":"YulFunctionCall","src":"2965:18:29"},"nodeType":"YulExpressionStatement","src":"2965:18:29"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:29"},"nodeType":"YulFunctionCall","src":"2947:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:29"},"nodeType":"YulFunctionCall","src":"2943:18:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:29"},"nodeType":"YulFunctionCall","src":"2932:30:29"},"nodeType":"YulIf","src":"2929:56:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:29"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:29"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:29"},"nodeType":"YulFunctionCall","src":"3070:11:29"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:29"},"nodeType":"YulFunctionCall","src":"3044:38:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:29"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:29"},"nodeType":"YulFunctionCall","src":"2994:97:29"},"nodeType":"YulExpressionStatement","src":"2994:97:29"},{"nodeType":"YulVariableDeclaration","src":"3100:18:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:29","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:29","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:29","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:29","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:29"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:29"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:29","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:29"},"nodeType":"YulFunctionCall","src":"3270:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:29"},"nodeType":"YulFunctionCall","src":"3258:20:29"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:29","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:29"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:29"},"nodeType":"YulFunctionCall","src":"3305:35:29"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:29","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:29"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:29"},"nodeType":"YulFunctionCall","src":"3479:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:29"},"nodeType":"YulFunctionCall","src":"3473:26:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:29"},"nodeType":"YulFunctionCall","src":"3458:42:29"},"nodeType":"YulExpressionStatement","src":"3458:42:29"},{"nodeType":"YulAssignment","src":"3517:24:29","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:29"},"nodeType":"YulFunctionCall","src":"3527:14:29"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:29"}]},{"nodeType":"YulAssignment","src":"3558:40:29","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:29"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:29"},"nodeType":"YulFunctionCall","src":"3571:27:29"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:29"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:29"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:29"},"nodeType":"YulFunctionCall","src":"3384:14:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:29","statements":[{"nodeType":"YulAssignment","src":"3401:24:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:29"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:29"},"nodeType":"YulFunctionCall","src":"3406:19:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:29","statements":[]},"src":"3376:236:29"},{"body":{"nodeType":"YulBlock","src":"3660:166:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:29","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:29"},"nodeType":"YulFunctionCall","src":"3701:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:29"},"nodeType":"YulFunctionCall","src":"3695:26:29"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:29","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:29"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:29","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:29"},"nodeType":"YulFunctionCall","src":"3780:14:29"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:29","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:29"},"nodeType":"YulFunctionCall","src":"3776:24:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:29"},"nodeType":"YulFunctionCall","src":"3802:6:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:29"},"nodeType":"YulFunctionCall","src":"3772:37:29"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:29"},"nodeType":"YulFunctionCall","src":"3768:42:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:29"},"nodeType":"YulFunctionCall","src":"3753:58:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:29"},"nodeType":"YulFunctionCall","src":"3738:74:29"},"nodeType":"YulExpressionStatement","src":"3738:74:29"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:29"},"nodeType":"YulFunctionCall","src":"3628:19:29"},"nodeType":"YulIf","src":"3625:201:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:29","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:29"},"nodeType":"YulFunctionCall","src":"3856:14:29"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:29"},"nodeType":"YulFunctionCall","src":"3852:22:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:29"},"nodeType":"YulFunctionCall","src":"3839:36:29"},"nodeType":"YulExpressionStatement","src":"3839:36:29"}]},"nodeType":"YulCase","src":"3222:663:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:29","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:29","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:29","statements":[{"nodeType":"YulAssignment","src":"3983:35:29","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:29"},"nodeType":"YulFunctionCall","src":"3998:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:29"},"nodeType":"YulFunctionCall","src":"3992:26:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:29"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:29"},"nodeType":"YulIf","src":"3943:89:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:29"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:29"},"nodeType":"YulFunctionCall","src":"4058:67:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:29"},"nodeType":"YulFunctionCall","src":"4045:81:29"},"nodeType":"YulExpressionStatement","src":"4045:81:29"}]},"nodeType":"YulCase","src":"3894:242:29","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:29","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:29"},"nodeType":"YulFunctionCall","src":"3199:14:29"},"nodeType":"YulSwitch","src":"3192:944:29"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:29","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:29","type":""}],"src":"2790:1352:29"}]},"contents":"{\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_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620013e7380380620013e783398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6110f380620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c7f565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cec565b61012461011f366004610cff565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d34565b610333565b005b61014f61015f366004610d5e565b61044d565b61014f610172366004610d5e565b61047e565b610124610185366004610cff565b610499565b61019d610198366004610d9a565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610db5565b61058e565b61014f6101d4366004610e07565b61059d565b6101046101e7366004610cff565b6105d5565b6100e76101fa366004610ee3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610f16565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610f16565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152600460205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f50565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610f16565b6105993383836108fc565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f50565b6105cf848484846109ca565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b80610621846109fd565b604051602001610632929190610f9d565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b0316146107d15760405162461bcd60e51b81526004016103a790610fcc565b6001600160a01b0382166108335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b826001600160a01b031661084682610499565b6001600160a01b03161461086c5760405162461bcd60e51b81526004016103a790610fcc565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361095d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109d5848484610798565b6109e184848484610a90565b6105cf5760405162461bcd60e51b81526004016103a790611011565b60606000610a0a83610b91565b600101905060008167ffffffffffffffff811115610a2a57610a2a610df1565b6040519080825280601f01601f191660200182016040528015610a54576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a5e57509392505050565b60006001600160a01b0384163b15610b8657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610ad4903390899088908890600401611063565b6020604051808303816000875af1925050508015610b0f575060408051601f3d908101601f19168201909252610b0c918101906110a0565b60015b610b6c573d808015610b3d576040519150601f19603f3d011682016040523d82523d6000602084013e610b42565b606091505b508051600003610b645760405162461bcd60e51b81526004016103a790611011565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bd05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bfc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c1a57662386f26fc10000830492506010015b6305f5e1008310610c32576305f5e100830492506008015b6127108310610c4657612710830492506004015b60648310610c58576064830492506002015b600a83106102745760010192915050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c9157600080fd5b813561064281610c69565b60005b83811015610cb7578181015183820152602001610c9f565b50506000910152565b60008151808452610cd8816020860160208601610c9c565b601f01601f19169290920160200192915050565b6020815260006106426020830184610cc0565b600060208284031215610d1157600080fd5b5035919050565b80356001600160a01b0381168114610d2f57600080fd5b919050565b60008060408385031215610d4757600080fd5b610d5083610d18565b946020939093013593505050565b600080600060608486031215610d7357600080fd5b610d7c84610d18565b9250610d8a60208501610d18565b9150604084013590509250925092565b600060208284031215610dac57600080fd5b61064282610d18565b60008060408385031215610dc857600080fd5b610dd183610d18565b915060208301358015158114610de657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e1d57600080fd5b610e2685610d18565b9350610e3460208601610d18565b925060408501359150606085013567ffffffffffffffff80821115610e5857600080fd5b818701915087601f830112610e6c57600080fd5b813581811115610e7e57610e7e610df1565b604051601f8201601f19908116603f01168101908382118183101715610ea657610ea6610df1565b816040528281528a6020848701011115610ebf57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ef657600080fd5b610eff83610d18565b9150610f0d60208401610d18565b90509250929050565b600181811c90821680610f2a57607f821691505b602082108103610f4a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351610faf818460208801610c9c565b835190830190610fc3818360208801610c9c565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061109690830184610cc0565b9695505050505050565b6000602082840312156110b257600080fd5b815161064281610c6956fea2646970667358221220572b001af737f9d43203516808c567baf41baf8d490bb57390158191aafea9c264736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x13E7 CODESIZE SUB DUP1 PUSH3 0x13E7 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x42 DUP4 DUP3 PUSH3 0x218 JUMP JUMPDEST POP PUSH1 0x1 PUSH3 0x51 DUP3 DUP3 PUSH3 0x218 JUMP JUMPDEST POP POP POP PUSH3 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9F JUMPI PUSH3 0x9F PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCA JUMPI PUSH3 0xCA PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x159 DUP7 DUP4 DUP8 ADD PUSH3 0x70 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x17F DUP6 DUP3 DUP7 ADD PUSH3 0x70 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x19E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1EE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x20F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x234 JUMPI PUSH3 0x234 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x24C DUP2 PUSH3 0x245 DUP5 SLOAD PUSH3 0x189 JUMP JUMPDEST DUP5 PUSH3 0x1C5 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x284 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x20F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x294 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x10F3 DUP1 PUSH3 0x2F4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x164 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xC7F JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x27A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0x124 PUSH2 0x11F CALLDATASIZE PUSH1 0x4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x333 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x44D JUMP JUMPDEST PUSH2 0x14F PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH2 0x124 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xD9A JUMP JUMPDEST PUSH2 0x4F9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x57F JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x58E JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0xE07 JUMP JUMPDEST PUSH2 0x59D JUMP JUMPDEST PUSH2 0x104 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0x5D5 JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x259 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x274 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0xF16 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2B5 SWAP1 PUSH2 0xF16 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x302 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x302 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x317 DUP3 PUSH2 0x649 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E DUP3 PUSH2 0x499 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3CC JUMPI POP PUSH2 0x3CC DUP2 CALLER PUSH2 0x1FA JUMP JUMPDEST PUSH2 0x43E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 PUSH2 0x6AB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x457 CALLER DUP3 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x473 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xF50 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 DUP4 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x59D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x274 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x563 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0xF16 JUMP JUMPDEST PUSH2 0x599 CALLER DUP4 DUP4 PUSH2 0x8FC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x5A7 CALLER DUP4 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x5C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xF50 JUMP JUMPDEST PUSH2 0x5CF DUP5 DUP5 DUP5 DUP5 PUSH2 0x9CA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5E0 DUP3 PUSH2 0x649 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F7 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x617 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x642 JUMP JUMPDEST DUP1 PUSH2 0x621 DUP5 PUSH2 0x9FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x632 SWAP3 SWAP2 SWAP1 PUSH2 0xF9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x6E0 DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x725 DUP4 PUSH2 0x499 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x76C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x790 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x785 DUP5 PUSH2 0x30C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7AB DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xFCC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x846 DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x86C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xFCC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x95D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9D5 DUP5 DUP5 DUP5 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x9E1 DUP5 DUP5 DUP5 DUP5 PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x5CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0x1011 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xA0A DUP4 PUSH2 0xB91 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA2A JUMPI PUSH2 0xA2A PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA54 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xA5E JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xB86 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xAD4 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1063 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB0F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB0C SWAP2 DUP2 ADD SWAP1 PUSH2 0x10A0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB6C JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xB3D 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 0xB42 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xB64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0x1011 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x790 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0xBD0 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xBFC JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xC1A JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xC32 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xC46 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xC58 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x274 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x642 DUP2 PUSH2 0xC69 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCB7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC9F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xCD8 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xC9C 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 0x642 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD50 DUP4 PUSH2 0xD18 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD7C DUP5 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP PUSH2 0xD8A PUSH1 0x20 DUP6 ADD PUSH2 0xD18 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x642 DUP3 PUSH2 0xD18 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDD1 DUP4 PUSH2 0xD18 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 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 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE26 DUP6 PUSH2 0xD18 JUMP JUMPDEST SWAP4 POP PUSH2 0xE34 PUSH1 0x20 DUP7 ADD PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE7E JUMPI PUSH2 0xE7E PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xEA6 JUMPI PUSH2 0xEA6 PUSH2 0xDF1 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xEBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEFF DUP4 PUSH2 0xD18 JUMP JUMPDEST SWAP2 POP PUSH2 0xF0D PUSH1 0x20 DUP5 ADD PUSH2 0xD18 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF2A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xF4A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xFAF DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xC9C JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0xFC3 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xC9C JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1096 SWAP1 DUP4 ADD DUP5 PUSH2 0xCC0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x642 DUP2 PUSH2 0xC69 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI 0x2B STOP BYTE 0xF7 CALLDATACOPY 0xF9 0xD4 ORIGIN SUB MLOAD PUSH9 0x8C567BAF41BAF8D49 SIGNEXTEND 0xB5 PUSH20 0x90158191AAFEA9C264736F6C6343000811003300 ","sourceMap":"628:16377:6:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:5;:13;1464:5;1456;:13;:::i;:::-;-1:-1:-1;1479:7:6;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;628:16377;;14:127:29;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:29;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:29;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:29:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:29;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:29;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:29;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:29;;;3992:26;3943:89;-1:-1:-1;;2747:1:29;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:29;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:29;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:29;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:29:o;:::-;628:16377:6;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_1768":{"entryPoint":null,"id":1768,"parameterSlots":4,"returnSlots":0},"@_approve_1634":{"entryPoint":1707,"id":1634,"parameterSlots":2,"returnSlots":0},"@_baseURI_1071":{"entryPoint":null,"id":1071,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_1755":{"entryPoint":null,"id":1755,"parameterSlots":4,"returnSlots":0},"@_checkOnERC721Received_1742":{"entryPoint":2704,"id":1742,"parameterSlots":4,"returnSlots":1},"@_exists_1303":{"entryPoint":null,"id":1303,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_1337":{"entryPoint":1817,"id":1337,"parameterSlots":2,"returnSlots":1},"@_msgSender_2287":{"entryPoint":null,"id":2287,"parameterSlots":0,"returnSlots":1},"@_ownerOf_1285":{"entryPoint":null,"id":1285,"parameterSlots":1,"returnSlots":1},"@_requireMinted_1680":{"entryPoint":1609,"id":1680,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_1272":{"entryPoint":2506,"id":1272,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_1666":{"entryPoint":2300,"id":1666,"parameterSlots":3,"returnSlots":0},"@_transfer_1610":{"entryPoint":1944,"id":1610,"parameterSlots":3,"returnSlots":0},"@approve_1114":{"entryPoint":819,"id":1114,"parameterSlots":2,"returnSlots":0},"@balanceOf_975":{"entryPoint":1273,"id":975,"parameterSlots":1,"returnSlots":1},"@getApproved_1132":{"entryPoint":780,"id":1132,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_1167":{"entryPoint":null,"id":1167,"parameterSlots":2,"returnSlots":1},"@isContract_1963":{"entryPoint":null,"id":1963,"parameterSlots":1,"returnSlots":1},"@log10_3265":{"entryPoint":2961,"id":3265,"parameterSlots":1,"returnSlots":1},"@name_1013":{"entryPoint":634,"id":1013,"parameterSlots":0,"returnSlots":1},"@ownerOf_1003":{"entryPoint":1177,"id":1003,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_1213":{"entryPoint":1150,"id":1213,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_1243":{"entryPoint":1437,"id":1243,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_1149":{"entryPoint":1422,"id":1149,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2549":{"entryPoint":null,"id":2549,"parameterSlots":1,"returnSlots":1},"@supportsInterface_951":{"entryPoint":552,"id":951,"parameterSlots":1,"returnSlots":1},"@symbol_1023":{"entryPoint":1407,"id":1023,"parameterSlots":0,"returnSlots":1},"@toString_2356":{"entryPoint":2557,"id":2356,"parameterSlots":1,"returnSlots":1},"@tokenURI_1062":{"entryPoint":1493,"id":1062,"parameterSlots":1,"returnSlots":1},"@transferFrom_1194":{"entryPoint":1101,"id":1194,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":3352,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3482,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3811,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":3422,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":3591,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3509,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3380,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":3199,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":4256,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":3327,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":3264,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3997,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4195,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3308,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3920,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4113,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4044,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__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},"copy_memory_to_memory_with_cleanup":{"entryPoint":3228,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":3862,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3569,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":3177,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10132:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:87:29","statements":[{"body":{"nodeType":"YulBlock","src":"123:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"132:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"125:6:29"},"nodeType":"YulFunctionCall","src":"125:12:29"},"nodeType":"YulExpressionStatement","src":"125:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"108:10:29","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"99:3:29"},"nodeType":"YulFunctionCall","src":"99:20:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:29"},"nodeType":"YulFunctionCall","src":"88:32:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:29"},"nodeType":"YulFunctionCall","src":"78:43:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:29"},"nodeType":"YulFunctionCall","src":"71:51:29"},"nodeType":"YulIf","src":"68:71:29"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:29","type":""}],"src":"14:131:29"},{"body":{"nodeType":"YulBlock","src":"219:176:29","statements":[{"body":{"nodeType":"YulBlock","src":"265:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"274:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"277:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"267:6:29"},"nodeType":"YulFunctionCall","src":"267:12:29"},"nodeType":"YulExpressionStatement","src":"267:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"240:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"249:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"236:3:29"},"nodeType":"YulFunctionCall","src":"236:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"261:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"232:3:29"},"nodeType":"YulFunctionCall","src":"232:32:29"},"nodeType":"YulIf","src":"229:52:29"},{"nodeType":"YulVariableDeclaration","src":"290:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"316:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:29"},"nodeType":"YulFunctionCall","src":"303:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"294:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"359:5:29"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"335:23:29"},"nodeType":"YulFunctionCall","src":"335:30:29"},"nodeType":"YulExpressionStatement","src":"335:30:29"},{"nodeType":"YulAssignment","src":"374:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"384:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"374:6:29"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"185:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"196:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"208:6:29","type":""}],"src":"150:245:29"},{"body":{"nodeType":"YulBlock","src":"495:92:29","statements":[{"nodeType":"YulAssignment","src":"505:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"517:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"528:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"513:3:29"},"nodeType":"YulFunctionCall","src":"513:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"505:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"547:9:29"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"572:6:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"565:6:29"},"nodeType":"YulFunctionCall","src":"565:14:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"558:6:29"},"nodeType":"YulFunctionCall","src":"558:22:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"540:6:29"},"nodeType":"YulFunctionCall","src":"540:41:29"},"nodeType":"YulExpressionStatement","src":"540:41:29"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"464:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"475:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"486:4:29","type":""}],"src":"400:187:29"},{"body":{"nodeType":"YulBlock","src":"658:184:29","statements":[{"nodeType":"YulVariableDeclaration","src":"668:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"677:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"672:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"737:63:29","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"762:3:29"},{"name":"i","nodeType":"YulIdentifier","src":"767:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"758:3:29"},"nodeType":"YulFunctionCall","src":"758:11:29"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"781:3:29"},{"name":"i","nodeType":"YulIdentifier","src":"786:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:29"},"nodeType":"YulFunctionCall","src":"777:11:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"771:5:29"},"nodeType":"YulFunctionCall","src":"771:18:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"751:6:29"},"nodeType":"YulFunctionCall","src":"751:39:29"},"nodeType":"YulExpressionStatement","src":"751:39:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"698:1:29"},{"name":"length","nodeType":"YulIdentifier","src":"701:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"695:2:29"},"nodeType":"YulFunctionCall","src":"695:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"709:19:29","statements":[{"nodeType":"YulAssignment","src":"711:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"720:1:29"},{"kind":"number","nodeType":"YulLiteral","src":"723:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"716:3:29"},"nodeType":"YulFunctionCall","src":"716:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"711:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"691:3:29","statements":[]},"src":"687:113:29"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"820:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"825:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"816:3:29"},"nodeType":"YulFunctionCall","src":"816:16:29"},{"kind":"number","nodeType":"YulLiteral","src":"834:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:29"},"nodeType":"YulFunctionCall","src":"809:27:29"},"nodeType":"YulExpressionStatement","src":"809:27:29"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"636:3:29","type":""},{"name":"dst","nodeType":"YulTypedName","src":"641:3:29","type":""},{"name":"length","nodeType":"YulTypedName","src":"646:6:29","type":""}],"src":"592:250:29"},{"body":{"nodeType":"YulBlock","src":"897:221:29","statements":[{"nodeType":"YulVariableDeclaration","src":"907:26:29","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"927:5:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"921:5:29"},"nodeType":"YulFunctionCall","src":"921:12:29"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"911:6:29","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"949:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"954:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"942:6:29"},"nodeType":"YulFunctionCall","src":"942:19:29"},"nodeType":"YulExpressionStatement","src":"942:19:29"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1009:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"1016:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1005:3:29"},"nodeType":"YulFunctionCall","src":"1005:16:29"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1027:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"1032:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1023:3:29"},"nodeType":"YulFunctionCall","src":"1023:14:29"},{"name":"length","nodeType":"YulIdentifier","src":"1039:6:29"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"970:34:29"},"nodeType":"YulFunctionCall","src":"970:76:29"},"nodeType":"YulExpressionStatement","src":"970:76:29"},{"nodeType":"YulAssignment","src":"1055:57:29","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1070:3:29"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1083:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1091:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1079:3:29"},"nodeType":"YulFunctionCall","src":"1079:15:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1100:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1096:3:29"},"nodeType":"YulFunctionCall","src":"1096:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1075:3:29"},"nodeType":"YulFunctionCall","src":"1075:29:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1066:3:29"},"nodeType":"YulFunctionCall","src":"1066:39:29"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1062:3:29"},"nodeType":"YulFunctionCall","src":"1062:50:29"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1055:3:29"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"874:5:29","type":""},{"name":"pos","nodeType":"YulTypedName","src":"881:3:29","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"889:3:29","type":""}],"src":"847:271:29"},{"body":{"nodeType":"YulBlock","src":"1244:99:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1261:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1272:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1254:6:29"},"nodeType":"YulFunctionCall","src":"1254:21:29"},"nodeType":"YulExpressionStatement","src":"1254:21:29"},{"nodeType":"YulAssignment","src":"1284:53:29","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1310:6:29"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1322:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1333:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1318:3:29"},"nodeType":"YulFunctionCall","src":"1318:18:29"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1292:17:29"},"nodeType":"YulFunctionCall","src":"1292:45:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1284:4:29"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1213:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1224:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1235:4:29","type":""}],"src":"1123:220:29"},{"body":{"nodeType":"YulBlock","src":"1418:110:29","statements":[{"body":{"nodeType":"YulBlock","src":"1464:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1473:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1476:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1466:6:29"},"nodeType":"YulFunctionCall","src":"1466:12:29"},"nodeType":"YulExpressionStatement","src":"1466:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1439:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1448:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1435:3:29"},"nodeType":"YulFunctionCall","src":"1435:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1460:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1431:3:29"},"nodeType":"YulFunctionCall","src":"1431:32:29"},"nodeType":"YulIf","src":"1428:52:29"},{"nodeType":"YulAssignment","src":"1489:33:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1512:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1499:12:29"},"nodeType":"YulFunctionCall","src":"1499:23:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1489:6:29"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1384:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1395:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1407:6:29","type":""}],"src":"1348:180:29"},{"body":{"nodeType":"YulBlock","src":"1634:102:29","statements":[{"nodeType":"YulAssignment","src":"1644:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1656:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1667:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1652:3:29"},"nodeType":"YulFunctionCall","src":"1652:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1644:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1701:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1717:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1722:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1713:3:29"},"nodeType":"YulFunctionCall","src":"1713:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"1726:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1709:3:29"},"nodeType":"YulFunctionCall","src":"1709:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1697:3:29"},"nodeType":"YulFunctionCall","src":"1697:32:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1679:6:29"},"nodeType":"YulFunctionCall","src":"1679:51:29"},"nodeType":"YulExpressionStatement","src":"1679:51:29"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1603:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1614:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1625:4:29","type":""}],"src":"1533:203:29"},{"body":{"nodeType":"YulBlock","src":"1790:124:29","statements":[{"nodeType":"YulAssignment","src":"1800:29:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1822:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1809:12:29"},"nodeType":"YulFunctionCall","src":"1809:20:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1800:5:29"}]},{"body":{"nodeType":"YulBlock","src":"1892:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1901:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1904:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1894:6:29"},"nodeType":"YulFunctionCall","src":"1894:12:29"},"nodeType":"YulExpressionStatement","src":"1894:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1851:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1862:5:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1877:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1882:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1873:3:29"},"nodeType":"YulFunctionCall","src":"1873:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"1886:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1869:3:29"},"nodeType":"YulFunctionCall","src":"1869:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1858:3:29"},"nodeType":"YulFunctionCall","src":"1858:31:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1848:2:29"},"nodeType":"YulFunctionCall","src":"1848:42:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1841:6:29"},"nodeType":"YulFunctionCall","src":"1841:50:29"},"nodeType":"YulIf","src":"1838:70:29"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1769:6:29","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1780:5:29","type":""}],"src":"1741:173:29"},{"body":{"nodeType":"YulBlock","src":"2006:167:29","statements":[{"body":{"nodeType":"YulBlock","src":"2052:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2061:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2064:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2054:6:29"},"nodeType":"YulFunctionCall","src":"2054:12:29"},"nodeType":"YulExpressionStatement","src":"2054:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2036:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2023:3:29"},"nodeType":"YulFunctionCall","src":"2023:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2048:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2019:3:29"},"nodeType":"YulFunctionCall","src":"2019:32:29"},"nodeType":"YulIf","src":"2016:52:29"},{"nodeType":"YulAssignment","src":"2077:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2106:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2087:18:29"},"nodeType":"YulFunctionCall","src":"2087:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2077:6:29"}]},{"nodeType":"YulAssignment","src":"2125:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2152:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2163:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2148:3:29"},"nodeType":"YulFunctionCall","src":"2148:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2135:12:29"},"nodeType":"YulFunctionCall","src":"2135:32:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2125:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1964:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1975:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1987:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1995:6:29","type":""}],"src":"1919:254:29"},{"body":{"nodeType":"YulBlock","src":"2282:224:29","statements":[{"body":{"nodeType":"YulBlock","src":"2328:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2337:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2340:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2330:6:29"},"nodeType":"YulFunctionCall","src":"2330:12:29"},"nodeType":"YulExpressionStatement","src":"2330:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2303:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2312:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2299:3:29"},"nodeType":"YulFunctionCall","src":"2299:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2324:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2295:3:29"},"nodeType":"YulFunctionCall","src":"2295:32:29"},"nodeType":"YulIf","src":"2292:52:29"},{"nodeType":"YulAssignment","src":"2353:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2382:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2363:18:29"},"nodeType":"YulFunctionCall","src":"2363:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2353:6:29"}]},{"nodeType":"YulAssignment","src":"2401:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2434:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2445:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2430:3:29"},"nodeType":"YulFunctionCall","src":"2430:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2411:18:29"},"nodeType":"YulFunctionCall","src":"2411:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2401:6:29"}]},{"nodeType":"YulAssignment","src":"2458:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2485:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2496:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2481:3:29"},"nodeType":"YulFunctionCall","src":"2481:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2468:12:29"},"nodeType":"YulFunctionCall","src":"2468:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2458:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2232:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2243:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2255:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2263:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2271:6:29","type":""}],"src":"2178:328:29"},{"body":{"nodeType":"YulBlock","src":"2581:116:29","statements":[{"body":{"nodeType":"YulBlock","src":"2627:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2636:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2639:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2629:6:29"},"nodeType":"YulFunctionCall","src":"2629:12:29"},"nodeType":"YulExpressionStatement","src":"2629:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2602:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2611:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2598:3:29"},"nodeType":"YulFunctionCall","src":"2598:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2623:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2594:3:29"},"nodeType":"YulFunctionCall","src":"2594:32:29"},"nodeType":"YulIf","src":"2591:52:29"},{"nodeType":"YulAssignment","src":"2652:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2681:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2662:18:29"},"nodeType":"YulFunctionCall","src":"2662:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2652:6:29"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2547:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2558:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2570:6:29","type":""}],"src":"2511:186:29"},{"body":{"nodeType":"YulBlock","src":"2803:76:29","statements":[{"nodeType":"YulAssignment","src":"2813:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2825:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2836:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2821:3:29"},"nodeType":"YulFunctionCall","src":"2821:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2813:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2855:9:29"},{"name":"value0","nodeType":"YulIdentifier","src":"2866:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2848:6:29"},"nodeType":"YulFunctionCall","src":"2848:25:29"},"nodeType":"YulExpressionStatement","src":"2848:25:29"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2772:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2783:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2794:4:29","type":""}],"src":"2702:177:29"},{"body":{"nodeType":"YulBlock","src":"2968:263:29","statements":[{"body":{"nodeType":"YulBlock","src":"3014:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3023:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3026:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3016:6:29"},"nodeType":"YulFunctionCall","src":"3016:12:29"},"nodeType":"YulExpressionStatement","src":"3016:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2989:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2998:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2985:3:29"},"nodeType":"YulFunctionCall","src":"2985:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"3010:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2981:3:29"},"nodeType":"YulFunctionCall","src":"2981:32:29"},"nodeType":"YulIf","src":"2978:52:29"},{"nodeType":"YulAssignment","src":"3039:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3068:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3049:18:29"},"nodeType":"YulFunctionCall","src":"3049:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3039:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3087:45:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3117:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3128:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3113:3:29"},"nodeType":"YulFunctionCall","src":"3113:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3100:12:29"},"nodeType":"YulFunctionCall","src":"3100:32:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3091:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3185:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3194:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3197:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3187:6:29"},"nodeType":"YulFunctionCall","src":"3187:12:29"},"nodeType":"YulExpressionStatement","src":"3187:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3154:5:29"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3175:5:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3168:6:29"},"nodeType":"YulFunctionCall","src":"3168:13:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3161:6:29"},"nodeType":"YulFunctionCall","src":"3161:21:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3151:2:29"},"nodeType":"YulFunctionCall","src":"3151:32:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3144:6:29"},"nodeType":"YulFunctionCall","src":"3144:40:29"},"nodeType":"YulIf","src":"3141:60:29"},{"nodeType":"YulAssignment","src":"3210:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"3220:5:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3210:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2926:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2937:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2949:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2957:6:29","type":""}],"src":"2884:347:29"},{"body":{"nodeType":"YulBlock","src":"3268:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3285:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3292:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3297:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3288:3:29"},"nodeType":"YulFunctionCall","src":"3288:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3278:6:29"},"nodeType":"YulFunctionCall","src":"3278:31:29"},"nodeType":"YulExpressionStatement","src":"3278:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3325:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3328:4:29","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3318:6:29"},"nodeType":"YulFunctionCall","src":"3318:15:29"},"nodeType":"YulExpressionStatement","src":"3318:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3349:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3352:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3342:6:29"},"nodeType":"YulFunctionCall","src":"3342:15:29"},"nodeType":"YulExpressionStatement","src":"3342:15:29"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3236:127:29"},{"body":{"nodeType":"YulBlock","src":"3498:1008:29","statements":[{"body":{"nodeType":"YulBlock","src":"3545:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3554:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3557:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3547:6:29"},"nodeType":"YulFunctionCall","src":"3547:12:29"},"nodeType":"YulExpressionStatement","src":"3547:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3519:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"3528:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3515:3:29"},"nodeType":"YulFunctionCall","src":"3515:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"3540:3:29","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3511:3:29"},"nodeType":"YulFunctionCall","src":"3511:33:29"},"nodeType":"YulIf","src":"3508:53:29"},{"nodeType":"YulAssignment","src":"3570:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3599:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3580:18:29"},"nodeType":"YulFunctionCall","src":"3580:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3570:6:29"}]},{"nodeType":"YulAssignment","src":"3618:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3651:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3662:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3647:3:29"},"nodeType":"YulFunctionCall","src":"3647:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3628:18:29"},"nodeType":"YulFunctionCall","src":"3628:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3618:6:29"}]},{"nodeType":"YulAssignment","src":"3675:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3702:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3713:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3698:3:29"},"nodeType":"YulFunctionCall","src":"3698:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3685:12:29"},"nodeType":"YulFunctionCall","src":"3685:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3675:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3726:46:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3757:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3768:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3753:3:29"},"nodeType":"YulFunctionCall","src":"3753:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3740:12:29"},"nodeType":"YulFunctionCall","src":"3740:32:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3730:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3781:28:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3791:18:29","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3785:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3836:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3845:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3848:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3838:6:29"},"nodeType":"YulFunctionCall","src":"3838:12:29"},"nodeType":"YulExpressionStatement","src":"3838:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3824:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"3832:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3821:2:29"},"nodeType":"YulFunctionCall","src":"3821:14:29"},"nodeType":"YulIf","src":"3818:34:29"},{"nodeType":"YulVariableDeclaration","src":"3861:32:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3875:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"3886:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3871:3:29"},"nodeType":"YulFunctionCall","src":"3871:22:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3865:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3941:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3950:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3953:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3943:6:29"},"nodeType":"YulFunctionCall","src":"3943:12:29"},"nodeType":"YulExpressionStatement","src":"3943:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3920:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"3924:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3916:3:29"},"nodeType":"YulFunctionCall","src":"3916:13:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3931:7:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3912:3:29"},"nodeType":"YulFunctionCall","src":"3912:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3905:6:29"},"nodeType":"YulFunctionCall","src":"3905:35:29"},"nodeType":"YulIf","src":"3902:55:29"},{"nodeType":"YulVariableDeclaration","src":"3966:26:29","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3989:2:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3976:12:29"},"nodeType":"YulFunctionCall","src":"3976:16:29"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3970:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"4015:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4017:16:29"},"nodeType":"YulFunctionCall","src":"4017:18:29"},"nodeType":"YulExpressionStatement","src":"4017:18:29"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4007:2:29"},{"name":"_1","nodeType":"YulIdentifier","src":"4011:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4004:2:29"},"nodeType":"YulFunctionCall","src":"4004:10:29"},"nodeType":"YulIf","src":"4001:36:29"},{"nodeType":"YulVariableDeclaration","src":"4046:17:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4060:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4056:3:29"},"nodeType":"YulFunctionCall","src":"4056:7:29"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4050:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4072:23:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4092:2:29","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4086:5:29"},"nodeType":"YulFunctionCall","src":"4086:9:29"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4076:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4104:71:29","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4126:6:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4150:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"4154:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4146:3:29"},"nodeType":"YulFunctionCall","src":"4146:13:29"},{"name":"_4","nodeType":"YulIdentifier","src":"4161:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4142:3:29"},"nodeType":"YulFunctionCall","src":"4142:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"4166:2:29","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4138:3:29"},"nodeType":"YulFunctionCall","src":"4138:31:29"},{"name":"_4","nodeType":"YulIdentifier","src":"4171:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4134:3:29"},"nodeType":"YulFunctionCall","src":"4134:40:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4122:3:29"},"nodeType":"YulFunctionCall","src":"4122:53:29"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4108:10:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"4234:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4236:16:29"},"nodeType":"YulFunctionCall","src":"4236:18:29"},"nodeType":"YulExpressionStatement","src":"4236:18:29"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4193:10:29"},{"name":"_1","nodeType":"YulIdentifier","src":"4205:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4190:2:29"},"nodeType":"YulFunctionCall","src":"4190:18:29"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4213:10:29"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4225:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4210:2:29"},"nodeType":"YulFunctionCall","src":"4210:22:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4187:2:29"},"nodeType":"YulFunctionCall","src":"4187:46:29"},"nodeType":"YulIf","src":"4184:72:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4272:2:29","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4276:10:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4265:6:29"},"nodeType":"YulFunctionCall","src":"4265:22:29"},"nodeType":"YulExpressionStatement","src":"4265:22:29"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4303:6:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4311:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4296:6:29"},"nodeType":"YulFunctionCall","src":"4296:18:29"},"nodeType":"YulExpressionStatement","src":"4296:18:29"},{"body":{"nodeType":"YulBlock","src":"4360:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4369:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4372:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4362:6:29"},"nodeType":"YulFunctionCall","src":"4362:12:29"},"nodeType":"YulExpressionStatement","src":"4362:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4337:2:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4341:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4333:3:29"},"nodeType":"YulFunctionCall","src":"4333:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"4346:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4329:3:29"},"nodeType":"YulFunctionCall","src":"4329:20:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4351:7:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4326:2:29"},"nodeType":"YulFunctionCall","src":"4326:33:29"},"nodeType":"YulIf","src":"4323:53:29"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4402:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4410:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4398:3:29"},"nodeType":"YulFunctionCall","src":"4398:15:29"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4419:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"4423:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4415:3:29"},"nodeType":"YulFunctionCall","src":"4415:11:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4428:2:29"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4385:12:29"},"nodeType":"YulFunctionCall","src":"4385:46:29"},"nodeType":"YulExpressionStatement","src":"4385:46:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4455:6:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4463:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:29"},"nodeType":"YulFunctionCall","src":"4451:15:29"},{"kind":"number","nodeType":"YulLiteral","src":"4468:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4447:3:29"},"nodeType":"YulFunctionCall","src":"4447:24:29"},{"kind":"number","nodeType":"YulLiteral","src":"4473:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4440:6:29"},"nodeType":"YulFunctionCall","src":"4440:35:29"},"nodeType":"YulExpressionStatement","src":"4440:35:29"},{"nodeType":"YulAssignment","src":"4484:16:29","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4494:6:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4484:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3440:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3451:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3463:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3471:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3479:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3487:6:29","type":""}],"src":"3368:1138:29"},{"body":{"nodeType":"YulBlock","src":"4598:173:29","statements":[{"body":{"nodeType":"YulBlock","src":"4644:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4653:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4656:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4646:6:29"},"nodeType":"YulFunctionCall","src":"4646:12:29"},"nodeType":"YulExpressionStatement","src":"4646:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4619:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"4628:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4615:3:29"},"nodeType":"YulFunctionCall","src":"4615:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"4640:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4611:3:29"},"nodeType":"YulFunctionCall","src":"4611:32:29"},"nodeType":"YulIf","src":"4608:52:29"},{"nodeType":"YulAssignment","src":"4669:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4698:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4679:18:29"},"nodeType":"YulFunctionCall","src":"4679:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4669:6:29"}]},{"nodeType":"YulAssignment","src":"4717:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4750:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4761:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4746:3:29"},"nodeType":"YulFunctionCall","src":"4746:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4727:18:29"},"nodeType":"YulFunctionCall","src":"4727:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4717:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4556:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4567:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4579:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4587:6:29","type":""}],"src":"4511:260:29"},{"body":{"nodeType":"YulBlock","src":"4831:325:29","statements":[{"nodeType":"YulAssignment","src":"4841:22:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4855:1:29","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"4858:4:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4851:3:29"},"nodeType":"YulFunctionCall","src":"4851:12:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4841:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"4872:38:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"4902:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"4908:1:29","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4898:3:29"},"nodeType":"YulFunctionCall","src":"4898:12:29"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"4876:18:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"4949:31:29","statements":[{"nodeType":"YulAssignment","src":"4951:27:29","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4965:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4973:4:29","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4961:3:29"},"nodeType":"YulFunctionCall","src":"4961:17:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4951:6:29"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4929:18:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4922:6:29"},"nodeType":"YulFunctionCall","src":"4922:26:29"},"nodeType":"YulIf","src":"4919:61:29"},{"body":{"nodeType":"YulBlock","src":"5039:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5060:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5067:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"5072:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5063:3:29"},"nodeType":"YulFunctionCall","src":"5063:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5053:6:29"},"nodeType":"YulFunctionCall","src":"5053:31:29"},"nodeType":"YulExpressionStatement","src":"5053:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5104:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5107:4:29","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5097:6:29"},"nodeType":"YulFunctionCall","src":"5097:15:29"},"nodeType":"YulExpressionStatement","src":"5097:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5132:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5135:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5125:6:29"},"nodeType":"YulFunctionCall","src":"5125:15:29"},"nodeType":"YulExpressionStatement","src":"5125:15:29"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4995:18:29"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5018:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"5026:2:29","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5015:2:29"},"nodeType":"YulFunctionCall","src":"5015:14:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4992:2:29"},"nodeType":"YulFunctionCall","src":"4992:38:29"},"nodeType":"YulIf","src":"4989:161:29"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"4811:4:29","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4820:6:29","type":""}],"src":"4776:380:29"},{"body":{"nodeType":"YulBlock","src":"5335:223:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5352:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5363:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5345:6:29"},"nodeType":"YulFunctionCall","src":"5345:21:29"},"nodeType":"YulExpressionStatement","src":"5345:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5386:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5397:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5382:3:29"},"nodeType":"YulFunctionCall","src":"5382:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5402:2:29","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5375:6:29"},"nodeType":"YulFunctionCall","src":"5375:30:29"},"nodeType":"YulExpressionStatement","src":"5375:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5425:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5436:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5421:3:29"},"nodeType":"YulFunctionCall","src":"5421:18:29"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"5441:34:29","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5414:6:29"},"nodeType":"YulFunctionCall","src":"5414:62:29"},"nodeType":"YulExpressionStatement","src":"5414:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5496:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5507:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5492:3:29"},"nodeType":"YulFunctionCall","src":"5492:18:29"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"5512:3:29","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5485:6:29"},"nodeType":"YulFunctionCall","src":"5485:31:29"},"nodeType":"YulExpressionStatement","src":"5485:31:29"},{"nodeType":"YulAssignment","src":"5525:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5537:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5548:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5533:3:29"},"nodeType":"YulFunctionCall","src":"5533:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5525:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5312:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5326:4:29","type":""}],"src":"5161:397:29"},{"body":{"nodeType":"YulBlock","src":"5737:251:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5754:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5765:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5747:6:29"},"nodeType":"YulFunctionCall","src":"5747:21:29"},"nodeType":"YulExpressionStatement","src":"5747:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5788:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5799:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5784:3:29"},"nodeType":"YulFunctionCall","src":"5784:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5804:2:29","type":"","value":"61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5777:6:29"},"nodeType":"YulFunctionCall","src":"5777:30:29"},"nodeType":"YulExpressionStatement","src":"5777:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5827:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5838:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5823:3:29"},"nodeType":"YulFunctionCall","src":"5823:18:29"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"5843:34:29","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5816:6:29"},"nodeType":"YulFunctionCall","src":"5816:62:29"},"nodeType":"YulExpressionStatement","src":"5816:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5898:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5909:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5894:3:29"},"nodeType":"YulFunctionCall","src":"5894:18:29"},{"hexValue":"6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"5914:31:29","type":"","value":"ken owner or approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5887:6:29"},"nodeType":"YulFunctionCall","src":"5887:59:29"},"nodeType":"YulExpressionStatement","src":"5887:59:29"},{"nodeType":"YulAssignment","src":"5955:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5967:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5978:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5963:3:29"},"nodeType":"YulFunctionCall","src":"5963:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5955:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5714:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5728:4:29","type":""}],"src":"5563:425:29"},{"body":{"nodeType":"YulBlock","src":"6167:235:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6184:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6195:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6177:6:29"},"nodeType":"YulFunctionCall","src":"6177:21:29"},"nodeType":"YulExpressionStatement","src":"6177:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6218:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6229:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6214:3:29"},"nodeType":"YulFunctionCall","src":"6214:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"6234:2:29","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6207:6:29"},"nodeType":"YulFunctionCall","src":"6207:30:29"},"nodeType":"YulExpressionStatement","src":"6207:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6257:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6268:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6253:3:29"},"nodeType":"YulFunctionCall","src":"6253:18:29"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"6273:34:29","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6246:6:29"},"nodeType":"YulFunctionCall","src":"6246:62:29"},"nodeType":"YulExpressionStatement","src":"6246:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6328:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6339:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6324:3:29"},"nodeType":"YulFunctionCall","src":"6324:18:29"},{"hexValue":"72206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"6344:15:29","type":"","value":"r or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6317:6:29"},"nodeType":"YulFunctionCall","src":"6317:43:29"},"nodeType":"YulExpressionStatement","src":"6317:43:29"},{"nodeType":"YulAssignment","src":"6369:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6381:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6392:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6377:3:29"},"nodeType":"YulFunctionCall","src":"6377:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6369:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6144:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6158:4:29","type":""}],"src":"5993:409:29"},{"body":{"nodeType":"YulBlock","src":"6581:174:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6598:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6609:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6591:6:29"},"nodeType":"YulFunctionCall","src":"6591:21:29"},"nodeType":"YulExpressionStatement","src":"6591:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6632:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6643:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6628:3:29"},"nodeType":"YulFunctionCall","src":"6628:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"6648:2:29","type":"","value":"24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6621:6:29"},"nodeType":"YulFunctionCall","src":"6621:30:29"},"nodeType":"YulExpressionStatement","src":"6621:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6671:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6682:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6667:3:29"},"nodeType":"YulFunctionCall","src":"6667:18:29"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"6687:26:29","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6660:6:29"},"nodeType":"YulFunctionCall","src":"6660:54:29"},"nodeType":"YulExpressionStatement","src":"6660:54:29"},{"nodeType":"YulAssignment","src":"6723:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6735:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6746:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6731:3:29"},"nodeType":"YulFunctionCall","src":"6731:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6723:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6558:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6572:4:29","type":""}],"src":"6407:348:29"},{"body":{"nodeType":"YulBlock","src":"6934:231:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6951:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6962:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6944:6:29"},"nodeType":"YulFunctionCall","src":"6944:21:29"},"nodeType":"YulExpressionStatement","src":"6944:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6985:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6996:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6981:3:29"},"nodeType":"YulFunctionCall","src":"6981:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"7001:2:29","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6974:6:29"},"nodeType":"YulFunctionCall","src":"6974:30:29"},"nodeType":"YulExpressionStatement","src":"6974:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7024:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7035:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7020:3:29"},"nodeType":"YulFunctionCall","src":"7020:18:29"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"7040:34:29","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7013:6:29"},"nodeType":"YulFunctionCall","src":"7013:62:29"},"nodeType":"YulExpressionStatement","src":"7013:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7095:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7106:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7091:3:29"},"nodeType":"YulFunctionCall","src":"7091:18:29"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7111:11:29","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7084:6:29"},"nodeType":"YulFunctionCall","src":"7084:39:29"},"nodeType":"YulExpressionStatement","src":"7084:39:29"},{"nodeType":"YulAssignment","src":"7132:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7144:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7155:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7140:3:29"},"nodeType":"YulFunctionCall","src":"7140:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7132:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6911:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6925:4:29","type":""}],"src":"6760:405:29"},{"body":{"nodeType":"YulBlock","src":"7357:309:29","statements":[{"nodeType":"YulVariableDeclaration","src":"7367:27:29","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7387:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7381:5:29"},"nodeType":"YulFunctionCall","src":"7381:13:29"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7371:6:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7442:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"7450:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7438:3:29"},"nodeType":"YulFunctionCall","src":"7438:17:29"},{"name":"pos","nodeType":"YulIdentifier","src":"7457:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"7462:6:29"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7403:34:29"},"nodeType":"YulFunctionCall","src":"7403:66:29"},"nodeType":"YulExpressionStatement","src":"7403:66:29"},{"nodeType":"YulVariableDeclaration","src":"7478:29:29","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7495:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"7500:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7491:3:29"},"nodeType":"YulFunctionCall","src":"7491:16:29"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"7482:5:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7516:29:29","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7538:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7532:5:29"},"nodeType":"YulFunctionCall","src":"7532:13:29"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"7520:8:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7593:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"7601:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7589:3:29"},"nodeType":"YulFunctionCall","src":"7589:17:29"},{"name":"end_1","nodeType":"YulIdentifier","src":"7608:5:29"},{"name":"length_1","nodeType":"YulIdentifier","src":"7615:8:29"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7554:34:29"},"nodeType":"YulFunctionCall","src":"7554:70:29"},"nodeType":"YulExpressionStatement","src":"7554:70:29"},{"nodeType":"YulAssignment","src":"7633:27:29","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"7644:5:29"},{"name":"length_1","nodeType":"YulIdentifier","src":"7651:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7640:3:29"},"nodeType":"YulFunctionCall","src":"7640:20:29"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7633:3:29"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7325:3:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7330:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7338:6:29","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7349:3:29","type":""}],"src":"7170:496:29"},{"body":{"nodeType":"YulBlock","src":"7845:227:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7862:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7873:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7855:6:29"},"nodeType":"YulFunctionCall","src":"7855:21:29"},"nodeType":"YulExpressionStatement","src":"7855:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7896:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7907:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7892:3:29"},"nodeType":"YulFunctionCall","src":"7892:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"7912:2:29","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7885:6:29"},"nodeType":"YulFunctionCall","src":"7885:30:29"},"nodeType":"YulExpressionStatement","src":"7885:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7935:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7946:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7931:3:29"},"nodeType":"YulFunctionCall","src":"7931:18:29"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"7951:34:29","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7924:6:29"},"nodeType":"YulFunctionCall","src":"7924:62:29"},"nodeType":"YulExpressionStatement","src":"7924:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8006:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8017:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8002:3:29"},"nodeType":"YulFunctionCall","src":"8002:18:29"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"8022:7:29","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7995:6:29"},"nodeType":"YulFunctionCall","src":"7995:35:29"},"nodeType":"YulExpressionStatement","src":"7995:35:29"},{"nodeType":"YulAssignment","src":"8039:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8051:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8062:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8047:3:29"},"nodeType":"YulFunctionCall","src":"8047:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8039:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7822:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7836:4:29","type":""}],"src":"7671:401:29"},{"body":{"nodeType":"YulBlock","src":"8251:226:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8268:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8279:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8261:6:29"},"nodeType":"YulFunctionCall","src":"8261:21:29"},"nodeType":"YulExpressionStatement","src":"8261:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8302:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8313:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8298:3:29"},"nodeType":"YulFunctionCall","src":"8298:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"8318:2:29","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8291:6:29"},"nodeType":"YulFunctionCall","src":"8291:30:29"},"nodeType":"YulExpressionStatement","src":"8291:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8341:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8352:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8337:3:29"},"nodeType":"YulFunctionCall","src":"8337:18:29"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"8357:34:29","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8330:6:29"},"nodeType":"YulFunctionCall","src":"8330:62:29"},"nodeType":"YulExpressionStatement","src":"8330:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8412:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8423:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8408:3:29"},"nodeType":"YulFunctionCall","src":"8408:18:29"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"8428:6:29","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8401:6:29"},"nodeType":"YulFunctionCall","src":"8401:34:29"},"nodeType":"YulExpressionStatement","src":"8401:34:29"},{"nodeType":"YulAssignment","src":"8444:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8456:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8467:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8452:3:29"},"nodeType":"YulFunctionCall","src":"8452:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8444:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8228:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8242:4:29","type":""}],"src":"8077:400:29"},{"body":{"nodeType":"YulBlock","src":"8656:175:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8673:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8684:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8666:6:29"},"nodeType":"YulFunctionCall","src":"8666:21:29"},"nodeType":"YulExpressionStatement","src":"8666:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8707:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8718:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8703:3:29"},"nodeType":"YulFunctionCall","src":"8703:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"8723:2:29","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8696:6:29"},"nodeType":"YulFunctionCall","src":"8696:30:29"},"nodeType":"YulExpressionStatement","src":"8696:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8746:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8757:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8742:3:29"},"nodeType":"YulFunctionCall","src":"8742:18:29"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"8762:27:29","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8735:6:29"},"nodeType":"YulFunctionCall","src":"8735:55:29"},"nodeType":"YulExpressionStatement","src":"8735:55:29"},{"nodeType":"YulAssignment","src":"8799:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8811:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8822:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8807:3:29"},"nodeType":"YulFunctionCall","src":"8807:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8799:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8633:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8647:4:29","type":""}],"src":"8482:349:29"},{"body":{"nodeType":"YulBlock","src":"9010:240:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9027:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9038:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9020:6:29"},"nodeType":"YulFunctionCall","src":"9020:21:29"},"nodeType":"YulExpressionStatement","src":"9020:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9061:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9072:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9057:3:29"},"nodeType":"YulFunctionCall","src":"9057:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"9077:2:29","type":"","value":"50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9050:6:29"},"nodeType":"YulFunctionCall","src":"9050:30:29"},"nodeType":"YulExpressionStatement","src":"9050:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9100:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9111:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9096:3:29"},"nodeType":"YulFunctionCall","src":"9096:18:29"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"9116:34:29","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9089:6:29"},"nodeType":"YulFunctionCall","src":"9089:62:29"},"nodeType":"YulExpressionStatement","src":"9089:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9171:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9182:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9167:3:29"},"nodeType":"YulFunctionCall","src":"9167:18:29"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"9187:20:29","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9160:6:29"},"nodeType":"YulFunctionCall","src":"9160:48:29"},"nodeType":"YulExpressionStatement","src":"9160:48:29"},{"nodeType":"YulAssignment","src":"9217:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9229:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9240:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9225:3:29"},"nodeType":"YulFunctionCall","src":"9225:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9217:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8987:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9001:4:29","type":""}],"src":"8836:414:29"},{"body":{"nodeType":"YulBlock","src":"9287:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9304:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9311:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9316:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9307:3:29"},"nodeType":"YulFunctionCall","src":"9307:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9297:6:29"},"nodeType":"YulFunctionCall","src":"9297:31:29"},"nodeType":"YulExpressionStatement","src":"9297:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9344:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9347:4:29","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9337:6:29"},"nodeType":"YulFunctionCall","src":"9337:15:29"},"nodeType":"YulExpressionStatement","src":"9337:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9368:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9371:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9361:6:29"},"nodeType":"YulFunctionCall","src":"9361:15:29"},"nodeType":"YulExpressionStatement","src":"9361:15:29"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"9255:127:29"},{"body":{"nodeType":"YulBlock","src":"9590:286:29","statements":[{"nodeType":"YulVariableDeclaration","src":"9600:29:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9618:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"9623:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9614:3:29"},"nodeType":"YulFunctionCall","src":"9614:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"9627:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9610:3:29"},"nodeType":"YulFunctionCall","src":"9610:19:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9604:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9645:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9660:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"9668:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9656:3:29"},"nodeType":"YulFunctionCall","src":"9656:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9638:6:29"},"nodeType":"YulFunctionCall","src":"9638:34:29"},"nodeType":"YulExpressionStatement","src":"9638:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9692:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9703:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9688:3:29"},"nodeType":"YulFunctionCall","src":"9688:18:29"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9712:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"9720:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9708:3:29"},"nodeType":"YulFunctionCall","src":"9708:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9681:6:29"},"nodeType":"YulFunctionCall","src":"9681:43:29"},"nodeType":"YulExpressionStatement","src":"9681:43:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9744:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9755:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9740:3:29"},"nodeType":"YulFunctionCall","src":"9740:18:29"},{"name":"value2","nodeType":"YulIdentifier","src":"9760:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9733:6:29"},"nodeType":"YulFunctionCall","src":"9733:34:29"},"nodeType":"YulExpressionStatement","src":"9733:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9787:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9798:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9783:3:29"},"nodeType":"YulFunctionCall","src":"9783:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"9803:3:29","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9776:6:29"},"nodeType":"YulFunctionCall","src":"9776:31:29"},"nodeType":"YulExpressionStatement","src":"9776:31:29"},{"nodeType":"YulAssignment","src":"9816:54:29","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"9842:6:29"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9854:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9865:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9850:3:29"},"nodeType":"YulFunctionCall","src":"9850:19:29"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"9824:17:29"},"nodeType":"YulFunctionCall","src":"9824:46:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9816:4:29"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9535:9:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9546:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9554:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9562:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9570:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9581:4:29","type":""}],"src":"9387:489:29"},{"body":{"nodeType":"YulBlock","src":"9961:169:29","statements":[{"body":{"nodeType":"YulBlock","src":"10007:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10016:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10019:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10009:6:29"},"nodeType":"YulFunctionCall","src":"10009:12:29"},"nodeType":"YulExpressionStatement","src":"10009:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9982:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"9991:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9978:3:29"},"nodeType":"YulFunctionCall","src":"9978:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"10003:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9974:3:29"},"nodeType":"YulFunctionCall","src":"9974:32:29"},"nodeType":"YulIf","src":"9971:52:29"},{"nodeType":"YulVariableDeclaration","src":"10032:29:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10051:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10045:5:29"},"nodeType":"YulFunctionCall","src":"10045:16:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10036:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10094:5:29"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"10070:23:29"},"nodeType":"YulFunctionCall","src":"10070:30:29"},"nodeType":"YulExpressionStatement","src":"10070:30:29"},{"nodeType":"YulAssignment","src":"10109:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"10119:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10109:6:29"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9927:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9938:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9950:6:29","type":""}],"src":"9881:249:29"}]},"contents":"{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function 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_string(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_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function 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_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\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_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n mstore(add(headStart, 96), \"r\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 61)\n mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n mstore(add(headStart, 96), \"ken owner or approved for all\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n mstore(add(headStart, 96), \"r or approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n mstore(add(headStart, 96), \"lid owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n mstore(add(headStart, 96), \"owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"ERC721: approve to caller\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n mstore(add(headStart, 96), \"ceiver implementer\")\n tail := add(headStart, 128)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c7f565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cec565b61012461011f366004610cff565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d34565b610333565b005b61014f61015f366004610d5e565b61044d565b61014f610172366004610d5e565b61047e565b610124610185366004610cff565b610499565b61019d610198366004610d9a565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610db5565b61058e565b61014f6101d4366004610e07565b61059d565b6101046101e7366004610cff565b6105d5565b6100e76101fa366004610ee3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610f16565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610f16565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152600460205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f50565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610f16565b6105993383836108fc565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f50565b6105cf848484846109ca565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b80610621846109fd565b604051602001610632929190610f9d565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b0316146107d15760405162461bcd60e51b81526004016103a790610fcc565b6001600160a01b0382166108335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b826001600160a01b031661084682610499565b6001600160a01b03161461086c5760405162461bcd60e51b81526004016103a790610fcc565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361095d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109d5848484610798565b6109e184848484610a90565b6105cf5760405162461bcd60e51b81526004016103a790611011565b60606000610a0a83610b91565b600101905060008167ffffffffffffffff811115610a2a57610a2a610df1565b6040519080825280601f01601f191660200182016040528015610a54576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a5e57509392505050565b60006001600160a01b0384163b15610b8657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610ad4903390899088908890600401611063565b6020604051808303816000875af1925050508015610b0f575060408051601f3d908101601f19168201909252610b0c918101906110a0565b60015b610b6c573d808015610b3d576040519150601f19603f3d011682016040523d82523d6000602084013e610b42565b606091505b508051600003610b645760405162461bcd60e51b81526004016103a790611011565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bd05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bfc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c1a57662386f26fc10000830492506010015b6305f5e1008310610c32576305f5e100830492506008015b6127108310610c4657612710830492506004015b60648310610c58576064830492506002015b600a83106102745760010192915050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c9157600080fd5b813561064281610c69565b60005b83811015610cb7578181015183820152602001610c9f565b50506000910152565b60008151808452610cd8816020860160208601610c9c565b601f01601f19169290920160200192915050565b6020815260006106426020830184610cc0565b600060208284031215610d1157600080fd5b5035919050565b80356001600160a01b0381168114610d2f57600080fd5b919050565b60008060408385031215610d4757600080fd5b610d5083610d18565b946020939093013593505050565b600080600060608486031215610d7357600080fd5b610d7c84610d18565b9250610d8a60208501610d18565b9150604084013590509250925092565b600060208284031215610dac57600080fd5b61064282610d18565b60008060408385031215610dc857600080fd5b610dd183610d18565b915060208301358015158114610de657600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e1d57600080fd5b610e2685610d18565b9350610e3460208601610d18565b925060408501359150606085013567ffffffffffffffff80821115610e5857600080fd5b818701915087601f830112610e6c57600080fd5b813581811115610e7e57610e7e610df1565b604051601f8201601f19908116603f01168101908382118183101715610ea657610ea6610df1565b816040528281528a6020848701011115610ebf57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610ef657600080fd5b610eff83610d18565b9150610f0d60208401610d18565b90509250929050565b600181811c90821680610f2a57607f821691505b602082108103610f4a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351610faf818460208801610c9c565b835190830190610fc3818360208801610c9c565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061109690830184610cc0565b9695505050505050565b6000602082840312156110b257600080fd5b815161064281610c6956fea2646970667358221220572b001af737f9d43203516808c567baf41baf8d490bb57390158191aafea9c264736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x164 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xC7F JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x27A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xCEC JUMP JUMPDEST PUSH2 0x124 PUSH2 0x11F CALLDATASIZE PUSH1 0x4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0x30C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xD34 JUMP JUMPDEST PUSH2 0x333 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x44D JUMP JUMPDEST PUSH2 0x14F PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0x47E JUMP JUMPDEST PUSH2 0x124 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xD9A JUMP JUMPDEST PUSH2 0x4F9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x57F JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDB5 JUMP JUMPDEST PUSH2 0x58E JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0xE07 JUMP JUMPDEST PUSH2 0x59D JUMP JUMPDEST PUSH2 0x104 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0x5D5 JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x259 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x274 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0xF16 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2B5 SWAP1 PUSH2 0xF16 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x302 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x302 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x317 DUP3 PUSH2 0x649 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33E DUP3 PUSH2 0x499 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3B0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3CC JUMPI POP PUSH2 0x3CC DUP2 CALLER PUSH2 0x1FA JUMP JUMPDEST PUSH2 0x43E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 PUSH2 0x6AB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x457 CALLER DUP3 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x473 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xF50 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 DUP4 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x448 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x59D JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x274 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x563 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x289 SWAP1 PUSH2 0xF16 JUMP JUMPDEST PUSH2 0x599 CALLER DUP4 DUP4 PUSH2 0x8FC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x5A7 CALLER DUP4 PUSH2 0x719 JUMP JUMPDEST PUSH2 0x5C3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xF50 JUMP JUMPDEST PUSH2 0x5CF DUP5 DUP5 DUP5 DUP5 PUSH2 0x9CA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5E0 DUP3 PUSH2 0x649 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F7 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x617 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x642 JUMP JUMPDEST DUP1 PUSH2 0x621 DUP5 PUSH2 0x9FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x632 SWAP3 SWAP2 SWAP1 PUSH2 0xF9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x6E0 DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x725 DUP4 PUSH2 0x499 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x76C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x790 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x785 DUP5 PUSH2 0x30C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7AB DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xFCC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3A7 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x846 DUP3 PUSH2 0x499 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x86C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0xFCC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x95D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3A7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9D5 DUP5 DUP5 DUP5 PUSH2 0x798 JUMP JUMPDEST PUSH2 0x9E1 DUP5 DUP5 DUP5 DUP5 PUSH2 0xA90 JUMP JUMPDEST PUSH2 0x5CF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0x1011 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xA0A DUP4 PUSH2 0xB91 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA2A JUMPI PUSH2 0xA2A PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA54 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xA5E JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xB86 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xAD4 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1063 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB0F JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB0C SWAP2 DUP2 ADD SWAP1 PUSH2 0x10A0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB6C JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xB3D 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 0xB42 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xB64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3A7 SWAP1 PUSH2 0x1011 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x790 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0xBD0 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xBFC JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xC1A JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xC32 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xC46 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xC58 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x274 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x642 DUP2 PUSH2 0xC69 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCB7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC9F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xCD8 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xC9C 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 0x642 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD50 DUP4 PUSH2 0xD18 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD7C DUP5 PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP PUSH2 0xD8A PUSH1 0x20 DUP6 ADD PUSH2 0xD18 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x642 DUP3 PUSH2 0xD18 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDD1 DUP4 PUSH2 0xD18 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 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 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE26 DUP6 PUSH2 0xD18 JUMP JUMPDEST SWAP4 POP PUSH2 0xE34 PUSH1 0x20 DUP7 ADD PUSH2 0xD18 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE7E JUMPI PUSH2 0xE7E PUSH2 0xDF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xEA6 JUMPI PUSH2 0xEA6 PUSH2 0xDF1 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xEBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEFF DUP4 PUSH2 0xD18 JUMP JUMPDEST SWAP2 POP PUSH2 0xF0D PUSH1 0x20 DUP5 ADD PUSH2 0xD18 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF2A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xF4A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xFAF DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xC9C JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0xFC3 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xC9C JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1096 SWAP1 DUP4 ADD DUP5 PUSH2 0xCC0 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x642 DUP2 PUSH2 0xC69 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI 0x2B STOP BYTE 0xF7 CALLDATACOPY 0xF9 0xD4 ORIGIN SUB MLOAD PUSH9 0x8C567BAF41BAF8D49 SIGNEXTEND 0xB5 PUSH20 0x90158191AAFEA9C264736F6C6343000811003300 ","sourceMap":"628:16377:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;565:14:29;;558:22;540:41;;528:2;513:18;1570:300:6;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:29;;;1679:51;;1667:2;1652:18;3935:167:6;1533:203:29;3468:406:6;;;;;;:::i;:::-;;:::i;:::-;;4612:296;;;;;;:::i;:::-;;:::i;4974:149::-;;;;;;:::i;:::-;;:::i;2190:219::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:29;;;2836:2;2821:18;1929:204:6;2702:177:29;2633:102:6;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5189:276::-;;;;;;:::i;:::-;;:::i;2801:::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4508:25:6;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;-1:-1:-1;;;;;;1707:40:6;;-1:-1:-1;;;1707:40:6;;:104;;-1:-1:-1;;;;;;;1763:48:6;;-1:-1:-1;;;1763:48:6;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:13;;;1827:36:6;1688:175;1570:300;-1:-1:-1;;1570:300:6:o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:6;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:6;;3935:167::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;-1:-1:-1;;;;;3605:11:6;:2;-1:-1:-1;;;;;3605:11:6;;3597:57;;;;-1:-1:-1;;;3597:57:6;;5363:2:29;3597:57:6;;;5345:21:29;5402:2;5382:18;;;5375:30;5441:34;5421:18;;;5414:62;-1:-1:-1;;;5492:18:29;;;5485:31;5533:19;;3597:57:6;;;;;;;;;719:10:11;-1:-1:-1;;;;;3686:21:6;;;;:62;;-1:-1:-1;3711:37:6;3728:5;719:10:11;4388:162:6;:::i;3711:37::-;3665:170;;;;-1:-1:-1;;;3665:170:6;;5765:2:29;3665:170:6;;;5747:21:29;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;5914:31;5894:18;;;5887:59;5963:19;;3665:170:6;5563:425:29;3665:170:6;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:296::-;4771:41;719:10:11;4804:7:6;4771:18;:41::i;:::-;4763:99;;;;-1:-1:-1;;;4763:99:6;;;;;;;:::i;:::-;4873:28;4883:4;4889:2;4893:7;4873:9;:28::i;4974:149::-;5077:39;5094:4;5100:2;5104:7;5077:39;;;;;;;;;;;;:16;:39::i;2190:219::-;2262:7;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:6;;2324:56;;;;-1:-1:-1;;;2324:56:6;;6609:2:29;2324:56:6;;;6591:21:29;6648:2;6628:18;;;6621:30;-1:-1:-1;;;6667:18:29;;;6660:54;6731:18;;2324:56:6;6407:348:29;1929:204:6;2001:7;-1:-1:-1;;;;;2028:19:6;;2020:73;;;;-1:-1:-1;;;2020:73:6;;6962:2:29;2020:73:6;;;6944:21:29;7001:2;6981:18;;;6974:30;7040:34;7020:18;;;7013:62;-1:-1:-1;;;7091:18:29;;;7084:39;7140:19;;2020:73:6;6760:405:29;2020:73:6;-1:-1:-1;;;;;;2110:16:6;;;;;:9;:16;;;;;;;1929:204::o;2633:102::-;2689:13;2721:7;2714:14;;;;;:::i;4169:153::-;4263:52;719:10:11;4296:8:6;4306;4263:18;:52::i;:::-;4169:153;;:::o;5189:276::-;5319:41;719:10:11;5352:7:6;5319:18;:41::i;:::-;5311:99;;;;-1:-1:-1;;;5311:99:6;;;;;;;:::i;:::-;5420:38;5434:4;5440:2;5444:7;5453:4;5420:13;:38::i;:::-;5189:276;;;;:::o;2801:::-;2874:13;2899:23;2914:7;2899:14;:23::i;:::-;2933:21;2957:10;3395:9;;;;;;;;;-1:-1:-1;3395:9:6;;;3319:92;2957:10;2933:34;;3008:1;2990:7;2984:21;:25;:86;;;;;;;;;;;;;;;;;3036:7;3045:18;:7;:16;:18::i;:::-;3019:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2984:86;2977:93;2801:276;-1:-1:-1;;;2801:276:6:o;13240:133::-;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:6;13313:53;;;;-1:-1:-1;;;13313:53:6;;6609:2:29;13313:53:6;;;6591:21:29;6648:2;6628:18;;;6621:30;-1:-1:-1;;;6667:18:29;;;6660:54;6731:18;;13313:53:6;6407:348:29;13313:53:6;13240:133;:::o;12572:171::-;12646:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;12646:29:6;-1:-1:-1;;;;;12646:29:6;;;;;;;;:24;;12699:23;12646:24;12699:14;:23::i;:::-;-1:-1:-1;;;;;12690:46:6;;;;;;;;;;;12572:171;;:::o;7404:261::-;7497:4;7513:13;7529:23;7544:7;7529:14;:23::i;:::-;7513:39;;7581:5;-1:-1:-1;;;;;7570:16:6;:7;-1:-1:-1;;;;;7570:16:6;;:52;;;-1:-1:-1;;;;;;4508:25:6;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7590:32;7570:87;;;;7650:7;-1:-1:-1;;;;;7626:31:6;:20;7638:7;7626:11;:20::i;:::-;-1:-1:-1;;;;;7626:31:6;;7570:87;7562:96;7404:261;-1:-1:-1;;;;7404:261:6:o;11257:1203::-;11381:4;-1:-1:-1;;;;;11354:31:6;:23;11369:7;11354:14;:23::i;:::-;-1:-1:-1;;;;;11354:31:6;;11346:81;;;;-1:-1:-1;;;11346:81:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;11445:16:6;;11437:65;;;;-1:-1:-1;;;11437:65:6;;8279:2:29;11437:65:6;;;8261:21:29;8318:2;8298:18;;;8291:30;8357:34;8337:18;;;8330:62;-1:-1:-1;;;8408:18:29;;;8401:34;8452:19;;11437:65:6;8077:400:29;11437:65:6;11682:4;-1:-1:-1;;;;;11655:31:6;:23;11670:7;11655:14;:23::i;:::-;-1:-1:-1;;;;;11655:31:6;;11647:81;;;;-1:-1:-1;;;11647:81:6;;;;;;;:::i;:::-;11797:24;;;;:15;:24;;;;;;;;11790:31;;-1:-1:-1;;;;;;11790:31:6;;;;;;-1:-1:-1;;;;;12265:15:6;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12265:20:6;;;12299:13;;;;;;;;;:18;;11790:31;12299:18;;;12337:16;;;:7;:16;;;;;;:21;;;;;;;;;;12374:27;;11813:7;;12374:27;;;3538:336;3468:406;;:::o;12879:277::-;12999:8;-1:-1:-1;;;;;12990:17:6;:5;-1:-1:-1;;;;;12990:17:6;;12982:55;;;;-1:-1:-1;;;12982:55:6;;8684:2:29;12982:55:6;;;8666:21:29;8723:2;8703:18;;;8696:30;8762:27;8742:18;;;8735:55;8807:18;;12982:55:6;8482:349:29;12982:55:6;-1:-1:-1;;;;;13047:25:6;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13047:46:6;;;;;;;;;;13108:41;;540::29;;;13108::6;;513:18:29;13108:41:6;;;;;;;12879:277;;;:::o;6326:267::-;6438:28;6448:4;6454:2;6458:7;6438:9;:28::i;:::-;6484:47;6507:4;6513:2;6517:7;6526:4;6484:22;:47::i;:::-;6476:110;;;;-1:-1:-1;;;6476:110:6;;;;;;;:::i;447:696:12:-;503:13;552:14;569:17;580:5;569:10;:17::i;:::-;589:1;569:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;627:18:12;-1:-1:-1;604:41:12;-1:-1:-1;765:28:12;;;781:2;765:28;820:280;-1:-1:-1;;851:5:12;-1:-1:-1;;;985:2:12;974:14;;969:30;851:5;956:44;1044:2;1035:11;;;-1:-1:-1;1064:21:12;820:280;1064:21;-1:-1:-1;1120:6:12;447:696;-1:-1:-1;;;447:696:12:o;13925:831:6:-;14074:4;-1:-1:-1;;;;;14094:13:6;;1702:19:10;:23;14090:660:6;;14129:71;;-1:-1:-1;;;14129:71:6;;-1:-1:-1;;;;;14129:36:6;;;;;:71;;719:10:11;;14180:4:6;;14186:7;;14195:4;;14129:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14129:71:6;;;;;;;;-1:-1:-1;;14129:71:6;;;;;;;;;;;;:::i;:::-;;;14125:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14367:6;:13;14384:1;14367:18;14363:321;;14409:60;;-1:-1:-1;;;14409:60:6;;;;;;;:::i;14363:321::-;14636:6;14630:13;14621:6;14617:2;14613:15;14606:38;14125:573;-1:-1:-1;;;;;;14250:51:6;-1:-1:-1;;;14250:51:6;;-1:-1:-1;14243:58:6;;14090:660;-1:-1:-1;14735:4:6;13925:831;;;;;;:::o;10139:916:15:-;10192:7;;-1:-1:-1;;;10267:17:15;;10263:103;;-1:-1:-1;;;10304:17:15;;;-1:-1:-1;10349:2:15;10339:12;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;-1:-1:-1;10465:2:15;10455:12;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;-1:-1:-1;10581:2:15;10571:12;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;-1:-1:-1;10695:1:15;10685:11;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;-1:-1:-1;10808:1:15;10798:11;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;-1:-1:-1;10921:1:15;10911:11;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;11042:6;10139:916;-1:-1:-1;;10139:916:15:o;14:131:29:-;-1:-1:-1;;;;;;88:32:29;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:29;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:29;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:29:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:29;;1348:180;-1:-1:-1;1348:180:29:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:29;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:29:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:29;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;5993:409::-;6195:2;6177:21;;;6234:2;6214:18;;;6207:30;6273:34;6268:2;6253:18;;6246:62;-1:-1:-1;;;6339:2:29;6324:18;;6317:43;6392:3;6377:19;;5993:409::o;7170:496::-;7349:3;7387:6;7381:13;7403:66;7462:6;7457:3;7450:4;7442:6;7438:17;7403:66;:::i;:::-;7532:13;;7491:16;;;;7554:70;7532:13;7491:16;7601:4;7589:17;;7554:70;:::i;:::-;7640:20;;7170:496;-1:-1:-1;;;;7170:496:29:o;7671:401::-;7873:2;7855:21;;;7912:2;7892:18;;;7885:30;7951:34;7946:2;7931:18;;7924:62;-1:-1:-1;;;8017:2:29;8002:18;;7995:35;8062:3;8047:19;;7671:401::o;8836:414::-;9038:2;9020:21;;;9077:2;9057:18;;;9050:30;9116:34;9111:2;9096:18;;9089:62;-1:-1:-1;;;9182:2:29;9167:18;;9160:48;9240:3;9225:19;;8836:414::o;9387:489::-;-1:-1:-1;;;;;9656:15:29;;;9638:34;;9708:15;;9703:2;9688:18;;9681:43;9755:2;9740:18;;9733:34;;;9803:3;9798:2;9783:18;;9776:31;;;9581:4;;9824:46;;9850:19;;9842:6;9824:46;:::i;:::-;9816:54;9387:489;-1:-1:-1;;;;;;9387:489:29:o;9881:249::-;9950:6;10003:2;9991:9;9982:7;9978:23;9974:32;9971:52;;;10019:1;10016;10009:12;9971:52;10051:9;10045:16;10070:30;10094:5;10070:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"867800","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2634","getApproved(uint256)":"4769","isApprovedForAll(address,address)":"infinite","name()":"infinite","ownerOf(uint256)":"2561","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26705","supportsInterface(bytes4)":"511","symbol()":"infinite","tokenURI(uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"},"internal":{"__unsafe_increaseBalance(address,uint256)":"infinite","_afterTokenTransfer(address,address,uint256,uint256)":"infinite","_approve(address,uint256)":"infinite","_baseURI()":"infinite","_beforeTokenTransfer(address,address,uint256,uint256)":"infinite","_burn(uint256)":"infinite","_checkOnERC721Received(address,address,uint256,bytes memory)":"infinite","_exists(uint256)":"infinite","_isApprovedOrOwner(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_ownerOf(uint256)":"infinite","_requireMinted(uint256)":"infinite","_safeMint(address,uint256)":"infinite","_safeMint(address,uint256,bytes memory)":"infinite","_safeTransfer(address,address,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n}\\n\",\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":883,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":885,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":889,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":893,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":897,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":903,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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.17+commit.8df45f5f\"},\"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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\":\"london\",\"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 v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC721 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":"ERC721 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.17+commit.8df45f5f\"},\"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 ERC721 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\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"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 v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"See https://eips.ethereum.org/EIPS/eip-721","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}"},"name()":{"details":"Returns the token collection name."},"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"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 ERC721 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."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","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","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"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}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"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 ERC721 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.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"london\",\"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 v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2f66f9f178ece4a6dd98f884b5a0716b0971dd5e11c4840c20ebf4ae264a08a64736f6c63430008110033","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 0xC2 0xF6 PUSH16 0x9F178ECE4A6DD98F884B5A0716B0971D 0xD5 0xE1 SHR BASEFEE BLOCKHASH 0xC2 0xE 0xBF 0x4A 0xE2 PUSH5 0xA08A64736F PUSH13 0x63430008110033000000000000 ","sourceMap":"194:9169:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9169:10;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c2f66f9f178ece4a6dd98f884b5a0716b0971dd5e11c4840c20ebf4ae264a08a64736f6c63430008110033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 0xF6 PUSH16 0x9F178ECE4A6DD98F884B5A0716B0971D 0xD5 0xE1 SHR BASEFEE BLOCKHASH 0xC2 0xE 0xBF 0x4A 0xE2 PUSH5 0xA08A64736F PUSH13 0x63430008110033000000000000 ","sourceMap":"194:9169:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207228005f573e7589cb774d97bd31101840930508a97597061bccc052adec739964736f6c63430008110033","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 PUSH19 0x28005F573E7589CB774D97BD31101840930508 0xA9 PUSH22 0x97061BCCC052ADEC739964736F6C6343000811003300 ","sourceMap":"220:2559:12:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;220:2559:12;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207228005f573e7589cb774d97bd31101840930508a97597061bccc052adec739964736f6c63430008110033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x28005F573E7589CB774D97BD31101840930508 0xA9 PUSH22 0x97061BCCC052ADEC739964736F6C6343000811003300 ","sourceMap":"220:2559:12:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"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.17+commit.8df45f5f\"},\"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\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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.17+commit.8df45f5f\"},\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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\":\"london\",\"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 v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201de9e51b61992d4bc0178d54aa4499e531ca713ec14b54fe65ee03323d4b33a064736f6c63430008110033","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 SAR 0xE9 0xE5 SHL PUSH2 0x992D 0x4B 0xC0 OR DUP14 SLOAD 0xAA DIFFICULTY SWAP10 0xE5 BALANCE 0xCA PUSH18 0x3EC14B54FE65EE03323D4B33A064736F6C63 NUMBER STOP ADDMOD GT STOP CALLER ","sourceMap":"202:12582:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;202:12582:15;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201de9e51b61992d4bc0178d54aa4499e531ca713ec14b54fe65ee03323d4b33a064736f6c63430008110033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SAR 0xE9 0xE5 SHL PUSH2 0x992D 0x4B 0xC0 OR DUP14 SLOAD 0xAA DIFFICULTY SWAP10 0xE5 BALANCE 0xCA PUSH18 0x3EC14B54FE65EE03323D4B33A064736F6C63 NUMBER STOP ADDMOD GT STOP CALLER ","sourceMap":"202:12582:15:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum Math.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum Math.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum Math.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum Math.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum Math.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208d3d0f2f473dd5525584eea797d24f2cc2a25b02da4b2a4e93effba473dba0d064736f6c63430008110033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 RETURNDATASIZE 0xF 0x2F SELFBALANCE RETURNDATASIZE 0xD5 MSTORE SSTORE DUP5 0xEE 0xA7 SWAP8 0xD2 0x4F 0x2C 0xC2 LOG2 JUMPDEST MUL 0xDA 0x4B 0x2A 0x4E SWAP4 0xEF 0xFB LOG4 PUSH20 0xDBA0D064736F6C63430008110033000000000000 ","sourceMap":"215:1047:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;215:1047:16;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208d3d0f2f473dd5525584eea797d24f2cc2a25b02da4b2a4e93effba473dba0d064736f6c63430008110033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 RETURNDATASIZE 0xF 0x2F SELFBALANCE RETURNDATASIZE 0xD5 MSTORE SSTORE DUP5 0xEE 0xA7 SWAP8 0xD2 0x4F 0x2C 0xC2 LOG2 JUMPDEST MUL 0xDA 0x4B 0x2A 0x4E SWAP4 0xEF 0xFB LOG4 PUSH20 0xDBA0D064736F6C63430008110033000000000000 ","sourceMap":"215:1047:16:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/Account.sol":{"Account":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccountLocked","type":"error"},{"inputs":[],"name":"ExceedsMaxLockTime","type":"error"},{"inputs":[],"name":"InvalidInput","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"OwnershipCycle","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockedUntil","type":"uint256"}],"name":"LockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"OverrideUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"hasPermission","type":"bool"}],"name":"PermissionUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"TransactionExecuted","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockedUntil","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"receivedTokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"parseFirst4Bytes","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"permissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"callers","type":"address[]"},{"internalType":"bool[]","name":"_permissions","type":"bool[]"}],"name":"setPermissions","outputs":[],"stateMutability":"nonpayable","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":{"kind":"dev","methods":{"executeCall(address,uint256,bytes)":{"details":"executes a low-level call against an account if the caller is authorized to make calls"},"isAuthorized(address)":{"details":"Returns the authorization status for a given caller"},"isLocked()":{"details":"returns the current lock status of the account as a boolean"},"lock(uint256)":{"details":"locks the account until a certain timestamp"},"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Allows ERC-1155 token batches to be received. This function can be overriden."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Allows ERC-1155 tokens to be received. This function can be overriden."},"onERC721Received(address,address,uint256,bytes)":{"details":"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden."},"owner()":{"details":"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account."},"setPermissions(address[],bool[])":{"details":"grants a given caller execution permissions"},"supportsInterface(bytes4)":{"details":"Returns true if a given interfaceId is supported by this account. This method can be extended by an override."},"token()":{"details":"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account."}},"stateVariables":{"lockedUntil":{"details":"timestamp at which this account will be unlocked"},"permissions":{"details":"mapping from owner => caller => has permissions"}},"title":"A smart contract account owned by a single ERC721 token","version":1},"evm":{"bytecode":{"functionDebugData":{"@_3636":{"entryPoint":null,"id":3636,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061112a806100206000396000f3fe6080604052600436106100e15760003560e01c8063bc197c811161007f578063dd46706411610059578063dd4670641461028c578063f23a6e61146102ac578063fc0c546a146102d8578063fe9fbb801461031057600080fd5b8063bc197c811461021c578063ce0617ec14610248578063d0ad25351461026c57600080fd5b80631f9838b5116100bb5780631f9838b51461017d5780638da5cb5b146101b85780639e5d4c49146101e5578063a4e2d6341461020557600080fd5b806301ffc9a7146100ed578063039721b114610122578063150b7a021461014457600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b5061010d610108366004610a4a565b610330565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004610ac7565b610397565b005b34801561015057600080fd5b5061016461015f366004610c02565b610560565b6040516001600160e01b03199091168152602001610119565b34801561018957600080fd5b5061010d610198366004610c6e565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101c457600080fd5b506101cd6105c8565b6040516001600160a01b039091168152602001610119565b6101f86101f3366004610ce9565b61065e565b6040516101199190610d39565b34801561021157600080fd5b50600054421061010d565b34801561022857600080fd5b50610164610237366004610dfc565b63bc197c8160e01b95945050505050565b34801561025457600080fd5b5061025e60005481565b604051908152602001610119565b34801561027857600080fd5b50610164610287366004610eaa565b610759565b34801561029857600080fd5b506101426102a7366004610eec565b61077a565b3480156102b857600080fd5b506101646102c7366004610f05565b63f23a6e6160e01b95945050505050565b3480156102e457600080fd5b506102ed61083f565b604080519384526001600160a01b03909216602084015290820152606001610119565b34801561031c57600080fd5b5061010d61032b366004610f6e565b610857565b6000806001600160e01b031983166301ffc9a760e01b148061036257506001600160e01b03198316630271189760e51b145b8061037d57506001600160e01b03198316631dfe9a6f60e31b145b9050801561038e5750600192915050565b50600092915050565b6000544210156103ba57604051636315bfbb60e01b815260040160405180910390fd5b60006103c46105c8565b9050336001600160a01b038216146103ef5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104105760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156105575784848281811061042d5761042d610f8b565b90506020020160208101906104429190610fa1565b6001600160a01b03841660009081526001602052604081209089898581811061046d5761046d610f8b565b90506020020160208101906104829190610f6e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106104de576104de610f8b565b90506020020160208101906104f39190610f6e565b87878581811061050557610505610f8b565b905060200201602081019061051a9190610fa1565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a18061054f81610fd9565b915050610413565b50505050505050565b60008060008061056e610940565b925092509250468314801561058b57506001600160a01b03821633145b801561059657508581145b156105b45760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806105d6610940565b9250925092504683146105ed576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106569190610ff2565b935050505090565b606061066933610857565b6106865760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156106a957604051636315bfbb60e01b815260040160405180910390fd5b82826106b58282610993565b6106fe5760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b85876001600160a01b03167f47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d2878760405161073a92919061100f565b60405180910390a361074e878787876109ce565b979650505050505050565b6000610768600482848661103e565b61077191611068565b90505b92915050565b6107826105c8565b6001600160a01b0316336001600160a01b0316146107b35760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156107d657604051636315bfbb60e01b815260040160405180910390fd5b6107e4426301e13380611098565b811115610804576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b600080600061084c610940565b925092509250909192565b6000806000610864610940565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190610ff2565b9050806001600160a01b0316856001600160a01b0316036108fc57506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff161561093557506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c8080602001905181019061098791906110ab565b93509350935050909192565b6000806109a08484610759565b90506001600160e01b0319811663095ea7b360e01b036109c4576000915050610774565b5060019392505050565b60606000856001600160a01b03168585856040516109ed9291906110e4565b60006040518083038185875af1925050503d8060008114610a2a576040519150601f19603f3d011682016040523d82523d6000602084013e610a2f565b606091505b509250905080610a4157815160208301fd5b50949350505050565b600060208284031215610a5c57600080fd5b81356001600160e01b031981168114610a7457600080fd5b9392505050565b60008083601f840112610a8d57600080fd5b50813567ffffffffffffffff811115610aa557600080fd5b6020830191508360208260051b8501011115610ac057600080fd5b9250929050565b60008060008060408587031215610add57600080fd5b843567ffffffffffffffff80821115610af557600080fd5b610b0188838901610a7b565b90965094506020870135915080821115610b1a57600080fd5b50610b2787828801610a7b565b95989497509550505050565b6001600160a01b0381168114610b4857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b8a57610b8a610b4b565b604052919050565b600082601f830112610ba357600080fd5b813567ffffffffffffffff811115610bbd57610bbd610b4b565b610bd0601f8201601f1916602001610b61565b818152846020838601011115610be557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610c1857600080fd5b8435610c2381610b33565b93506020850135610c3381610b33565b925060408501359150606085013567ffffffffffffffff811115610c5657600080fd5b610c6287828801610b92565b91505092959194509250565b60008060408385031215610c8157600080fd5b8235610c8c81610b33565b91506020830135610c9c81610b33565b809150509250929050565b60008083601f840112610cb957600080fd5b50813567ffffffffffffffff811115610cd157600080fd5b602083019150836020828501011115610ac057600080fd5b60008060008060608587031215610cff57600080fd5b8435610d0a81610b33565b935060208501359250604085013567ffffffffffffffff811115610d2d57600080fd5b610b2787828801610ca7565b600060208083528351808285015260005b81811015610d6657858101830151858201604001528201610d4a565b506000604082860101526040601f19601f8301168501019250505092915050565b600082601f830112610d9857600080fd5b8135602067ffffffffffffffff821115610db457610db4610b4b565b8160051b610dc3828201610b61565b9283528481018201928281019087851115610ddd57600080fd5b83870192505b8483101561074e57823582529183019190830190610de3565b600080600080600060a08688031215610e1457600080fd5b8535610e1f81610b33565b94506020860135610e2f81610b33565b9350604086013567ffffffffffffffff80821115610e4c57600080fd5b610e5889838a01610d87565b94506060880135915080821115610e6e57600080fd5b610e7a89838a01610d87565b93506080880135915080821115610e9057600080fd5b50610e9d88828901610b92565b9150509295509295909350565b60008060208385031215610ebd57600080fd5b823567ffffffffffffffff811115610ed457600080fd5b610ee085828601610ca7565b90969095509350505050565b600060208284031215610efe57600080fd5b5035919050565b600080600080600060a08688031215610f1d57600080fd5b8535610f2881610b33565b94506020860135610f3881610b33565b93506040860135925060608601359150608086013567ffffffffffffffff811115610f6257600080fd5b610e9d88828901610b92565b600060208284031215610f8057600080fd5b8135610a7481610b33565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610fb357600080fd5b81358015158114610a7457600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610feb57610feb610fc3565b5060010190565b60006020828403121561100457600080fd5b8151610a7481610b33565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000808585111561104e57600080fd5b8386111561105b57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156110905780818660040360031b1b83161692505b505092915050565b8082018082111561077457610774610fc3565b6000806000606084860312156110c057600080fd5b8351925060208401516110d281610b33565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220eb423394a29a0abcff8a03bc98ea584b29ef60c7e1a560777f769e6a618feb1564736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x112A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE1 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBC197C81 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xDD467064 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xFE9FBB80 EQ PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1F9838B5 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x9E5D4C49 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xE8 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x330 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 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0xAC7 JUMP JUMPDEST PUSH2 0x397 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xC02 JUMP JUMPDEST PUSH2 0x560 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xC6E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x1F8 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0xCE9 JUMP JUMPDEST PUSH2 0x65E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xD39 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x10D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x237 CALLDATASIZE PUSH1 0x4 PUSH2 0xDFC JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25E PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0xEAA JUMP JUMPDEST PUSH2 0x759 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x77A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xF05 JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2ED PUSH2 0x83F JUMP JUMPDEST 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 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0xF6E JUMP JUMPDEST PUSH2 0x857 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x362 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x37D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1DFE9A6F PUSH1 0xE3 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x38E JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x3BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C4 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x3EF JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x410 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x557 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x42D JUMPI PUSH2 0x42D PUSH2 0xF8B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x442 SWAP2 SWAP1 PUSH2 0xFA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x46D JUMPI PUSH2 0x46D PUSH2 0xF8B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x482 SWAP2 SWAP1 PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x4DE JUMPI PUSH2 0x4DE PUSH2 0xF8B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4F3 SWAP2 SWAP1 PUSH2 0xF6E JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x505 JUMPI PUSH2 0x505 PUSH2 0xF8B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x51A SWAP2 SWAP1 PUSH2 0xFA1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x54F DUP2 PUSH2 0xFD9 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x413 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x56E PUSH2 0x940 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x58B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x596 JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x5D6 PUSH2 0x940 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x5ED JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x632 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 0x656 SWAP2 SWAP1 PUSH2 0xFF2 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x669 CALLER PUSH2 0x857 JUMP JUMPDEST PUSH2 0x686 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 PUSH2 0x6B5 DUP3 DUP3 PUSH2 0x993 JUMP JUMPDEST PUSH2 0x6FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x47D99AD340F52DA66535AFF7E10DA1CEB85A32BCBD9FA1C42314D194545E14D2 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x73A SWAP3 SWAP2 SWAP1 PUSH2 0x100F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x74E DUP8 DUP8 DUP8 DUP8 PUSH2 0x9CE JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x768 PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x103E JUMP JUMPDEST PUSH2 0x771 SWAP2 PUSH2 0x1068 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x782 PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7B3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E4 TIMESTAMP PUSH4 0x1E13380 PUSH2 0x1098 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x804 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x84C PUSH2 0x940 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x864 PUSH2 0x940 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0x8B2 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 0x8D6 SWAP2 SWAP1 PUSH2 0xFF2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x8FC JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x935 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x987 SWAP2 SWAP1 PUSH2 0x10AB JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9A0 DUP5 DUP5 PUSH2 0x759 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0x9C4 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9ED SWAP3 SWAP2 SWAP1 PUSH2 0x10E4 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 0xA2A 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 0xA2F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0xA41 JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xA74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xA8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xADD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xAF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB01 DUP9 DUP4 DUP10 ADD PUSH2 0xA7B JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xB1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB27 DUP8 DUP3 DUP9 ADD PUSH2 0xA7B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB8A JUMPI PUSH2 0xB8A PUSH2 0xB4B JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBD JUMPI PUSH2 0xBBD PUSH2 0xB4B JUMP JUMPDEST PUSH2 0xBD0 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xB61 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xBE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xC23 DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xC33 DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC62 DUP8 DUP3 DUP9 ADD PUSH2 0xB92 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xC8C DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xC9C DUP2 PUSH2 0xB33 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xD0A DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB27 DUP8 DUP3 DUP9 ADD PUSH2 0xCA7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD66 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xD4A JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xDB4 JUMPI PUSH2 0xDB4 PUSH2 0xB4B JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0xDC3 DUP3 DUP3 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0xDDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x74E JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0xDE3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xE14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xE1F DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xE2F DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE58 DUP10 DUP4 DUP11 ADD PUSH2 0xD87 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7A DUP10 DUP4 DUP11 ADD PUSH2 0xD87 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9D DUP9 DUP3 DUP10 ADD PUSH2 0xB92 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xED4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE0 DUP6 DUP3 DUP7 ADD PUSH2 0xCA7 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xF1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xF28 DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xF38 DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE9D DUP9 DUP3 DUP10 ADD PUSH2 0xB92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA74 DUP2 PUSH2 0xB33 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xA74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0xFEB JUMPI PUSH2 0xFEB PUSH2 0xFC3 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1004 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA74 DUP2 PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE DUP2 PUSH1 0x20 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x40 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x104E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x105B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x1090 JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x774 JUMPI PUSH2 0x774 PUSH2 0xFC3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x10C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x10D2 DUP2 PUSH2 0xB33 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB TIMESTAMP CALLER SWAP5 LOG2 SWAP11 EXP 0xBC SELFDESTRUCT DUP11 SUB 0xBC SWAP9 0xEA PC 0x4B 0x29 0xEF PUSH1 0xC7 0xE1 0xA5 PUSH1 0x77 PUSH32 0x769E6A618FEB1564736F6C634300081100330000000000000000000000000000 ","sourceMap":"695:7219:17:-:0;;;1772:16;;;;;;;;;;695:7219;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_3641":{"entryPoint":null,"id":3641,"parameterSlots":0,"returnSlots":0},"@_call_4042":{"entryPoint":2510,"id":4042,"parameterSlots":4,"returnSlots":1},"@allowedMethod_4093":{"entryPoint":2451,"id":4093,"parameterSlots":2,"returnSlots":1},"@executeCall_3673":{"entryPoint":1630,"id":3673,"parameterSlots":4,"returnSlots":1},"@isAuthorized_3878":{"entryPoint":2135,"id":3878,"parameterSlots":1,"returnSlots":1},"@isLocked_3787":{"entryPoint":null,"id":3787,"parameterSlots":0,"returnSlots":1},"@lock_3775":{"entryPoint":1914,"id":3775,"parameterSlots":1,"returnSlots":0},"@lockedUntil_3566":{"entryPoint":null,"id":3566,"parameterSlots":0,"returnSlots":0},"@onERC1155BatchReceived_4010":{"entryPoint":null,"id":4010,"parameterSlots":5,"returnSlots":1},"@onERC1155Received_3986":{"entryPoint":null,"id":3986,"parameterSlots":5,"returnSlots":1},"@onERC721Received_3964":{"entryPoint":1376,"id":3964,"parameterSlots":4,"returnSlots":1},"@owner_3836":{"entryPoint":1480,"id":3836,"parameterSlots":0,"returnSlots":1},"@parseFirst4Bytes_4108":{"entryPoint":1881,"id":4108,"parameterSlots":2,"returnSlots":1},"@permissions_3573":{"entryPoint":null,"id":3573,"parameterSlots":0,"returnSlots":0},"@setPermissions_3746":{"entryPoint":919,"id":3746,"parameterSlots":4,"returnSlots":0},"@supportsInterface_3917":{"entryPoint":816,"id":3917,"parameterSlots":1,"returnSlots":1},"@token_3802":{"entryPoint":2111,"id":3802,"parameterSlots":0,"returnSlots":3},"@token_4633":{"entryPoint":2368,"id":4633,"parameterSlots":0,"returnSlots":3},"abi_decode_array_address_dyn_calldata":{"entryPoint":2683,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":3463,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":2962,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3239,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3950,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4082,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3182,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr":{"entryPoint":3580,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":3074,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr":{"entryPoint":3845,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr":{"entryPoint":3305,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr":{"entryPoint":2759,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":4001,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":2634,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":3754,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":3820,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory":{"entryPoint":4267,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4324,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4111,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":3385,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__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},"allocate_memory":{"entryPoint":2913,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":4158,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":4248,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":4200,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":4057,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":4035,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3979,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2891,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":2867,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:13165:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:29","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:29"},"nodeType":"YulFunctionCall","src":"131:12:29"},"nodeType":"YulExpressionStatement","src":"131:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:29"},"nodeType":"YulFunctionCall","src":"100:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:29"},"nodeType":"YulFunctionCall","src":"96:32:29"},"nodeType":"YulIf","src":"93:52:29"},{"nodeType":"YulVariableDeclaration","src":"154:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:29"},"nodeType":"YulFunctionCall","src":"167:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:29"},"nodeType":"YulFunctionCall","src":"256:12:29"},"nodeType":"YulExpressionStatement","src":"256:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:29","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:29"},"nodeType":"YulFunctionCall","src":"230:20:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:29"},"nodeType":"YulFunctionCall","src":"219:32:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:29"},"nodeType":"YulFunctionCall","src":"209:43:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:29"},"nodeType":"YulFunctionCall","src":"202:51:29"},"nodeType":"YulIf","src":"199:71:29"},{"nodeType":"YulAssignment","src":"279:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:29"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:29","type":""}],"src":"14:286:29"},{"body":{"nodeType":"YulBlock","src":"400:92:29","statements":[{"nodeType":"YulAssignment","src":"410:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:29"},"nodeType":"YulFunctionCall","src":"418:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:29"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:29"},"nodeType":"YulFunctionCall","src":"470:14:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:29"},"nodeType":"YulFunctionCall","src":"463:22:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:29"},"nodeType":"YulFunctionCall","src":"445:41:29"},"nodeType":"YulExpressionStatement","src":"445:41:29"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:29","type":""}],"src":"305:187:29"},{"body":{"nodeType":"YulBlock","src":"581:283:29","statements":[{"body":{"nodeType":"YulBlock","src":"630:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"639:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"642:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"632:6:29"},"nodeType":"YulFunctionCall","src":"632:12:29"},"nodeType":"YulExpressionStatement","src":"632:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"609:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"617:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"605:3:29"},"nodeType":"YulFunctionCall","src":"605:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"624:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"601:3:29"},"nodeType":"YulFunctionCall","src":"601:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"594:6:29"},"nodeType":"YulFunctionCall","src":"594:35:29"},"nodeType":"YulIf","src":"591:55:29"},{"nodeType":"YulAssignment","src":"655:30:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"678:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"665:12:29"},"nodeType":"YulFunctionCall","src":"665:20:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"655:6:29"}]},{"body":{"nodeType":"YulBlock","src":"728:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"737:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"740:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"730:6:29"},"nodeType":"YulFunctionCall","src":"730:12:29"},"nodeType":"YulExpressionStatement","src":"730:12:29"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"700:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"708:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"697:2:29"},"nodeType":"YulFunctionCall","src":"697:30:29"},"nodeType":"YulIf","src":"694:50:29"},{"nodeType":"YulAssignment","src":"753:29:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"769:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"777:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:29"},"nodeType":"YulFunctionCall","src":"765:17:29"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"753:8:29"}]},{"body":{"nodeType":"YulBlock","src":"842:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"851:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"854:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"844:6:29"},"nodeType":"YulFunctionCall","src":"844:12:29"},"nodeType":"YulExpressionStatement","src":"844:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"805:6:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"817:1:29","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"820:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"813:3:29"},"nodeType":"YulFunctionCall","src":"813:14:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"801:3:29"},"nodeType":"YulFunctionCall","src":"801:27:29"},{"kind":"number","nodeType":"YulLiteral","src":"830:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"797:3:29"},"nodeType":"YulFunctionCall","src":"797:38:29"},{"name":"end","nodeType":"YulIdentifier","src":"837:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"794:2:29"},"nodeType":"YulFunctionCall","src":"794:47:29"},"nodeType":"YulIf","src":"791:67:29"}]},"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"544:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"552:3:29","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"560:8:29","type":""},{"name":"length","nodeType":"YulTypedName","src":"570:6:29","type":""}],"src":"497:367:29"},{"body":{"nodeType":"YulBlock","src":"1023:616:29","statements":[{"body":{"nodeType":"YulBlock","src":"1069:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1078:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1081:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1071:6:29"},"nodeType":"YulFunctionCall","src":"1071:12:29"},"nodeType":"YulExpressionStatement","src":"1071:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1044:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1053:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1040:3:29"},"nodeType":"YulFunctionCall","src":"1040:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1065:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1036:3:29"},"nodeType":"YulFunctionCall","src":"1036:32:29"},"nodeType":"YulIf","src":"1033:52:29"},{"nodeType":"YulVariableDeclaration","src":"1094:37:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1108:12:29"},"nodeType":"YulFunctionCall","src":"1108:23:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1098:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1140:28:29","value":{"kind":"number","nodeType":"YulLiteral","src":"1150:18:29","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1144:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1195:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1204:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1207:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1197:6:29"},"nodeType":"YulFunctionCall","src":"1197:12:29"},"nodeType":"YulExpressionStatement","src":"1197:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1183:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1191:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1180:2:29"},"nodeType":"YulFunctionCall","src":"1180:14:29"},"nodeType":"YulIf","src":"1177:34:29"},{"nodeType":"YulVariableDeclaration","src":"1220:96:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1288:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"1299:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1284:3:29"},"nodeType":"YulFunctionCall","src":"1284:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1308:7:29"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1246:37:29"},"nodeType":"YulFunctionCall","src":"1246:70:29"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"1224:8:29","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"1234:8:29","type":""}]},{"nodeType":"YulAssignment","src":"1325:18:29","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"1335:8:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1325:6:29"}]},{"nodeType":"YulAssignment","src":"1352:18:29","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1362:8:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1352:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1379:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1412:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1423:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1408:3:29"},"nodeType":"YulFunctionCall","src":"1408:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1395:12:29"},"nodeType":"YulFunctionCall","src":"1395:32:29"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1456:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1465:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1468:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1458:6:29"},"nodeType":"YulFunctionCall","src":"1458:12:29"},"nodeType":"YulExpressionStatement","src":"1458:12:29"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1442:8:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1452:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1439:2:29"},"nodeType":"YulFunctionCall","src":"1439:16:29"},"nodeType":"YulIf","src":"1436:36:29"},{"nodeType":"YulVariableDeclaration","src":"1481:98:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1549:9:29"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1560:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1545:3:29"},"nodeType":"YulFunctionCall","src":"1545:24:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1571:7:29"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1507:37:29"},"nodeType":"YulFunctionCall","src":"1507:72:29"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"1485:8:29","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"1495:8:29","type":""}]},{"nodeType":"YulAssignment","src":"1588:18:29","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1598:8:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1588:6:29"}]},{"nodeType":"YulAssignment","src":"1615:18:29","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1625:8:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1615:6:29"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"965:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"976:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"988:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"996:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1004:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1012:6:29","type":""}],"src":"869:770:29"},{"body":{"nodeType":"YulBlock","src":"1689:86:29","statements":[{"body":{"nodeType":"YulBlock","src":"1753:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1762:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1765:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1755:6:29"},"nodeType":"YulFunctionCall","src":"1755:12:29"},"nodeType":"YulExpressionStatement","src":"1755:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1712:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1723:5:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1738:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1743:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1734:3:29"},"nodeType":"YulFunctionCall","src":"1734:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"1747:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1730:3:29"},"nodeType":"YulFunctionCall","src":"1730:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1719:3:29"},"nodeType":"YulFunctionCall","src":"1719:31:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1709:2:29"},"nodeType":"YulFunctionCall","src":"1709:42:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1702:6:29"},"nodeType":"YulFunctionCall","src":"1702:50:29"},"nodeType":"YulIf","src":"1699:70:29"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1678:5:29","type":""}],"src":"1644:131:29"},{"body":{"nodeType":"YulBlock","src":"1812:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1829:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1836:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1841:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1832:3:29"},"nodeType":"YulFunctionCall","src":"1832:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1822:6:29"},"nodeType":"YulFunctionCall","src":"1822:31:29"},"nodeType":"YulExpressionStatement","src":"1822:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1869:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1872:4:29","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1862:6:29"},"nodeType":"YulFunctionCall","src":"1862:15:29"},"nodeType":"YulExpressionStatement","src":"1862:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1893:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1896:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1886:6:29"},"nodeType":"YulFunctionCall","src":"1886:15:29"},"nodeType":"YulExpressionStatement","src":"1886:15:29"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1780:127:29"},{"body":{"nodeType":"YulBlock","src":"1957:230:29","statements":[{"nodeType":"YulAssignment","src":"1967:19:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1983:2:29","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1977:5:29"},"nodeType":"YulFunctionCall","src":"1977:9:29"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1967:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1995:58:29","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2017:6:29"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2033:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"2039:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2029:3:29"},"nodeType":"YulFunctionCall","src":"2029:13:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2048:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2044:3:29"},"nodeType":"YulFunctionCall","src":"2044:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2025:3:29"},"nodeType":"YulFunctionCall","src":"2025:27:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2013:3:29"},"nodeType":"YulFunctionCall","src":"2013:40:29"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1999:10:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2128:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2130:16:29"},"nodeType":"YulFunctionCall","src":"2130:18:29"},"nodeType":"YulExpressionStatement","src":"2130:18:29"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2071:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2083:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2068:2:29"},"nodeType":"YulFunctionCall","src":"2068:34:29"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2107:10:29"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2119:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2104:2:29"},"nodeType":"YulFunctionCall","src":"2104:22:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2065:2:29"},"nodeType":"YulFunctionCall","src":"2065:62:29"},"nodeType":"YulIf","src":"2062:88:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2166:2:29","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2170:10:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2159:6:29"},"nodeType":"YulFunctionCall","src":"2159:22:29"},"nodeType":"YulExpressionStatement","src":"2159:22:29"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1937:4:29","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1946:6:29","type":""}],"src":"1912:275:29"},{"body":{"nodeType":"YulBlock","src":"2244:478:29","statements":[{"body":{"nodeType":"YulBlock","src":"2293:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2302:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2305:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2295:6:29"},"nodeType":"YulFunctionCall","src":"2295:12:29"},"nodeType":"YulExpressionStatement","src":"2295:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2272:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"2280:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2268:3:29"},"nodeType":"YulFunctionCall","src":"2268:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"2287:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2264:3:29"},"nodeType":"YulFunctionCall","src":"2264:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2257:6:29"},"nodeType":"YulFunctionCall","src":"2257:35:29"},"nodeType":"YulIf","src":"2254:55:29"},{"nodeType":"YulVariableDeclaration","src":"2318:30:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2341:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2328:12:29"},"nodeType":"YulFunctionCall","src":"2328:20:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2322:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2387:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2389:16:29"},"nodeType":"YulFunctionCall","src":"2389:18:29"},"nodeType":"YulExpressionStatement","src":"2389:18:29"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2363:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"2367:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2360:2:29"},"nodeType":"YulFunctionCall","src":"2360:26:29"},"nodeType":"YulIf","src":"2357:52:29"},{"nodeType":"YulVariableDeclaration","src":"2418:70:29","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2461:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"2465:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2457:3:29"},"nodeType":"YulFunctionCall","src":"2457:13:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2476:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2472:3:29"},"nodeType":"YulFunctionCall","src":"2472:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2453:3:29"},"nodeType":"YulFunctionCall","src":"2453:27:29"},{"kind":"number","nodeType":"YulLiteral","src":"2482:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2449:3:29"},"nodeType":"YulFunctionCall","src":"2449:38:29"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2433:15:29"},"nodeType":"YulFunctionCall","src":"2433:55:29"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"2422:7:29","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2504:7:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2513:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2497:6:29"},"nodeType":"YulFunctionCall","src":"2497:19:29"},"nodeType":"YulExpressionStatement","src":"2497:19:29"},{"body":{"nodeType":"YulBlock","src":"2564:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2573:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2576:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2566:6:29"},"nodeType":"YulFunctionCall","src":"2566:12:29"},"nodeType":"YulExpressionStatement","src":"2566:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2539:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2547:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2535:3:29"},"nodeType":"YulFunctionCall","src":"2535:15:29"},{"kind":"number","nodeType":"YulLiteral","src":"2552:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2531:3:29"},"nodeType":"YulFunctionCall","src":"2531:26:29"},{"name":"end","nodeType":"YulIdentifier","src":"2559:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2528:2:29"},"nodeType":"YulFunctionCall","src":"2528:35:29"},"nodeType":"YulIf","src":"2525:55:29"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2606:7:29"},{"kind":"number","nodeType":"YulLiteral","src":"2615:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2602:3:29"},"nodeType":"YulFunctionCall","src":"2602:18:29"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2626:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"2634:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2622:3:29"},"nodeType":"YulFunctionCall","src":"2622:17:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2641:2:29"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2589:12:29"},"nodeType":"YulFunctionCall","src":"2589:55:29"},"nodeType":"YulExpressionStatement","src":"2589:55:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2668:7:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2677:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2664:3:29"},"nodeType":"YulFunctionCall","src":"2664:16:29"},{"kind":"number","nodeType":"YulLiteral","src":"2682:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2660:3:29"},"nodeType":"YulFunctionCall","src":"2660:27:29"},{"kind":"number","nodeType":"YulLiteral","src":"2689:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2653:6:29"},"nodeType":"YulFunctionCall","src":"2653:38:29"},"nodeType":"YulExpressionStatement","src":"2653:38:29"},{"nodeType":"YulAssignment","src":"2700:16:29","value":{"name":"array_1","nodeType":"YulIdentifier","src":"2709:7:29"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2700:5:29"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2218:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"2226:3:29","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2234:5:29","type":""}],"src":"2192:530:29"},{"body":{"nodeType":"YulBlock","src":"2857:535:29","statements":[{"body":{"nodeType":"YulBlock","src":"2904:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2916:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2906:6:29"},"nodeType":"YulFunctionCall","src":"2906:12:29"},"nodeType":"YulExpressionStatement","src":"2906:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2878:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2887:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2874:3:29"},"nodeType":"YulFunctionCall","src":"2874:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2899:3:29","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2870:3:29"},"nodeType":"YulFunctionCall","src":"2870:33:29"},"nodeType":"YulIf","src":"2867:53:29"},{"nodeType":"YulVariableDeclaration","src":"2929:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2942:12:29"},"nodeType":"YulFunctionCall","src":"2942:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2933:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2999:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2974:24:29"},"nodeType":"YulFunctionCall","src":"2974:31:29"},"nodeType":"YulExpressionStatement","src":"2974:31:29"},{"nodeType":"YulAssignment","src":"3014:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"3024:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3014:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3038:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3070:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3081:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3066:3:29"},"nodeType":"YulFunctionCall","src":"3066:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3053:12:29"},"nodeType":"YulFunctionCall","src":"3053:32:29"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3042:7:29","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3119:7:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3094:24:29"},"nodeType":"YulFunctionCall","src":"3094:33:29"},"nodeType":"YulExpressionStatement","src":"3094:33:29"},{"nodeType":"YulAssignment","src":"3136:17:29","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3146:7:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3136:6:29"}]},{"nodeType":"YulAssignment","src":"3162:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3200:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3185:3:29"},"nodeType":"YulFunctionCall","src":"3185:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3172:12:29"},"nodeType":"YulFunctionCall","src":"3172:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3162:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3213:46:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3244:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3255:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3240:3:29"},"nodeType":"YulFunctionCall","src":"3240:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3227:12:29"},"nodeType":"YulFunctionCall","src":"3227:32:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3217:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3302:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3311:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3314:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3304:6:29"},"nodeType":"YulFunctionCall","src":"3304:12:29"},"nodeType":"YulExpressionStatement","src":"3304:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3274:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"3282:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3271:2:29"},"nodeType":"YulFunctionCall","src":"3271:30:29"},"nodeType":"YulIf","src":"3268:50:29"},{"nodeType":"YulAssignment","src":"3327:59:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3358:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"3369:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3354:3:29"},"nodeType":"YulFunctionCall","src":"3354:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3378:7:29"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"3337:16:29"},"nodeType":"YulFunctionCall","src":"3337:49:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3327:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2799:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2810:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2822:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2830:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2838:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2846:6:29","type":""}],"src":"2727:665:29"},{"body":{"nodeType":"YulBlock","src":"3496:103:29","statements":[{"nodeType":"YulAssignment","src":"3506:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3518:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3529:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3514:3:29"},"nodeType":"YulFunctionCall","src":"3514:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3506:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3563:6:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3575:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3580:10:29","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3571:3:29"},"nodeType":"YulFunctionCall","src":"3571:20:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3559:3:29"},"nodeType":"YulFunctionCall","src":"3559:33:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3541:6:29"},"nodeType":"YulFunctionCall","src":"3541:52:29"},"nodeType":"YulExpressionStatement","src":"3541:52:29"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3465:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3476:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3487:4:29","type":""}],"src":"3397:202:29"},{"body":{"nodeType":"YulBlock","src":"3691:301:29","statements":[{"body":{"nodeType":"YulBlock","src":"3737:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3746:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3749:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3739:6:29"},"nodeType":"YulFunctionCall","src":"3739:12:29"},"nodeType":"YulExpressionStatement","src":"3739:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3712:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"3721:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:29"},"nodeType":"YulFunctionCall","src":"3708:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"3733:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3704:3:29"},"nodeType":"YulFunctionCall","src":"3704:32:29"},"nodeType":"YulIf","src":"3701:52:29"},{"nodeType":"YulVariableDeclaration","src":"3762:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3788:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3775:12:29"},"nodeType":"YulFunctionCall","src":"3775:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3766:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3832:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3807:24:29"},"nodeType":"YulFunctionCall","src":"3807:31:29"},"nodeType":"YulExpressionStatement","src":"3807:31:29"},{"nodeType":"YulAssignment","src":"3847:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"3857:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3847:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3871:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3903:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3914:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3899:3:29"},"nodeType":"YulFunctionCall","src":"3899:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3886:12:29"},"nodeType":"YulFunctionCall","src":"3886:32:29"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3875:7:29","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3952:7:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3927:24:29"},"nodeType":"YulFunctionCall","src":"3927:33:29"},"nodeType":"YulExpressionStatement","src":"3927:33:29"},{"nodeType":"YulAssignment","src":"3969:17:29","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3979:7:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3969:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3649:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3660:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3672:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3680:6:29","type":""}],"src":"3604:388:29"},{"body":{"nodeType":"YulBlock","src":"4098:102:29","statements":[{"nodeType":"YulAssignment","src":"4108:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4120:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4131:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4116:3:29"},"nodeType":"YulFunctionCall","src":"4116:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4108:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4150:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4165:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4181:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"4186:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4177:3:29"},"nodeType":"YulFunctionCall","src":"4177:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"4190:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4173:3:29"},"nodeType":"YulFunctionCall","src":"4173:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4161:3:29"},"nodeType":"YulFunctionCall","src":"4161:32:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4143:6:29"},"nodeType":"YulFunctionCall","src":"4143:51:29"},"nodeType":"YulExpressionStatement","src":"4143:51:29"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4067:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4078:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4089:4:29","type":""}],"src":"3997:203:29"},{"body":{"nodeType":"YulBlock","src":"4277:275:29","statements":[{"body":{"nodeType":"YulBlock","src":"4326:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4335:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4338:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4328:6:29"},"nodeType":"YulFunctionCall","src":"4328:12:29"},"nodeType":"YulExpressionStatement","src":"4328:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4305:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4313:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4301:3:29"},"nodeType":"YulFunctionCall","src":"4301:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"4320:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4297:3:29"},"nodeType":"YulFunctionCall","src":"4297:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4290:6:29"},"nodeType":"YulFunctionCall","src":"4290:35:29"},"nodeType":"YulIf","src":"4287:55:29"},{"nodeType":"YulAssignment","src":"4351:30:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4374:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4361:12:29"},"nodeType":"YulFunctionCall","src":"4361:20:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4351:6:29"}]},{"body":{"nodeType":"YulBlock","src":"4424:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4433:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4436:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4426:6:29"},"nodeType":"YulFunctionCall","src":"4426:12:29"},"nodeType":"YulExpressionStatement","src":"4426:12:29"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4396:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4404:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4393:2:29"},"nodeType":"YulFunctionCall","src":"4393:30:29"},"nodeType":"YulIf","src":"4390:50:29"},{"nodeType":"YulAssignment","src":"4449:29:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4465:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4473:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4461:3:29"},"nodeType":"YulFunctionCall","src":"4461:17:29"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"4449:8:29"}]},{"body":{"nodeType":"YulBlock","src":"4530:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4539:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4542:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4532:6:29"},"nodeType":"YulFunctionCall","src":"4532:12:29"},"nodeType":"YulExpressionStatement","src":"4532:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4501:6:29"},{"name":"length","nodeType":"YulIdentifier","src":"4509:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4497:3:29"},"nodeType":"YulFunctionCall","src":"4497:19:29"},{"kind":"number","nodeType":"YulLiteral","src":"4518:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4493:3:29"},"nodeType":"YulFunctionCall","src":"4493:30:29"},{"name":"end","nodeType":"YulIdentifier","src":"4525:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4490:2:29"},"nodeType":"YulFunctionCall","src":"4490:39:29"},"nodeType":"YulIf","src":"4487:59:29"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4240:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"4248:3:29","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"4256:8:29","type":""},{"name":"length","nodeType":"YulTypedName","src":"4266:6:29","type":""}],"src":"4205:347:29"},{"body":{"nodeType":"YulBlock","src":"4680:489:29","statements":[{"body":{"nodeType":"YulBlock","src":"4726:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4735:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4738:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4728:6:29"},"nodeType":"YulFunctionCall","src":"4728:12:29"},"nodeType":"YulExpressionStatement","src":"4728:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4701:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"4710:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4697:3:29"},"nodeType":"YulFunctionCall","src":"4697:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"4722:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4693:3:29"},"nodeType":"YulFunctionCall","src":"4693:32:29"},"nodeType":"YulIf","src":"4690:52:29"},{"nodeType":"YulVariableDeclaration","src":"4751:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4777:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4764:12:29"},"nodeType":"YulFunctionCall","src":"4764:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4755:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4821:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4796:24:29"},"nodeType":"YulFunctionCall","src":"4796:31:29"},"nodeType":"YulExpressionStatement","src":"4796:31:29"},{"nodeType":"YulAssignment","src":"4836:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"4846:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4836:6:29"}]},{"nodeType":"YulAssignment","src":"4860:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4898:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4883:3:29"},"nodeType":"YulFunctionCall","src":"4883:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4870:12:29"},"nodeType":"YulFunctionCall","src":"4870:32:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4860:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"4911:46:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4942:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4953:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4938:3:29"},"nodeType":"YulFunctionCall","src":"4938:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4925:12:29"},"nodeType":"YulFunctionCall","src":"4925:32:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4915:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"5000:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5009:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5012:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5002:6:29"},"nodeType":"YulFunctionCall","src":"5002:12:29"},"nodeType":"YulExpressionStatement","src":"5002:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4972:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4980:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4969:2:29"},"nodeType":"YulFunctionCall","src":"4969:30:29"},"nodeType":"YulIf","src":"4966:50:29"},{"nodeType":"YulVariableDeclaration","src":"5025:84:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5081:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"5092:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5077:3:29"},"nodeType":"YulFunctionCall","src":"5077:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5101:7:29"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"5051:25:29"},"nodeType":"YulFunctionCall","src":"5051:58:29"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"5029:8:29","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"5039:8:29","type":""}]},{"nodeType":"YulAssignment","src":"5118:18:29","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"5128:8:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5118:6:29"}]},{"nodeType":"YulAssignment","src":"5145:18:29","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"5155:8:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5145:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4622:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4633:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4645:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4653:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4661:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4669:6:29","type":""}],"src":"4557:612:29"},{"body":{"nodeType":"YulBlock","src":"5293:427:29","statements":[{"nodeType":"YulVariableDeclaration","src":"5303:12:29","value":{"kind":"number","nodeType":"YulLiteral","src":"5313:2:29","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5307:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5331:9:29"},{"name":"_1","nodeType":"YulIdentifier","src":"5342:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5324:6:29"},"nodeType":"YulFunctionCall","src":"5324:21:29"},"nodeType":"YulExpressionStatement","src":"5324:21:29"},{"nodeType":"YulVariableDeclaration","src":"5354:27:29","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5374:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5368:5:29"},"nodeType":"YulFunctionCall","src":"5368:13:29"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5358:6:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5401:9:29"},{"name":"_1","nodeType":"YulIdentifier","src":"5412:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5397:3:29"},"nodeType":"YulFunctionCall","src":"5397:18:29"},{"name":"length","nodeType":"YulIdentifier","src":"5417:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5390:6:29"},"nodeType":"YulFunctionCall","src":"5390:34:29"},"nodeType":"YulExpressionStatement","src":"5390:34:29"},{"nodeType":"YulVariableDeclaration","src":"5433:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"5442:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5437:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"5502:90:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5531:9:29"},{"name":"i","nodeType":"YulIdentifier","src":"5542:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5527:3:29"},"nodeType":"YulFunctionCall","src":"5527:17:29"},{"kind":"number","nodeType":"YulLiteral","src":"5546:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5523:3:29"},"nodeType":"YulFunctionCall","src":"5523:26:29"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5565:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"5573:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5561:3:29"},"nodeType":"YulFunctionCall","src":"5561:14:29"},{"name":"_1","nodeType":"YulIdentifier","src":"5577:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5557:3:29"},"nodeType":"YulFunctionCall","src":"5557:23:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5551:5:29"},"nodeType":"YulFunctionCall","src":"5551:30:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5516:6:29"},"nodeType":"YulFunctionCall","src":"5516:66:29"},"nodeType":"YulExpressionStatement","src":"5516:66:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5463:1:29"},{"name":"length","nodeType":"YulIdentifier","src":"5466:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5460:2:29"},"nodeType":"YulFunctionCall","src":"5460:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5474:19:29","statements":[{"nodeType":"YulAssignment","src":"5476:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5485:1:29"},{"name":"_1","nodeType":"YulIdentifier","src":"5488:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5481:3:29"},"nodeType":"YulFunctionCall","src":"5481:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5476:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"5456:3:29","statements":[]},"src":"5452:140:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5616:9:29"},{"name":"length","nodeType":"YulIdentifier","src":"5627:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5612:3:29"},"nodeType":"YulFunctionCall","src":"5612:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"5636:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5608:3:29"},"nodeType":"YulFunctionCall","src":"5608:31:29"},{"kind":"number","nodeType":"YulLiteral","src":"5641:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5601:6:29"},"nodeType":"YulFunctionCall","src":"5601:42:29"},"nodeType":"YulExpressionStatement","src":"5601:42:29"},{"nodeType":"YulAssignment","src":"5652:62:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5668:9:29"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5687:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"5695:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5683:3:29"},"nodeType":"YulFunctionCall","src":"5683:15:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5704:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5700:3:29"},"nodeType":"YulFunctionCall","src":"5700:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5679:3:29"},"nodeType":"YulFunctionCall","src":"5679:29:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5664:3:29"},"nodeType":"YulFunctionCall","src":"5664:45:29"},{"kind":"number","nodeType":"YulLiteral","src":"5711:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5660:3:29"},"nodeType":"YulFunctionCall","src":"5660:54:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5652:4:29"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5262:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5273:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5284:4:29","type":""}],"src":"5174:546:29"},{"body":{"nodeType":"YulBlock","src":"5789:648:29","statements":[{"body":{"nodeType":"YulBlock","src":"5838:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5847:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5850:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5840:6:29"},"nodeType":"YulFunctionCall","src":"5840:12:29"},"nodeType":"YulExpressionStatement","src":"5840:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5817:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"5825:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5813:3:29"},"nodeType":"YulFunctionCall","src":"5813:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"5832:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5809:3:29"},"nodeType":"YulFunctionCall","src":"5809:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5802:6:29"},"nodeType":"YulFunctionCall","src":"5802:35:29"},"nodeType":"YulIf","src":"5799:55:29"},{"nodeType":"YulVariableDeclaration","src":"5863:30:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5886:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5873:12:29"},"nodeType":"YulFunctionCall","src":"5873:20:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5867:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5902:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"5912:4:29","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5906:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"5955:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5957:16:29"},"nodeType":"YulFunctionCall","src":"5957:18:29"},"nodeType":"YulExpressionStatement","src":"5957:18:29"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"5931:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"5935:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5928:2:29"},"nodeType":"YulFunctionCall","src":"5928:26:29"},"nodeType":"YulIf","src":"5925:52:29"},{"nodeType":"YulVariableDeclaration","src":"5986:20:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6000:1:29","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"6003:2:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5996:3:29"},"nodeType":"YulFunctionCall","src":"5996:10:29"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"5990:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6015:39:29","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"6046:2:29"},{"name":"_2","nodeType":"YulIdentifier","src":"6050:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6042:3:29"},"nodeType":"YulFunctionCall","src":"6042:11:29"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"6026:15:29"},"nodeType":"YulFunctionCall","src":"6026:28:29"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"6019:3:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6063:16:29","value":{"name":"dst","nodeType":"YulIdentifier","src":"6076:3:29"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"6067:5:29","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6095:3:29"},{"name":"_1","nodeType":"YulIdentifier","src":"6100:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6088:6:29"},"nodeType":"YulFunctionCall","src":"6088:15:29"},"nodeType":"YulExpressionStatement","src":"6088:15:29"},{"nodeType":"YulAssignment","src":"6112:19:29","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6123:3:29"},{"name":"_2","nodeType":"YulIdentifier","src":"6128:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6119:3:29"},"nodeType":"YulFunctionCall","src":"6119:12:29"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"6112:3:29"}]},{"nodeType":"YulVariableDeclaration","src":"6140:38:29","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6162:6:29"},{"name":"_3","nodeType":"YulIdentifier","src":"6170:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6158:3:29"},"nodeType":"YulFunctionCall","src":"6158:15:29"},{"name":"_2","nodeType":"YulIdentifier","src":"6175:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6154:3:29"},"nodeType":"YulFunctionCall","src":"6154:24:29"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"6144:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"6206:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6215:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6218:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6208:6:29"},"nodeType":"YulFunctionCall","src":"6208:12:29"},"nodeType":"YulExpressionStatement","src":"6208:12:29"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"6193:6:29"},{"name":"end","nodeType":"YulIdentifier","src":"6201:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6190:2:29"},"nodeType":"YulFunctionCall","src":"6190:15:29"},"nodeType":"YulIf","src":"6187:35:29"},{"nodeType":"YulVariableDeclaration","src":"6231:26:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6246:6:29"},{"name":"_2","nodeType":"YulIdentifier","src":"6254:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6242:3:29"},"nodeType":"YulFunctionCall","src":"6242:15:29"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"6235:3:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"6322:86:29","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6343:3:29"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6361:3:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6348:12:29"},"nodeType":"YulFunctionCall","src":"6348:17:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6336:6:29"},"nodeType":"YulFunctionCall","src":"6336:30:29"},"nodeType":"YulExpressionStatement","src":"6336:30:29"},{"nodeType":"YulAssignment","src":"6379:19:29","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6390:3:29"},{"name":"_2","nodeType":"YulIdentifier","src":"6395:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6386:3:29"},"nodeType":"YulFunctionCall","src":"6386:12:29"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"6379:3:29"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6277:3:29"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"6282:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6274:2:29"},"nodeType":"YulFunctionCall","src":"6274:15:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6290:23:29","statements":[{"nodeType":"YulAssignment","src":"6292:19:29","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"6303:3:29"},{"name":"_2","nodeType":"YulIdentifier","src":"6308:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6299:3:29"},"nodeType":"YulFunctionCall","src":"6299:12:29"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"6292:3:29"}]}]},"pre":{"nodeType":"YulBlock","src":"6270:3:29","statements":[]},"src":"6266:142:29"},{"nodeType":"YulAssignment","src":"6417:14:29","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"6426:5:29"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"6417:5:29"}]}]},"name":"abi_decode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5763:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"5771:3:29","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"5779:5:29","type":""}],"src":"5725:712:29"},{"body":{"nodeType":"YulBlock","src":"6639:874:29","statements":[{"body":{"nodeType":"YulBlock","src":"6686:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6695:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6698:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6688:6:29"},"nodeType":"YulFunctionCall","src":"6688:12:29"},"nodeType":"YulExpressionStatement","src":"6688:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6660:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"6669:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6656:3:29"},"nodeType":"YulFunctionCall","src":"6656:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"6681:3:29","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6652:3:29"},"nodeType":"YulFunctionCall","src":"6652:33:29"},"nodeType":"YulIf","src":"6649:53:29"},{"nodeType":"YulVariableDeclaration","src":"6711:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6737:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6724:12:29"},"nodeType":"YulFunctionCall","src":"6724:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6715:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6781:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"6756:24:29"},"nodeType":"YulFunctionCall","src":"6756:31:29"},"nodeType":"YulExpressionStatement","src":"6756:31:29"},{"nodeType":"YulAssignment","src":"6796:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"6806:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6796:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"6820:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6852:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6863:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6848:3:29"},"nodeType":"YulFunctionCall","src":"6848:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6835:12:29"},"nodeType":"YulFunctionCall","src":"6835:32:29"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"6824:7:29","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"6901:7:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"6876:24:29"},"nodeType":"YulFunctionCall","src":"6876:33:29"},"nodeType":"YulExpressionStatement","src":"6876:33:29"},{"nodeType":"YulAssignment","src":"6918:17:29","value":{"name":"value_1","nodeType":"YulIdentifier","src":"6928:7:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6918:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"6944:46:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6975:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6986:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6971:3:29"},"nodeType":"YulFunctionCall","src":"6971:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6958:12:29"},"nodeType":"YulFunctionCall","src":"6958:32:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6948:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6999:28:29","value":{"kind":"number","nodeType":"YulLiteral","src":"7009:18:29","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7003:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"7054:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7063:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7066:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7056:6:29"},"nodeType":"YulFunctionCall","src":"7056:12:29"},"nodeType":"YulExpressionStatement","src":"7056:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7042:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"7050:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7039:2:29"},"nodeType":"YulFunctionCall","src":"7039:14:29"},"nodeType":"YulIf","src":"7036:34:29"},{"nodeType":"YulAssignment","src":"7079:71:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7122:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"7133:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7118:3:29"},"nodeType":"YulFunctionCall","src":"7118:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7142:7:29"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"7089:28:29"},"nodeType":"YulFunctionCall","src":"7089:61:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"7079:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"7159:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7192:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7203:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7188:3:29"},"nodeType":"YulFunctionCall","src":"7188:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7175:12:29"},"nodeType":"YulFunctionCall","src":"7175:32:29"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"7163:8:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"7236:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7245:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7248:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7238:6:29"},"nodeType":"YulFunctionCall","src":"7238:12:29"},"nodeType":"YulExpressionStatement","src":"7238:12:29"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"7222:8:29"},{"name":"_1","nodeType":"YulIdentifier","src":"7232:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7219:2:29"},"nodeType":"YulFunctionCall","src":"7219:16:29"},"nodeType":"YulIf","src":"7216:36:29"},{"nodeType":"YulAssignment","src":"7261:73:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7304:9:29"},{"name":"offset_1","nodeType":"YulIdentifier","src":"7315:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7300:3:29"},"nodeType":"YulFunctionCall","src":"7300:24:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7326:7:29"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"7271:28:29"},"nodeType":"YulFunctionCall","src":"7271:63:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"7261:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"7343:49:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7376:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7387:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7372:3:29"},"nodeType":"YulFunctionCall","src":"7372:19:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7359:12:29"},"nodeType":"YulFunctionCall","src":"7359:33:29"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"7347:8:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"7421:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7430:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7433:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7423:6:29"},"nodeType":"YulFunctionCall","src":"7423:12:29"},"nodeType":"YulExpressionStatement","src":"7423:12:29"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"7407:8:29"},{"name":"_1","nodeType":"YulIdentifier","src":"7417:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7404:2:29"},"nodeType":"YulFunctionCall","src":"7404:16:29"},"nodeType":"YulIf","src":"7401:36:29"},{"nodeType":"YulAssignment","src":"7446:61:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7477:9:29"},{"name":"offset_2","nodeType":"YulIdentifier","src":"7488:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7473:3:29"},"nodeType":"YulFunctionCall","src":"7473:24:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7499:7:29"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"7456:16:29"},"nodeType":"YulFunctionCall","src":"7456:51:29"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"7446:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6573:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6584:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6596:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6604:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6612:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6620:6:29","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6628:6:29","type":""}],"src":"6442:1071:29"},{"body":{"nodeType":"YulBlock","src":"7619:76:29","statements":[{"nodeType":"YulAssignment","src":"7629:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7641:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7652:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7637:3:29"},"nodeType":"YulFunctionCall","src":"7637:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7629:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7671:9:29"},{"name":"value0","nodeType":"YulIdentifier","src":"7682:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7664:6:29"},"nodeType":"YulFunctionCall","src":"7664:25:29"},"nodeType":"YulExpressionStatement","src":"7664:25:29"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7588:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7599:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7610:4:29","type":""}],"src":"7518:177:29"},{"body":{"nodeType":"YulBlock","src":"7789:320:29","statements":[{"body":{"nodeType":"YulBlock","src":"7835:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7844:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7847:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7837:6:29"},"nodeType":"YulFunctionCall","src":"7837:12:29"},"nodeType":"YulExpressionStatement","src":"7837:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7810:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"7819:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7806:3:29"},"nodeType":"YulFunctionCall","src":"7806:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"7831:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7802:3:29"},"nodeType":"YulFunctionCall","src":"7802:32:29"},"nodeType":"YulIf","src":"7799:52:29"},{"nodeType":"YulVariableDeclaration","src":"7860:37:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7887:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7874:12:29"},"nodeType":"YulFunctionCall","src":"7874:23:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7864:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"7940:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7949:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7952:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7942:6:29"},"nodeType":"YulFunctionCall","src":"7942:12:29"},"nodeType":"YulExpressionStatement","src":"7942:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7912:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"7920:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7909:2:29"},"nodeType":"YulFunctionCall","src":"7909:30:29"},"nodeType":"YulIf","src":"7906:50:29"},{"nodeType":"YulVariableDeclaration","src":"7965:84:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8021:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"8032:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8017:3:29"},"nodeType":"YulFunctionCall","src":"8017:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8041:7:29"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"7991:25:29"},"nodeType":"YulFunctionCall","src":"7991:58:29"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"7969:8:29","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"7979:8:29","type":""}]},{"nodeType":"YulAssignment","src":"8058:18:29","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"8068:8:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8058:6:29"}]},{"nodeType":"YulAssignment","src":"8085:18:29","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"8095:8:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8085:6:29"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7747:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7758:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7770:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7778:6:29","type":""}],"src":"7700:409:29"},{"body":{"nodeType":"YulBlock","src":"8184:110:29","statements":[{"body":{"nodeType":"YulBlock","src":"8230:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8239:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8242:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8232:6:29"},"nodeType":"YulFunctionCall","src":"8232:12:29"},"nodeType":"YulExpressionStatement","src":"8232:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8205:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"8214:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8201:3:29"},"nodeType":"YulFunctionCall","src":"8201:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"8226:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8197:3:29"},"nodeType":"YulFunctionCall","src":"8197:32:29"},"nodeType":"YulIf","src":"8194:52:29"},{"nodeType":"YulAssignment","src":"8255:33:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8278:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8265:12:29"},"nodeType":"YulFunctionCall","src":"8265:23:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8255:6:29"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8150:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8161:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8173:6:29","type":""}],"src":"8114:180:29"},{"body":{"nodeType":"YulBlock","src":"8446:587:29","statements":[{"body":{"nodeType":"YulBlock","src":"8493:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8502:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8505:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8495:6:29"},"nodeType":"YulFunctionCall","src":"8495:12:29"},"nodeType":"YulExpressionStatement","src":"8495:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8467:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"8476:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8463:3:29"},"nodeType":"YulFunctionCall","src":"8463:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"8488:3:29","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8459:3:29"},"nodeType":"YulFunctionCall","src":"8459:33:29"},"nodeType":"YulIf","src":"8456:53:29"},{"nodeType":"YulVariableDeclaration","src":"8518:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8544:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8531:12:29"},"nodeType":"YulFunctionCall","src":"8531:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8522:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8588:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"8563:24:29"},"nodeType":"YulFunctionCall","src":"8563:31:29"},"nodeType":"YulExpressionStatement","src":"8563:31:29"},{"nodeType":"YulAssignment","src":"8603:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"8613:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8603:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"8627:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8659:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8670:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8655:3:29"},"nodeType":"YulFunctionCall","src":"8655:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8642:12:29"},"nodeType":"YulFunctionCall","src":"8642:32:29"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8631:7:29","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8708:7:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"8683:24:29"},"nodeType":"YulFunctionCall","src":"8683:33:29"},"nodeType":"YulExpressionStatement","src":"8683:33:29"},{"nodeType":"YulAssignment","src":"8725:17:29","value":{"name":"value_1","nodeType":"YulIdentifier","src":"8735:7:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8725:6:29"}]},{"nodeType":"YulAssignment","src":"8751:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8778:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8789:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8774:3:29"},"nodeType":"YulFunctionCall","src":"8774:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8761:12:29"},"nodeType":"YulFunctionCall","src":"8761:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"8751:6:29"}]},{"nodeType":"YulAssignment","src":"8802:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8829:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8840:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8825:3:29"},"nodeType":"YulFunctionCall","src":"8825:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8812:12:29"},"nodeType":"YulFunctionCall","src":"8812:32:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"8802:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"8853:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8884:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8895:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8880:3:29"},"nodeType":"YulFunctionCall","src":"8880:19:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8867:12:29"},"nodeType":"YulFunctionCall","src":"8867:33:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8857:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"8943:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8952:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8955:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8945:6:29"},"nodeType":"YulFunctionCall","src":"8945:12:29"},"nodeType":"YulExpressionStatement","src":"8945:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8915:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"8923:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8912:2:29"},"nodeType":"YulFunctionCall","src":"8912:30:29"},"nodeType":"YulIf","src":"8909:50:29"},{"nodeType":"YulAssignment","src":"8968:59:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8999:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"9010:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8995:3:29"},"nodeType":"YulFunctionCall","src":"8995:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9019:7:29"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"8978:16:29"},"nodeType":"YulFunctionCall","src":"8978:49:29"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"8968:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8380:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8391:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8403:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8411:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8419:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8427:6:29","type":""},{"name":"value4","nodeType":"YulTypedName","src":"8435:6:29","type":""}],"src":"8299:734:29"},{"body":{"nodeType":"YulBlock","src":"9195:188:29","statements":[{"nodeType":"YulAssignment","src":"9205:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9217:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9228:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9213:3:29"},"nodeType":"YulFunctionCall","src":"9213:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9205:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9247:9:29"},{"name":"value0","nodeType":"YulIdentifier","src":"9258:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9240:6:29"},"nodeType":"YulFunctionCall","src":"9240:25:29"},"nodeType":"YulExpressionStatement","src":"9240:25:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9285:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9296:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9281:3:29"},"nodeType":"YulFunctionCall","src":"9281:18:29"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9305:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9321:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"9326:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9317:3:29"},"nodeType":"YulFunctionCall","src":"9317:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"9330:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9313:3:29"},"nodeType":"YulFunctionCall","src":"9313:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9301:3:29"},"nodeType":"YulFunctionCall","src":"9301:32:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9274:6:29"},"nodeType":"YulFunctionCall","src":"9274:60:29"},"nodeType":"YulExpressionStatement","src":"9274:60:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9354:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9365:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9350:3:29"},"nodeType":"YulFunctionCall","src":"9350:18:29"},{"name":"value2","nodeType":"YulIdentifier","src":"9370:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9343:6:29"},"nodeType":"YulFunctionCall","src":"9343:34:29"},"nodeType":"YulExpressionStatement","src":"9343:34:29"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9148:9:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9159:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9167:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9175:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9186:4:29","type":""}],"src":"9038:345:29"},{"body":{"nodeType":"YulBlock","src":"9458:177:29","statements":[{"body":{"nodeType":"YulBlock","src":"9504:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9513:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9516:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9506:6:29"},"nodeType":"YulFunctionCall","src":"9506:12:29"},"nodeType":"YulExpressionStatement","src":"9506:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9479:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"9488:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9475:3:29"},"nodeType":"YulFunctionCall","src":"9475:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"9500:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9471:3:29"},"nodeType":"YulFunctionCall","src":"9471:32:29"},"nodeType":"YulIf","src":"9468:52:29"},{"nodeType":"YulVariableDeclaration","src":"9529:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9555:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9542:12:29"},"nodeType":"YulFunctionCall","src":"9542:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9533:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9599:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"9574:24:29"},"nodeType":"YulFunctionCall","src":"9574:31:29"},"nodeType":"YulExpressionStatement","src":"9574:31:29"},{"nodeType":"YulAssignment","src":"9614:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"9624:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9614:6:29"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9424:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9435:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9447:6:29","type":""}],"src":"9388:247:29"},{"body":{"nodeType":"YulBlock","src":"9672:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9689:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9696:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9701:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9692:3:29"},"nodeType":"YulFunctionCall","src":"9692:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9682:6:29"},"nodeType":"YulFunctionCall","src":"9682:31:29"},"nodeType":"YulExpressionStatement","src":"9682:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9729:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9732:4:29","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9722:6:29"},"nodeType":"YulFunctionCall","src":"9722:15:29"},"nodeType":"YulExpressionStatement","src":"9722:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9753:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9756:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9746:6:29"},"nodeType":"YulFunctionCall","src":"9746:15:29"},"nodeType":"YulExpressionStatement","src":"9746:15:29"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9640:127:29"},{"body":{"nodeType":"YulBlock","src":"9839:206:29","statements":[{"body":{"nodeType":"YulBlock","src":"9885:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9894:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9897:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9887:6:29"},"nodeType":"YulFunctionCall","src":"9887:12:29"},"nodeType":"YulExpressionStatement","src":"9887:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9860:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"9869:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9856:3:29"},"nodeType":"YulFunctionCall","src":"9856:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"9881:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9852:3:29"},"nodeType":"YulFunctionCall","src":"9852:32:29"},"nodeType":"YulIf","src":"9849:52:29"},{"nodeType":"YulVariableDeclaration","src":"9910:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9936:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9923:12:29"},"nodeType":"YulFunctionCall","src":"9923:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"9914:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"9999:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10008:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10011:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10001:6:29"},"nodeType":"YulFunctionCall","src":"10001:12:29"},"nodeType":"YulExpressionStatement","src":"10001:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9968:5:29"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9989:5:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9982:6:29"},"nodeType":"YulFunctionCall","src":"9982:13:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9975:6:29"},"nodeType":"YulFunctionCall","src":"9975:21:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9965:2:29"},"nodeType":"YulFunctionCall","src":"9965:32:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9958:6:29"},"nodeType":"YulFunctionCall","src":"9958:40:29"},"nodeType":"YulIf","src":"9955:60:29"},{"nodeType":"YulAssignment","src":"10024:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"10034:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10024:6:29"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9805:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9816:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9828:6:29","type":""}],"src":"9772:273:29"},{"body":{"nodeType":"YulBlock","src":"10201:234:29","statements":[{"nodeType":"YulAssignment","src":"10211:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10223:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10234:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10219:3:29"},"nodeType":"YulFunctionCall","src":"10219:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10211:4:29"}]},{"nodeType":"YulVariableDeclaration","src":"10246:29:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10264:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"10269:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10260:3:29"},"nodeType":"YulFunctionCall","src":"10260:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"10273:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10256:3:29"},"nodeType":"YulFunctionCall","src":"10256:19:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10250:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10291:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10306:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"10314:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10302:3:29"},"nodeType":"YulFunctionCall","src":"10302:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10284:6:29"},"nodeType":"YulFunctionCall","src":"10284:34:29"},"nodeType":"YulExpressionStatement","src":"10284:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10338:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10349:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10334:3:29"},"nodeType":"YulFunctionCall","src":"10334:18:29"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10358:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"10366:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10354:3:29"},"nodeType":"YulFunctionCall","src":"10354:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10327:6:29"},"nodeType":"YulFunctionCall","src":"10327:43:29"},"nodeType":"YulExpressionStatement","src":"10327:43:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10390:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10401:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10386:3:29"},"nodeType":"YulFunctionCall","src":"10386:18:29"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"10420:6:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10413:6:29"},"nodeType":"YulFunctionCall","src":"10413:14:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10406:6:29"},"nodeType":"YulFunctionCall","src":"10406:22:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10379:6:29"},"nodeType":"YulFunctionCall","src":"10379:50:29"},"nodeType":"YulExpressionStatement","src":"10379:50:29"}]},"name":"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10154:9:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10165:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10173:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10181:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10192:4:29","type":""}],"src":"10050:385:29"},{"body":{"nodeType":"YulBlock","src":"10472:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10489:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10496:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10501:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10492:3:29"},"nodeType":"YulFunctionCall","src":"10492:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10482:6:29"},"nodeType":"YulFunctionCall","src":"10482:31:29"},"nodeType":"YulExpressionStatement","src":"10482:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10529:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10532:4:29","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10522:6:29"},"nodeType":"YulFunctionCall","src":"10522:15:29"},"nodeType":"YulExpressionStatement","src":"10522:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10553:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10556:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10546:6:29"},"nodeType":"YulFunctionCall","src":"10546:15:29"},"nodeType":"YulExpressionStatement","src":"10546:15:29"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"10440:127:29"},{"body":{"nodeType":"YulBlock","src":"10619:88:29","statements":[{"body":{"nodeType":"YulBlock","src":"10650:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10652:16:29"},"nodeType":"YulFunctionCall","src":"10652:18:29"},"nodeType":"YulExpressionStatement","src":"10652:18:29"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10635:5:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10646:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10642:3:29"},"nodeType":"YulFunctionCall","src":"10642:6:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10632:2:29"},"nodeType":"YulFunctionCall","src":"10632:17:29"},"nodeType":"YulIf","src":"10629:43:29"},{"nodeType":"YulAssignment","src":"10681:20:29","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10692:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"10699:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10688:3:29"},"nodeType":"YulFunctionCall","src":"10688:13:29"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"10681:3:29"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10601:5:29","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"10611:3:29","type":""}],"src":"10572:135:29"},{"body":{"nodeType":"YulBlock","src":"10793:170:29","statements":[{"body":{"nodeType":"YulBlock","src":"10839:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10848:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10851:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10841:6:29"},"nodeType":"YulFunctionCall","src":"10841:12:29"},"nodeType":"YulExpressionStatement","src":"10841:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10814:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"10823:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10810:3:29"},"nodeType":"YulFunctionCall","src":"10810:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"10835:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10806:3:29"},"nodeType":"YulFunctionCall","src":"10806:32:29"},"nodeType":"YulIf","src":"10803:52:29"},{"nodeType":"YulVariableDeclaration","src":"10864:29:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10883:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10877:5:29"},"nodeType":"YulFunctionCall","src":"10877:16:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10868:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10927:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"10902:24:29"},"nodeType":"YulFunctionCall","src":"10902:31:29"},"nodeType":"YulExpressionStatement","src":"10902:31:29"},{"nodeType":"YulAssignment","src":"10942:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"10952:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10942:6:29"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10759:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10770:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10782:6:29","type":""}],"src":"10712:251:29"},{"body":{"nodeType":"YulBlock","src":"11142:172:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11159:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"11170:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11152:6:29"},"nodeType":"YulFunctionCall","src":"11152:21:29"},"nodeType":"YulExpressionStatement","src":"11152:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11193:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"11204:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11189:3:29"},"nodeType":"YulFunctionCall","src":"11189:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"11209:2:29","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11182:6:29"},"nodeType":"YulFunctionCall","src":"11182:30:29"},"nodeType":"YulExpressionStatement","src":"11182:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11232:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"11243:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11228:3:29"},"nodeType":"YulFunctionCall","src":"11228:18:29"},{"hexValue":"4d6574686f6420616c6c206e6f7420616c6c6f776564","kind":"string","nodeType":"YulLiteral","src":"11248:24:29","type":"","value":"Method all not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11221:6:29"},"nodeType":"YulFunctionCall","src":"11221:52:29"},"nodeType":"YulExpressionStatement","src":"11221:52:29"},{"nodeType":"YulAssignment","src":"11282:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11294:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"11305:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11290:3:29"},"nodeType":"YulFunctionCall","src":"11290:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11282:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11119:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11133:4:29","type":""}],"src":"10968:346:29"},{"body":{"nodeType":"YulBlock","src":"11448:259:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11465:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"11476:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11458:6:29"},"nodeType":"YulFunctionCall","src":"11458:21:29"},"nodeType":"YulExpressionStatement","src":"11458:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11499:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"11510:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11495:3:29"},"nodeType":"YulFunctionCall","src":"11495:18:29"},{"name":"value1","nodeType":"YulIdentifier","src":"11515:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11488:6:29"},"nodeType":"YulFunctionCall","src":"11488:34:29"},"nodeType":"YulExpressionStatement","src":"11488:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11548:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"11559:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11544:3:29"},"nodeType":"YulFunctionCall","src":"11544:18:29"},{"name":"value0","nodeType":"YulIdentifier","src":"11564:6:29"},{"name":"value1","nodeType":"YulIdentifier","src":"11572:6:29"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"11531:12:29"},"nodeType":"YulFunctionCall","src":"11531:48:29"},"nodeType":"YulExpressionStatement","src":"11531:48:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11603:9:29"},{"name":"value1","nodeType":"YulIdentifier","src":"11614:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11599:3:29"},"nodeType":"YulFunctionCall","src":"11599:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"11623:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11595:3:29"},"nodeType":"YulFunctionCall","src":"11595:31:29"},{"kind":"number","nodeType":"YulLiteral","src":"11628:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11588:6:29"},"nodeType":"YulFunctionCall","src":"11588:42:29"},"nodeType":"YulExpressionStatement","src":"11588:42:29"},{"nodeType":"YulAssignment","src":"11639:62:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11655:9:29"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11674:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"11682:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11670:3:29"},"nodeType":"YulFunctionCall","src":"11670:15:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11691:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11687:3:29"},"nodeType":"YulFunctionCall","src":"11687:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11666:3:29"},"nodeType":"YulFunctionCall","src":"11666:29:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11651:3:29"},"nodeType":"YulFunctionCall","src":"11651:45:29"},{"kind":"number","nodeType":"YulLiteral","src":"11698:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11647:3:29"},"nodeType":"YulFunctionCall","src":"11647:54:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11639:4:29"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11409:9:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11420:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11428:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11439:4:29","type":""}],"src":"11319:388:29"},{"body":{"nodeType":"YulBlock","src":"11842:201:29","statements":[{"body":{"nodeType":"YulBlock","src":"11880:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11889:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11892:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11882:6:29"},"nodeType":"YulFunctionCall","src":"11882:12:29"},"nodeType":"YulExpressionStatement","src":"11882:12:29"}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"11858:10:29"},{"name":"endIndex","nodeType":"YulIdentifier","src":"11870:8:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11855:2:29"},"nodeType":"YulFunctionCall","src":"11855:24:29"},"nodeType":"YulIf","src":"11852:44:29"},{"body":{"nodeType":"YulBlock","src":"11929:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11938:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11941:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11931:6:29"},"nodeType":"YulFunctionCall","src":"11931:12:29"},"nodeType":"YulExpressionStatement","src":"11931:12:29"}]},"condition":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"11911:8:29"},{"name":"length","nodeType":"YulIdentifier","src":"11921:6:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11908:2:29"},"nodeType":"YulFunctionCall","src":"11908:20:29"},"nodeType":"YulIf","src":"11905:40:29"},{"nodeType":"YulAssignment","src":"11954:36:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11971:6:29"},{"name":"startIndex","nodeType":"YulIdentifier","src":"11979:10:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11967:3:29"},"nodeType":"YulFunctionCall","src":"11967:23:29"},"variableNames":[{"name":"offsetOut","nodeType":"YulIdentifier","src":"11954:9:29"}]},{"nodeType":"YulAssignment","src":"11999:38:29","value":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"12016:8:29"},{"name":"startIndex","nodeType":"YulIdentifier","src":"12026:10:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12012:3:29"},"nodeType":"YulFunctionCall","src":"12012:25:29"},"variableNames":[{"name":"lengthOut","nodeType":"YulIdentifier","src":"11999:9:29"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"11776:6:29","type":""},{"name":"length","nodeType":"YulTypedName","src":"11784:6:29","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"11792:10:29","type":""},{"name":"endIndex","nodeType":"YulTypedName","src":"11804:8:29","type":""}],"returnVariables":[{"name":"offsetOut","nodeType":"YulTypedName","src":"11817:9:29","type":""},{"name":"lengthOut","nodeType":"YulTypedName","src":"11828:9:29","type":""}],"src":"11712:331:29"},{"body":{"nodeType":"YulBlock","src":"12148:223:29","statements":[{"nodeType":"YulVariableDeclaration","src":"12158:29:29","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"12181:5:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12168:12:29"},"nodeType":"YulFunctionCall","src":"12168:19:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12162:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"12196:30:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12210:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"12215:10:29","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12206:3:29"},"nodeType":"YulFunctionCall","src":"12206:20:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"12200:2:29","type":""}]},{"nodeType":"YulAssignment","src":"12235:20:29","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"12248:2:29"},{"name":"_2","nodeType":"YulIdentifier","src":"12252:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12244:3:29"},"nodeType":"YulFunctionCall","src":"12244:11:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"12235:5:29"}]},{"body":{"nodeType":"YulBlock","src":"12286:79:29","statements":[{"nodeType":"YulAssignment","src":"12300:55:29","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"12317:2:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12329:1:29","type":"","value":"3"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12336:1:29","type":"","value":"4"},{"name":"len","nodeType":"YulIdentifier","src":"12339:3:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12332:3:29"},"nodeType":"YulFunctionCall","src":"12332:11:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12325:3:29"},"nodeType":"YulFunctionCall","src":"12325:19:29"},{"name":"_2","nodeType":"YulIdentifier","src":"12346:2:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12321:3:29"},"nodeType":"YulFunctionCall","src":"12321:28:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12313:3:29"},"nodeType":"YulFunctionCall","src":"12313:37:29"},{"name":"_2","nodeType":"YulIdentifier","src":"12352:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12309:3:29"},"nodeType":"YulFunctionCall","src":"12309:46:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"12300:5:29"}]}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"12270:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"12275:1:29","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12267:2:29"},"nodeType":"YulFunctionCall","src":"12267:10:29"},"nodeType":"YulIf","src":"12264:101:29"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"12123:5:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"12130:3:29","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"12138:5:29","type":""}],"src":"12048:323:29"},{"body":{"nodeType":"YulBlock","src":"12424:77:29","statements":[{"nodeType":"YulAssignment","src":"12434:16:29","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12445:1:29"},{"name":"y","nodeType":"YulIdentifier","src":"12448:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12441:3:29"},"nodeType":"YulFunctionCall","src":"12441:9:29"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"12434:3:29"}]},{"body":{"nodeType":"YulBlock","src":"12473:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"12475:16:29"},"nodeType":"YulFunctionCall","src":"12475:18:29"},"nodeType":"YulExpressionStatement","src":"12475:18:29"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12465:1:29"},{"name":"sum","nodeType":"YulIdentifier","src":"12468:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12462:2:29"},"nodeType":"YulFunctionCall","src":"12462:10:29"},"nodeType":"YulIf","src":"12459:36:29"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"12407:1:29","type":""},{"name":"y","nodeType":"YulTypedName","src":"12410:1:29","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"12416:3:29","type":""}],"src":"12376:125:29"},{"body":{"nodeType":"YulBlock","src":"12629:258:29","statements":[{"body":{"nodeType":"YulBlock","src":"12675:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12684:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12687:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12677:6:29"},"nodeType":"YulFunctionCall","src":"12677:12:29"},"nodeType":"YulExpressionStatement","src":"12677:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12650:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"12659:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12646:3:29"},"nodeType":"YulFunctionCall","src":"12646:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"12671:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12642:3:29"},"nodeType":"YulFunctionCall","src":"12642:32:29"},"nodeType":"YulIf","src":"12639:52:29"},{"nodeType":"YulAssignment","src":"12700:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12716:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12710:5:29"},"nodeType":"YulFunctionCall","src":"12710:16:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12700:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"12735:38:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12758:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"12769:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12754:3:29"},"nodeType":"YulFunctionCall","src":"12754:18:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12748:5:29"},"nodeType":"YulFunctionCall","src":"12748:25:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"12739:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12807:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"12782:24:29"},"nodeType":"YulFunctionCall","src":"12782:31:29"},"nodeType":"YulExpressionStatement","src":"12782:31:29"},{"nodeType":"YulAssignment","src":"12822:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"12832:5:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"12822:6:29"}]},{"nodeType":"YulAssignment","src":"12846:35:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12866:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"12877:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12862:3:29"},"nodeType":"YulFunctionCall","src":"12862:18:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12856:5:29"},"nodeType":"YulFunctionCall","src":"12856:25:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"12846:6:29"}]}]},"name":"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12579:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12590:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12602:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12610:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12618:6:29","type":""}],"src":"12506:381:29"},{"body":{"nodeType":"YulBlock","src":"13039:124:29","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13062:3:29"},{"name":"value0","nodeType":"YulIdentifier","src":"13067:6:29"},{"name":"value1","nodeType":"YulIdentifier","src":"13075:6:29"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"13049:12:29"},"nodeType":"YulFunctionCall","src":"13049:33:29"},"nodeType":"YulExpressionStatement","src":"13049:33:29"},{"nodeType":"YulVariableDeclaration","src":"13091:26:29","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13105:3:29"},{"name":"value1","nodeType":"YulIdentifier","src":"13110:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13101:3:29"},"nodeType":"YulFunctionCall","src":"13101:16:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13095:2:29","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"13133:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"13137:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13126:6:29"},"nodeType":"YulFunctionCall","src":"13126:13:29"},"nodeType":"YulExpressionStatement","src":"13126:13:29"},{"nodeType":"YulAssignment","src":"13148:9:29","value":{"name":"_1","nodeType":"YulIdentifier","src":"13155:2:29"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13148:3:29"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13007:3:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13012:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13020:6:29","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13031:3:29","type":""}],"src":"12892:271:29"}]},"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 abi_decode_array_address_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset_1), dataEnd)\n value2 := value2_1\n value3 := value3_1\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 panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\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 value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\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 abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\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 value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\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 }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let _3 := shl(5, _1)\n let dst := allocate_memory(add(_3, _2))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, _3), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\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_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), iszero(iszero(value2)))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\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_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"Method all not allowed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), value1)\n calldatacopy(add(headStart, 64), value0, value1)\n mstore(add(add(headStart, value1), 64), 0)\n tail := add(add(headStart, and(add(value1, 31), not(31))), 64)\n }\n function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n {\n if gt(startIndex, endIndex) { revert(0, 0) }\n if gt(endIndex, length) { revert(0, 0) }\n offsetOut := add(offset, startIndex)\n lengthOut := sub(endIndex, startIndex)\n }\n function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n {\n let _1 := calldataload(array)\n let _2 := shl(224, 0xffffffff)\n value := and(_1, _2)\n if lt(len, 4)\n {\n value := and(and(_1, shl(shl(3, sub(4, len)), _2)), _2)\n }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := mload(headStart)\n let value := mload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n value2 := mload(add(headStart, 64))\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}","id":29,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100e15760003560e01c8063bc197c811161007f578063dd46706411610059578063dd4670641461028c578063f23a6e61146102ac578063fc0c546a146102d8578063fe9fbb801461031057600080fd5b8063bc197c811461021c578063ce0617ec14610248578063d0ad25351461026c57600080fd5b80631f9838b5116100bb5780631f9838b51461017d5780638da5cb5b146101b85780639e5d4c49146101e5578063a4e2d6341461020557600080fd5b806301ffc9a7146100ed578063039721b114610122578063150b7a021461014457600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b5061010d610108366004610a4a565b610330565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004610ac7565b610397565b005b34801561015057600080fd5b5061016461015f366004610c02565b610560565b6040516001600160e01b03199091168152602001610119565b34801561018957600080fd5b5061010d610198366004610c6e565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101c457600080fd5b506101cd6105c8565b6040516001600160a01b039091168152602001610119565b6101f86101f3366004610ce9565b61065e565b6040516101199190610d39565b34801561021157600080fd5b50600054421061010d565b34801561022857600080fd5b50610164610237366004610dfc565b63bc197c8160e01b95945050505050565b34801561025457600080fd5b5061025e60005481565b604051908152602001610119565b34801561027857600080fd5b50610164610287366004610eaa565b610759565b34801561029857600080fd5b506101426102a7366004610eec565b61077a565b3480156102b857600080fd5b506101646102c7366004610f05565b63f23a6e6160e01b95945050505050565b3480156102e457600080fd5b506102ed61083f565b604080519384526001600160a01b03909216602084015290820152606001610119565b34801561031c57600080fd5b5061010d61032b366004610f6e565b610857565b6000806001600160e01b031983166301ffc9a760e01b148061036257506001600160e01b03198316630271189760e51b145b8061037d57506001600160e01b03198316631dfe9a6f60e31b145b9050801561038e5750600192915050565b50600092915050565b6000544210156103ba57604051636315bfbb60e01b815260040160405180910390fd5b60006103c46105c8565b9050336001600160a01b038216146103ef5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104105760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156105575784848281811061042d5761042d610f8b565b90506020020160208101906104429190610fa1565b6001600160a01b03841660009081526001602052604081209089898581811061046d5761046d610f8b565b90506020020160208101906104829190610f6e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106104de576104de610f8b565b90506020020160208101906104f39190610f6e565b87878581811061050557610505610f8b565b905060200201602081019061051a9190610fa1565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a18061054f81610fd9565b915050610413565b50505050505050565b60008060008061056e610940565b925092509250468314801561058b57506001600160a01b03821633145b801561059657508581145b156105b45760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806105d6610940565b9250925092504683146105ed576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106569190610ff2565b935050505090565b606061066933610857565b6106865760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156106a957604051636315bfbb60e01b815260040160405180910390fd5b82826106b58282610993565b6106fe5760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b85876001600160a01b03167f47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d2878760405161073a92919061100f565b60405180910390a361074e878787876109ce565b979650505050505050565b6000610768600482848661103e565b61077191611068565b90505b92915050565b6107826105c8565b6001600160a01b0316336001600160a01b0316146107b35760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156107d657604051636315bfbb60e01b815260040160405180910390fd5b6107e4426301e13380611098565b811115610804576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b600080600061084c610940565b925092509250909192565b6000806000610864610940565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190610ff2565b9050806001600160a01b0316856001600160a01b0316036108fc57506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff161561093557506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c8080602001905181019061098791906110ab565b93509350935050909192565b6000806109a08484610759565b90506001600160e01b0319811663095ea7b360e01b036109c4576000915050610774565b5060019392505050565b60606000856001600160a01b03168585856040516109ed9291906110e4565b60006040518083038185875af1925050503d8060008114610a2a576040519150601f19603f3d011682016040523d82523d6000602084013e610a2f565b606091505b509250905080610a4157815160208301fd5b50949350505050565b600060208284031215610a5c57600080fd5b81356001600160e01b031981168114610a7457600080fd5b9392505050565b60008083601f840112610a8d57600080fd5b50813567ffffffffffffffff811115610aa557600080fd5b6020830191508360208260051b8501011115610ac057600080fd5b9250929050565b60008060008060408587031215610add57600080fd5b843567ffffffffffffffff80821115610af557600080fd5b610b0188838901610a7b565b90965094506020870135915080821115610b1a57600080fd5b50610b2787828801610a7b565b95989497509550505050565b6001600160a01b0381168114610b4857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b8a57610b8a610b4b565b604052919050565b600082601f830112610ba357600080fd5b813567ffffffffffffffff811115610bbd57610bbd610b4b565b610bd0601f8201601f1916602001610b61565b818152846020838601011115610be557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610c1857600080fd5b8435610c2381610b33565b93506020850135610c3381610b33565b925060408501359150606085013567ffffffffffffffff811115610c5657600080fd5b610c6287828801610b92565b91505092959194509250565b60008060408385031215610c8157600080fd5b8235610c8c81610b33565b91506020830135610c9c81610b33565b809150509250929050565b60008083601f840112610cb957600080fd5b50813567ffffffffffffffff811115610cd157600080fd5b602083019150836020828501011115610ac057600080fd5b60008060008060608587031215610cff57600080fd5b8435610d0a81610b33565b935060208501359250604085013567ffffffffffffffff811115610d2d57600080fd5b610b2787828801610ca7565b600060208083528351808285015260005b81811015610d6657858101830151858201604001528201610d4a565b506000604082860101526040601f19601f8301168501019250505092915050565b600082601f830112610d9857600080fd5b8135602067ffffffffffffffff821115610db457610db4610b4b565b8160051b610dc3828201610b61565b9283528481018201928281019087851115610ddd57600080fd5b83870192505b8483101561074e57823582529183019190830190610de3565b600080600080600060a08688031215610e1457600080fd5b8535610e1f81610b33565b94506020860135610e2f81610b33565b9350604086013567ffffffffffffffff80821115610e4c57600080fd5b610e5889838a01610d87565b94506060880135915080821115610e6e57600080fd5b610e7a89838a01610d87565b93506080880135915080821115610e9057600080fd5b50610e9d88828901610b92565b9150509295509295909350565b60008060208385031215610ebd57600080fd5b823567ffffffffffffffff811115610ed457600080fd5b610ee085828601610ca7565b90969095509350505050565b600060208284031215610efe57600080fd5b5035919050565b600080600080600060a08688031215610f1d57600080fd5b8535610f2881610b33565b94506020860135610f3881610b33565b93506040860135925060608601359150608086013567ffffffffffffffff811115610f6257600080fd5b610e9d88828901610b92565b600060208284031215610f8057600080fd5b8135610a7481610b33565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610fb357600080fd5b81358015158114610a7457600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610feb57610feb610fc3565b5060010190565b60006020828403121561100457600080fd5b8151610a7481610b33565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000808585111561104e57600080fd5b8386111561105b57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156110905780818660040360031b1b83161692505b505092915050565b8082018082111561077457610774610fc3565b6000806000606084860312156110c057600080fd5b8351925060208401516110d281610b33565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220eb423394a29a0abcff8a03bc98ea584b29ef60c7e1a560777f769e6a618feb1564736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE1 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBC197C81 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xDD467064 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2AC JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xFE9FBB80 EQ PUSH2 0x310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1F9838B5 GT PUSH2 0xBB JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x9E5D4C49 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xE8 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x108 CALLDATASIZE PUSH1 0x4 PUSH2 0xA4A JUMP JUMPDEST PUSH2 0x330 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 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x13D CALLDATASIZE PUSH1 0x4 PUSH2 0xAC7 JUMP JUMPDEST PUSH2 0x397 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xC02 JUMP JUMPDEST PUSH2 0x560 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xC6E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST PUSH2 0x1F8 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0xCE9 JUMP JUMPDEST PUSH2 0x65E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0xD39 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x10D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x237 CALLDATASIZE PUSH1 0x4 PUSH2 0xDFC JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25E PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0xEAA JUMP JUMPDEST PUSH2 0x759 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0xEEC JUMP JUMPDEST PUSH2 0x77A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xF05 JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2ED PUSH2 0x83F JUMP JUMPDEST 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 0x119 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0xF6E JUMP JUMPDEST PUSH2 0x857 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x362 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x37D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1DFE9A6F PUSH1 0xE3 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x38E JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x3BA JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C4 PUSH2 0x5C8 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x3EF JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x410 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x557 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x42D JUMPI PUSH2 0x42D PUSH2 0xF8B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x442 SWAP2 SWAP1 PUSH2 0xFA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x46D JUMPI PUSH2 0x46D PUSH2 0xF8B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x482 SWAP2 SWAP1 PUSH2 0xF6E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x4DE JUMPI PUSH2 0x4DE PUSH2 0xF8B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4F3 SWAP2 SWAP1 PUSH2 0xF6E JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x505 JUMPI PUSH2 0x505 PUSH2 0xF8B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x51A SWAP2 SWAP1 PUSH2 0xFA1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x54F DUP2 PUSH2 0xFD9 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x413 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x56E PUSH2 0x940 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x58B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x596 JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x5D6 PUSH2 0x940 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x5ED JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x632 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 0x656 SWAP2 SWAP1 PUSH2 0xFF2 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x669 CALLER PUSH2 0x857 JUMP JUMPDEST PUSH2 0x686 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x6A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 PUSH2 0x6B5 DUP3 DUP3 PUSH2 0x993 JUMP JUMPDEST PUSH2 0x6FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x47D99AD340F52DA66535AFF7E10DA1CEB85A32BCBD9FA1C42314D194545E14D2 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x73A SWAP3 SWAP2 SWAP1 PUSH2 0x100F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x74E DUP8 DUP8 DUP8 DUP8 PUSH2 0x9CE JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x768 PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x103E JUMP JUMPDEST PUSH2 0x771 SWAP2 PUSH2 0x1068 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x782 PUSH2 0x5C8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7B3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x7D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E4 TIMESTAMP PUSH4 0x1E13380 PUSH2 0x1098 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x804 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x84C PUSH2 0x940 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x864 PUSH2 0x940 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0x8B2 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 0x8D6 SWAP2 SWAP1 PUSH2 0xFF2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x8FC JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x935 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x987 SWAP2 SWAP1 PUSH2 0x10AB JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x9A0 DUP5 DUP5 PUSH2 0x759 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0x9C4 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x9ED SWAP3 SWAP2 SWAP1 PUSH2 0x10E4 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 0xA2A 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 0xA2F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0xA41 JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xA74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xA8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xADD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xAF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB01 DUP9 DUP4 DUP10 ADD PUSH2 0xA7B JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xB1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB27 DUP8 DUP3 DUP9 ADD PUSH2 0xA7B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xB8A JUMPI PUSH2 0xB8A PUSH2 0xB4B JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBD JUMPI PUSH2 0xBBD PUSH2 0xB4B JUMP JUMPDEST PUSH2 0xBD0 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xB61 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xBE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xC23 DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xC33 DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC62 DUP8 DUP3 DUP9 ADD PUSH2 0xB92 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xC8C DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xC9C DUP2 PUSH2 0xB33 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xCD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xCFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xD0A DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB27 DUP8 DUP3 DUP9 ADD PUSH2 0xCA7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD66 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xD4A JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xDB4 JUMPI PUSH2 0xDB4 PUSH2 0xB4B JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0xDC3 DUP3 DUP3 ADD PUSH2 0xB61 JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0xDDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x74E JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0xDE3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xE14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xE1F DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xE2F DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE58 DUP10 DUP4 DUP11 ADD PUSH2 0xD87 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7A DUP10 DUP4 DUP11 ADD PUSH2 0xD87 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9D DUP9 DUP3 DUP10 ADD PUSH2 0xB92 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xED4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE0 DUP6 DUP3 DUP7 ADD PUSH2 0xCA7 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xF1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xF28 DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0xF38 DUP2 PUSH2 0xB33 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE9D DUP9 DUP3 DUP10 ADD PUSH2 0xB92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA74 DUP2 PUSH2 0xB33 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xA74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0xFEB JUMPI PUSH2 0xFEB PUSH2 0xFC3 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1004 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA74 DUP2 PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE DUP2 PUSH1 0x20 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x40 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x104E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x105B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x1090 JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x774 JUMPI PUSH2 0x774 PUSH2 0xFC3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x10C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x10D2 DUP2 PUSH2 0xB33 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB TIMESTAMP CALLER SWAP5 LOG2 SWAP11 EXP 0xBC SELFDESTRUCT DUP11 SUB 0xBC SWAP9 0xEA PC 0x4B 0x29 0xEF PUSH1 0xC7 0xE1 0xA5 PUSH1 0x77 PUSH32 0x769E6A618FEB1564736F6C634300081100330000000000000000000000000000 ","sourceMap":"695:7219:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4901:393;;;;;;;;;;-1:-1:-1;4901:393:17;;;;;:::i;:::-;;:::i;:::-;;;470:14:29;;463:22;445:41;;433:2;418:18;4901:393:17;;;;;;;;2369:528;;;;;;;;;;-1:-1:-1;2369:528:17;;;;;:::i;:::-;;:::i;:::-;;5439:526;;;;;;;;;;-1:-1:-1;5439:526:17;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3559:33:29;;;3541:52;;3529:2;3514:18;5439:526:17;3397:202:29;953:63:17;;;;;;;;;;-1:-1:-1;953:63:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;3903:310;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;4161:32:29;;;4143:51;;4131:2;4116:18;3903:310:17;3997:203:29;2017:289:17;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3288:100::-;;;;;;;;;;-1:-1:-1;3329:4:17;3352:11;3366:15;-1:-1:-1;3288:100:17;;6368:244;;;;;;;;;;-1:-1:-1;6368:244:17;;;;;:::i;:::-;-1:-1:-1;;;6368:244:17;;;;;;;;859:26;;;;;;;;;;;;;;;;;;;7664:25:29;;;7652:2;7637:18;859:26:17;7518:177:29;7656:118:17;;;;;;;;;;-1:-1:-1;7656:118:17;;;;;:::i;:::-;;:::i;2960:249::-;;;;;;;;;;-1:-1:-1;2960:249:17;;;;;:::i;:::-;;:::i;6055:216::-;;;;;;;;;;-1:-1:-1;6055:216:17;;;;;:::i;:::-;-1:-1:-1;;;6055:216:17;;;;;;;;3520:220;;;;;;;;;;;;;:::i;:::-;;;;9240:25:29;;;-1:-1:-1;;;;;9301:32:29;;;9296:2;9281:18;;9274:60;9350:18;;;9343:34;9228:2;9213:18;3520:220:17;9038:345:29;4284:480:17;;;;;;;;;;-1:-1:-1;4284:480:17;;;;;:::i;:::-;;:::i;4901:393::-;5011:4;;-1:-1:-1;;;;;;5053:40:17;;-1:-1:-1;;;5053:40:17;;:105;;-1:-1:-1;;;;;;;5109:49:17;;-1:-1:-1;;;5109:49:17;5053:105;:169;;;-1:-1:-1;;;;;;;5174:48:17;;-1:-1:-1;;;5174:48:17;5053:169;5031:191;;5237:14;5233:31;;;-1:-1:-1;5260:4:17;;4901:393;-1:-1:-1;;4901:393:17:o;5233:31::-;-1:-1:-1;5282:5:17;;4901:393;-1:-1:-1;;4901:393:17:o;2369:528::-;3329:4;3352:11;3366:15;-1:-1:-1;1710:38:17;;;1733:15;;-1:-1:-1;;;1733:15:17;;;;;;;;;;;1710:38;2505:14:::1;2522:7;:5;:7::i;:::-;2505:24:::0;-1:-1:-1;2543:10:17::1;-1:-1:-1::0;;;;;2543:20:17;::::1;;2539:48;;2572:15;;-1:-1:-1::0;;;2572:15:17::1;;;;;;;;;;;2539:48;2615:7:::0;2644:29;;::::1;2640:56;;2682:14;;-1:-1:-1::0;;;2682:14:17::1;;;;;;;;;;;2640:56;2712:9;2707:184;2731:6;2727:1;:10;2707:184;;;2792:12;;2805:1;2792:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2758:19:17;::::1;;::::0;;;:11:::1;:19;::::0;;;;;2778:7;;2786:1;2778:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2758:31:17::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;2758:31:17;:49;;-1:-1:-1;;2758:49:17::1;::::0;::::1;;::::0;;;::::1;::::0;;2826:54:::1;2844:6:::0;2852:7;;2860:1;2852:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2864:12;;2877:1;2864:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2826:54;::::0;;-1:-1:-1;;;;;10302:15:29;;;10284:34;;10354:15;;;;10349:2;10334:18;;10327:43;10413:14;10406:22;10386:18;;;10379:50;10234:2;10219:18;2826:54:17::1;;;;;;;2739:3:::0;::::1;::::0;::::1;:::i;:::-;;;;2707:184;;;;2495:402;;2369:528:::0;;;;:::o;5439:526::-;5590:6;5622:15;5651:21;5686:15;5714:25;:23;:25::i;:::-;5608:131;;;;;;5778:13;5767:7;:24;:67;;;;-1:-1:-1;;;;;;5807:27:17;;5824:10;5807:27;5767:67;:109;;;;;5861:15;5850:7;:26;5767:109;5750:160;;;5894:16;;-1:-1:-1;;;5894:16:17;;;;;;;;;;;5750:160;-1:-1:-1;;;;5928:30:17;5439:526;-1:-1:-1;;;;;;;5439:526:17:o;3903:310::-;3941:7;3974:15;4003:21;4038:15;4066:25;:23;:25::i;:::-;3960:131;;;;;;4117:13;4106:7;:24;4102:47;;4147:1;4132:17;;;;;3903:310;:::o;4102:47::-;4167:39;;-1:-1:-1;;;4167:39:17;;;;;7664:25:29;;;-1:-1:-1;;;;;4167:30:17;;;;;7637:18:29;;4167:39:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4160:46;;;;;3903:310;:::o;2017:289::-;2194:12;1547:24;1560:10;1547:12;:24::i;:::-;1542:53;;1580:15;;-1:-1:-1;;;1580:15:17;;;;;;;;;;;1542:53;3329:4;3352:11;3366:15;-1:-1:-1;1710:38:17::1;;;1733:15;;-1:-1:-1::0;;;1733:15:17::1;;;;;;;;;;;1710:38;2179:4:::2;;7847:20;7861:5;;7847:13;:20::i;:::-;7839:55;;;::::0;-1:-1:-1;;;7839:55:17;;11170:2:29;7839:55:17::2;::::0;::::2;11152:21:29::0;11209:2;11189:18;;;11182:30;-1:-1:-1;;;11228:18:29;;;11221:52;11290:18;;7839:55:17::2;;;;;;;;2247:5:::3;2243:2;-1:-1:-1::0;;;;;2223:36:17::3;;2254:4;;2223:36;;;;;;;:::i;:::-;;;;;;;;2277:22;2283:2;2287:5;2294:4;;2277:5;:22::i;:::-;2270:29:::0;2017:289;-1:-1:-1;;;;;;;2017:289:17:o;7656:118::-;7725:6;7757:9;7764:1;7725:6;7757:5;;:9;:::i;:::-;7750:17;;;:::i;:::-;7743:24;;7656:118;;;;;:::o;2960:249::-;1375:7;:5;:7::i;:::-;-1:-1:-1;;;;;1361:21:17;:10;-1:-1:-1;;;;;1361:21:17;;1357:49;;1391:15;;-1:-1:-1;;;1391:15:17;;;;;;;;;;;1357:49;3329:4;3352:11;3366:15;-1:-1:-1;1710:38:17::1;;;1733:15;;-1:-1:-1::0;;;1733:15:17::1;;;;;;;;;;;1710:38;3057:26:::2;:15;3075:8;3057:26;:::i;:::-;3042:12;:41;3038:86;;;3104:20;;-1:-1:-1::0;;;3104:20:17::2;;;;;;;;;;;3038:86;3135:11;:26:::0;;;3177:25:::2;::::0;7664::29;;;3177::17::2;::::0;7652:2:29;7637:18;3177:25:17::2;;;;;;;2960:249:::0;:::o;3520:220::-;3597:15;3626:21;3661:15;3708:25;:23;:25::i;:::-;3701:32;;;;;;3520:220;;;:::o;4284:480::-;4343:4;4387:21;4422:15;4450:25;:23;:25::i;:::-;4502:39;;-1:-1:-1;;;4502:39:17;;;;;7664:25:29;;;4359:116:17;;-1:-1:-1;4359:116:17;-1:-1:-1;4485:14:17;;-1:-1:-1;;;;;;4502:30:17;;;;;7637:18:29;;4502:39:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4485:56;;4599:6;-1:-1:-1;;;;;4589:16:17;:6;-1:-1:-1;;;;;4589:16:17;;4585:33;;-1:-1:-1;4614:4:17;;4284:480;-1:-1:-1;;;;4284:480:17:o;4585:33::-;-1:-1:-1;;;;;4694:19:17;;;;;;;:11;:19;;;;;;;;:27;;;;;;;;;;;;4690:44;;;-1:-1:-1;4730:4:17;;4284:480;-1:-1:-1;;;;4284:480:17:o;4690:44::-;-1:-1:-1;4752:5:17;;4284:480;-1:-1:-1;;;;4284:480:17:o;90:406:25:-;263:15;;;273:4;263:15;;;;;;;;;167:7;;;;;;;;263:15;;;;;;;;;;;-1:-1:-1;263:15:25;241:37;;410:4;404;397;389:6;385:17;374:9;362:53;453:6;442:47;;;;;;;;;;;;:::i;:::-;435:54;;;;;;;90:406;;;:::o;7391:259:17:-;7454:4;7470:16;7489:23;7506:5;;7489:16;:23::i;:::-;7470:42;-1:-1:-1;;;;;;;7560:23:17;;-1:-1:-1;;;7560:23:17;7556:66;;7606:5;7599:12;;;;;7556:66;-1:-1:-1;7639:4:17;;7391:259;-1:-1:-1;;;7391:259:17:o;6657:345::-;6768:19;6799:12;6841:2;-1:-1:-1;;;;;6841:7:17;6856:5;6863:4;;6841:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6821:47:17;-1:-1:-1;6821:47:17;-1:-1:-1;6821:47:17;6879:117;;6964:6;6958:13;6953:2;6945:6;6941:15;6934:38;6879:117;6789:213;6657:345;;;;;;:::o;14:286:29:-;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:29;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:29:o;497:367::-;560:8;570:6;624:3;617:4;609:6;605:17;601:27;591:55;;642:1;639;632:12;591:55;-1:-1:-1;665:20:29;;708:18;697:30;;694:50;;;740:1;737;730:12;694:50;777:4;769:6;765:17;753:29;;837:3;830:4;820:6;817:1;813:14;805:6;801:27;797:38;794:47;791:67;;;854:1;851;844:12;791:67;497:367;;;;;:::o;869:770::-;988:6;996;1004;1012;1065:2;1053:9;1044:7;1040:23;1036:32;1033:52;;;1081:1;1078;1071:12;1033:52;1121:9;1108:23;1150:18;1191:2;1183:6;1180:14;1177:34;;;1207:1;1204;1197:12;1177:34;1246:70;1308:7;1299:6;1288:9;1284:22;1246:70;:::i;:::-;1335:8;;-1:-1:-1;1220:96:29;-1:-1:-1;1423:2:29;1408:18;;1395:32;;-1:-1:-1;1439:16:29;;;1436:36;;;1468:1;1465;1458:12;1436:36;;1507:72;1571:7;1560:8;1549:9;1545:24;1507:72;:::i;:::-;869:770;;;;-1:-1:-1;1598:8:29;-1:-1:-1;;;;869:770:29:o;1644:131::-;-1:-1:-1;;;;;1719:31:29;;1709:42;;1699:70;;1765:1;1762;1755:12;1699:70;1644:131;:::o;1780:127::-;1841:10;1836:3;1832:20;1829:1;1822:31;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;1912:275;1983:2;1977:9;2048:2;2029:13;;-1:-1:-1;;2025:27:29;2013:40;;2083:18;2068:34;;2104:22;;;2065:62;2062:88;;;2130:18;;:::i;:::-;2166:2;2159:22;1912:275;;-1:-1:-1;1912:275:29:o;2192:530::-;2234:5;2287:3;2280:4;2272:6;2268:17;2264:27;2254:55;;2305:1;2302;2295:12;2254:55;2341:6;2328:20;2367:18;2363:2;2360:26;2357:52;;;2389:18;;:::i;:::-;2433:55;2476:2;2457:13;;-1:-1:-1;;2453:27:29;2482:4;2449:38;2433:55;:::i;:::-;2513:2;2504:7;2497:19;2559:3;2552:4;2547:2;2539:6;2535:15;2531:26;2528:35;2525:55;;;2576:1;2573;2566:12;2525:55;2641:2;2634:4;2626:6;2622:17;2615:4;2606:7;2602:18;2589:55;2689:1;2664:16;;;2682:4;2660:27;2653:38;;;;2668:7;2192:530;-1:-1:-1;;;2192:530:29:o;2727:665::-;2822:6;2830;2838;2846;2899:3;2887:9;2878:7;2874:23;2870:33;2867:53;;;2916:1;2913;2906:12;2867:53;2955:9;2942:23;2974:31;2999:5;2974:31;:::i;:::-;3024:5;-1:-1:-1;3081:2:29;3066:18;;3053:32;3094:33;3053:32;3094:33;:::i;:::-;3146:7;-1:-1:-1;3200:2:29;3185:18;;3172:32;;-1:-1:-1;3255:2:29;3240:18;;3227:32;3282:18;3271:30;;3268:50;;;3314:1;3311;3304:12;3268:50;3337:49;3378:7;3369:6;3358:9;3354:22;3337:49;:::i;:::-;3327:59;;;2727:665;;;;;;;:::o;3604:388::-;3672:6;3680;3733:2;3721:9;3712:7;3708:23;3704:32;3701:52;;;3749:1;3746;3739:12;3701:52;3788:9;3775:23;3807:31;3832:5;3807:31;:::i;:::-;3857:5;-1:-1:-1;3914:2:29;3899:18;;3886:32;3927:33;3886:32;3927:33;:::i;:::-;3979:7;3969:17;;;3604:388;;;;;:::o;4205:347::-;4256:8;4266:6;4320:3;4313:4;4305:6;4301:17;4297:27;4287:55;;4338:1;4335;4328:12;4287:55;-1:-1:-1;4361:20:29;;4404:18;4393:30;;4390:50;;;4436:1;4433;4426:12;4390:50;4473:4;4465:6;4461:17;4449:29;;4525:3;4518:4;4509:6;4501;4497:19;4493:30;4490:39;4487:59;;;4542:1;4539;4532:12;4557:612;4645:6;4653;4661;4669;4722:2;4710:9;4701:7;4697:23;4693:32;4690:52;;;4738:1;4735;4728:12;4690:52;4777:9;4764:23;4796:31;4821:5;4796:31;:::i;:::-;4846:5;-1:-1:-1;4898:2:29;4883:18;;4870:32;;-1:-1:-1;4953:2:29;4938:18;;4925:32;4980:18;4969:30;;4966:50;;;5012:1;5009;5002:12;4966:50;5051:58;5101:7;5092:6;5081:9;5077:22;5051:58;:::i;5174:546::-;5284:4;5313:2;5342;5331:9;5324:21;5374:6;5368:13;5417:6;5412:2;5401:9;5397:18;5390:34;5442:1;5452:140;5466:6;5463:1;5460:13;5452:140;;;5561:14;;;5557:23;;5551:30;5527:17;;;5546:2;5523:26;5516:66;5481:10;;5452:140;;;5456:3;5641:1;5636:2;5627:6;5616:9;5612:22;5608:31;5601:42;5711:2;5704;5700:7;5695:2;5687:6;5683:15;5679:29;5668:9;5664:45;5660:54;5652:62;;;;5174:546;;;;:::o;5725:712::-;5779:5;5832:3;5825:4;5817:6;5813:17;5809:27;5799:55;;5850:1;5847;5840:12;5799:55;5886:6;5873:20;5912:4;5935:18;5931:2;5928:26;5925:52;;;5957:18;;:::i;:::-;6003:2;6000:1;5996:10;6026:28;6050:2;6046;6042:11;6026:28;:::i;:::-;6088:15;;;6158;;;6154:24;;;6119:12;;;;6190:15;;;6187:35;;;6218:1;6215;6208:12;6187:35;6254:2;6246:6;6242:15;6231:26;;6266:142;6282:6;6277:3;6274:15;6266:142;;;6348:17;;6336:30;;6299:12;;;;6386;;;;6266:142;;6442:1071;6596:6;6604;6612;6620;6628;6681:3;6669:9;6660:7;6656:23;6652:33;6649:53;;;6698:1;6695;6688:12;6649:53;6737:9;6724:23;6756:31;6781:5;6756:31;:::i;:::-;6806:5;-1:-1:-1;6863:2:29;6848:18;;6835:32;6876:33;6835:32;6876:33;:::i;:::-;6928:7;-1:-1:-1;6986:2:29;6971:18;;6958:32;7009:18;7039:14;;;7036:34;;;7066:1;7063;7056:12;7036:34;7089:61;7142:7;7133:6;7122:9;7118:22;7089:61;:::i;:::-;7079:71;;7203:2;7192:9;7188:18;7175:32;7159:48;;7232:2;7222:8;7219:16;7216:36;;;7248:1;7245;7238:12;7216:36;7271:63;7326:7;7315:8;7304:9;7300:24;7271:63;:::i;:::-;7261:73;;7387:3;7376:9;7372:19;7359:33;7343:49;;7417:2;7407:8;7404:16;7401:36;;;7433:1;7430;7423:12;7401:36;;7456:51;7499:7;7488:8;7477:9;7473:24;7456:51;:::i;:::-;7446:61;;;6442:1071;;;;;;;;:::o;7700:409::-;7770:6;7778;7831:2;7819:9;7810:7;7806:23;7802:32;7799:52;;;7847:1;7844;7837:12;7799:52;7887:9;7874:23;7920:18;7912:6;7909:30;7906:50;;;7952:1;7949;7942:12;7906:50;7991:58;8041:7;8032:6;8021:9;8017:22;7991:58;:::i;:::-;8068:8;;7965:84;;-1:-1:-1;7700:409:29;-1:-1:-1;;;;7700:409:29:o;8114:180::-;8173:6;8226:2;8214:9;8205:7;8201:23;8197:32;8194:52;;;8242:1;8239;8232:12;8194:52;-1:-1:-1;8265:23:29;;8114:180;-1:-1:-1;8114:180:29:o;8299:734::-;8403:6;8411;8419;8427;8435;8488:3;8476:9;8467:7;8463:23;8459:33;8456:53;;;8505:1;8502;8495:12;8456:53;8544:9;8531:23;8563:31;8588:5;8563:31;:::i;:::-;8613:5;-1:-1:-1;8670:2:29;8655:18;;8642:32;8683:33;8642:32;8683:33;:::i;:::-;8735:7;-1:-1:-1;8789:2:29;8774:18;;8761:32;;-1:-1:-1;8840:2:29;8825:18;;8812:32;;-1:-1:-1;8895:3:29;8880:19;;8867:33;8923:18;8912:30;;8909:50;;;8955:1;8952;8945:12;8909:50;8978:49;9019:7;9010:6;8999:9;8995:22;8978:49;:::i;9388:247::-;9447:6;9500:2;9488:9;9479:7;9475:23;9471:32;9468:52;;;9516:1;9513;9506:12;9468:52;9555:9;9542:23;9574:31;9599:5;9574:31;:::i;9640:127::-;9701:10;9696:3;9692:20;9689:1;9682:31;9732:4;9729:1;9722:15;9756:4;9753:1;9746:15;9772:273;9828:6;9881:2;9869:9;9860:7;9856:23;9852:32;9849:52;;;9897:1;9894;9887:12;9849:52;9936:9;9923:23;9989:5;9982:13;9975:21;9968:5;9965:32;9955:60;;10011:1;10008;10001:12;10440:127;10501:10;10496:3;10492:20;10489:1;10482:31;10532:4;10529:1;10522:15;10556:4;10553:1;10546:15;10572:135;10611:3;10632:17;;;10629:43;;10652:18;;:::i;:::-;-1:-1:-1;10699:1:29;10688:13;;10572:135::o;10712:251::-;10782:6;10835:2;10823:9;10814:7;10810:23;10806:32;10803:52;;;10851:1;10848;10841:12;10803:52;10883:9;10877:16;10902:31;10927:5;10902:31;:::i;11319:388::-;11476:2;11465:9;11458:21;11515:6;11510:2;11499:9;11495:18;11488:34;11572:6;11564;11559:2;11548:9;11544:18;11531:48;11628:1;11599:22;;;11623:2;11595:31;;;11588:42;;;;11691:2;11670:15;;;-1:-1:-1;;11666:29:29;11651:45;11647:54;;11319:388;-1:-1:-1;11319:388:29:o;11712:331::-;11817:9;11828;11870:8;11858:10;11855:24;11852:44;;;11892:1;11889;11882:12;11852:44;11921:6;11911:8;11908:20;11905:40;;;11941:1;11938;11931:12;11905:40;-1:-1:-1;;11967:23:29;;;12012:25;;;;;-1:-1:-1;11712:331:29:o;12048:323::-;-1:-1:-1;;;;;;12168:19:29;;12244:11;;;;12275:1;12267:10;;12264:101;;;12352:2;12346;12339:3;12336:1;12332:11;12329:1;12325:19;12321:28;12317:2;12313:37;12309:46;12300:55;;12264:101;;;12048:323;;;;:::o;12376:125::-;12441:9;;;12462:10;;;12459:36;;;12475:18;;:::i;12506:381::-;12602:6;12610;12618;12671:2;12659:9;12650:7;12646:23;12642:32;12639:52;;;12687:1;12684;12677:12;12639:52;12716:9;12710:16;12700:26;;12769:2;12758:9;12754:18;12748:25;12782:31;12807:5;12782:31;:::i;:::-;12832:5;12822:15;;;12877:2;12866:9;12862:18;12856:25;12846:35;;12506:381;;;;;:::o;12892:271::-;13075:6;13067;13062:3;13049:33;13031:3;13101:16;;13126:13;;;13101:16;12892:271;-1:-1:-1;12892:271:29:o"},"gasEstimates":{"creation":{"codeDepositCost":"878800","executionCost":"916","totalCost":"879716"},"external":{"executeCall(address,uint256,bytes)":"infinite","isAuthorized(address)":"infinite","isLocked()":"2381","lock(uint256)":"infinite","lockedUntil()":"2340","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"infinite","onERC1155Received(address,address,uint256,uint256,bytes)":"infinite","onERC721Received(address,address,uint256,bytes)":"infinite","owner()":"infinite","parseFirst4Bytes(bytes)":"832","permissions(address,address)":"infinite","setPermissions(address[],bool[])":"infinite","supportsInterface(bytes4)":"538","token()":"infinite"},"internal":{"_call(address,uint256,bytes calldata)":"infinite","_callStatic(address,bytes calldata)":"infinite","allowedMethod(bytes calldata)":"infinite"}},"methodIdentifiers":{"executeCall(address,uint256,bytes)":"9e5d4c49","isAuthorized(address)":"fe9fbb80","isLocked()":"a4e2d634","lock(uint256)":"dd467064","lockedUntil()":"ce0617ec","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","owner()":"8da5cb5b","parseFirst4Bytes(bytes)":"d0ad2535","permissions(address,address)":"1f9838b5","setPermissions(address[],bool[])":"039721b1","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccountLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxLockTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipCycle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockedUntil\",\"type\":\"uint256\"}],\"name\":\"LockUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"OverrideUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasPermission\",\"type\":\"bool\"}],\"name\":\"PermissionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"TransactionExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isAuthorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_lockedUntil\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockedUntil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"receivedTokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"parseFirst4Bytes\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"permissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"callers\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"_permissions\",\"type\":\"bool[]\"}],\"name\":\"setPermissions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"kind\":\"dev\",\"methods\":{\"executeCall(address,uint256,bytes)\":{\"details\":\"executes a low-level call against an account if the caller is authorized to make calls\"},\"isAuthorized(address)\":{\"details\":\"Returns the authorization status for a given caller\"},\"isLocked()\":{\"details\":\"returns the current lock status of the account as a boolean\"},\"lock(uint256)\":{\"details\":\"locks the account until a certain timestamp\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Allows ERC-1155 token batches to be received. This function can be overriden.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Allows ERC-1155 tokens to be received. This function can be overriden.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden.\"},\"owner()\":{\"details\":\"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account.\"},\"setPermissions(address[],bool[])\":{\"details\":\"grants a given caller execution permissions\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if a given interfaceId is supported by this account. This method can be extended by an override.\"},\"token()\":{\"details\":\"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account.\"}},\"stateVariables\":{\"lockedUntil\":{\"details\":\"timestamp at which this account will be unlocked\"},\"permissions\":{\"details\":\"mapping from owner => caller => has permissions\"}},\"title\":\"A smart contract account owned by a single ERC721 token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Account.sol\":\"Account\"},\"evmVersion\":\"london\",\"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 v4.4.1 (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n *\\n * _Available since v4.1._\\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 _data\\n */\\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\nimport \\\"./interfaces/IERC6551Account.sol\\\";\\nimport \\\"./lib/ERC6551AccountLib.sol\\\";\\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/token/ERC1155/IERC1155Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/interfaces/IERC1271.sol\\\";\\n\\nerror NotAuthorized();\\nerror InvalidInput();\\nerror AccountLocked();\\nerror ExceedsMaxLockTime();\\nerror UntrustedImplementation();\\nerror OwnershipCycle();\\n\\n/**\\n * @title A smart contract account owned by a single ERC721 token\\n */\\ncontract Account is\\n IERC165,\\n IERC6551Account,\\n IERC721Receiver,\\n IERC1155Receiver\\n{\\n /// @dev timestamp at which this account will be unlocked\\n uint256 public lockedUntil;\\n\\n /// @dev mapping from owner => caller => has permissions\\n mapping(address => mapping(address => bool)) public permissions;\\n\\n event OverrideUpdated(\\n address owner,\\n bytes4 selector,\\n address implementation\\n );\\n\\n event PermissionUpdated(address owner, address caller, bool hasPermission);\\n\\n event LockUpdated(uint256 lockedUntil);\\n\\n /// @dev reverts if caller is not the owner of the account\\n modifier onlyOwner() {\\n if (msg.sender != owner()) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if caller is not authorized to execute on this account\\n modifier onlyAuthorized() {\\n if (!isAuthorized(msg.sender)) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if this account is currently locked\\n modifier onlyUnlocked() {\\n if (isLocked()) revert AccountLocked();\\n _;\\n }\\n\\n constructor() {}\\n\\n /// @dev allows eth transfers by default, but allows account owner to override\\n receive() external payable {\\n }\\n\\n /// @dev executes a low-level call against an account if the caller is authorized to make calls\\n function executeCall(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) external payable onlyAuthorized onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) {\\n emit TransactionExecuted(to, value, data);\\n\\n return _call(to, value, data);\\n }\\n\\n /// @dev grants a given caller execution permissions\\n function setPermissions(\\n address[] calldata callers,\\n bool[] calldata _permissions\\n ) external onlyUnlocked {\\n address _owner = owner();\\n if (msg.sender != _owner) revert NotAuthorized();\\n\\n uint256 length = callers.length;\\n\\n if (_permissions.length != length) revert InvalidInput();\\n\\n for (uint256 i = 0; i < length; i++) {\\n permissions[_owner][callers[i]] = _permissions[i];\\n emit PermissionUpdated(_owner, callers[i], _permissions[i]);\\n }\\n }\\n\\n /// @dev locks the account until a certain timestamp\\n function lock(uint256 _lockedUntil) external onlyOwner onlyUnlocked {\\n if (_lockedUntil > block.timestamp + 365 days)\\n revert ExceedsMaxLockTime();\\n\\n lockedUntil = _lockedUntil;\\n\\n emit LockUpdated(_lockedUntil);\\n }\\n\\n /// @dev returns the current lock status of the account as a boolean\\n function isLocked() public view returns (bool) {\\n return lockedUntil > block.timestamp;\\n }\\n\\n /// @dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\\n /// owns this account.\\n function token()\\n external\\n view\\n returns (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n )\\n {\\n return ERC6551AccountLib.token();\\n }\\n\\n /// @dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\\n /// of the token has full permissions on the account.\\n function owner() public view returns (address) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (chainId != block.chainid) return address(0);\\n\\n return IERC721(tokenContract).ownerOf(tokenId);\\n }\\n\\n /// @dev Returns the authorization status for a given caller\\n function isAuthorized(address caller) public view returns (bool) {\\n (\\n ,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n address _owner = IERC721(tokenContract).ownerOf(tokenId);\\n\\n // authorize token owner\\n if (caller == _owner) return true;\\n\\n // authorize caller if owner has granted permissions\\n if (permissions[_owner][caller]) return true;\\n\\n return false;\\n }\\n\\n /// @dev Returns true if a given interfaceId is supported by this account. This method can be\\n /// extended by an override.\\n function supportsInterface(bytes4 interfaceId)\\n public\\n pure \\n override\\n returns (bool)\\n {\\n bool defaultSupport = interfaceId == type(IERC165).interfaceId ||\\n interfaceId == type(IERC1155Receiver).interfaceId ||\\n interfaceId == type(IERC6551Account).interfaceId;\\n\\n if (defaultSupport) return true;\\n\\n return false;\\n }\\n\\n /// @dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\\n /// This function can be overriden.\\n function onERC721Received(\\n address,\\n address,\\n uint256 receivedTokenId,\\n bytes memory\\n ) public view override returns (bytes4) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (\\n chainId == block.chainid &&\\n tokenContract == msg.sender &&\\n tokenId == receivedTokenId\\n ) revert OwnershipCycle();\\n\\n return this.onERC721Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 tokens to be received. This function can be overriden.\\n function onERC1155Received(\\n address,\\n address,\\n uint256,\\n uint256,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 token batches to be received. This function can be overriden.\\n function onERC1155BatchReceived(\\n address,\\n address,\\n uint256[] memory,\\n uint256[] memory,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155BatchReceived.selector;\\n }\\n\\n /// @dev Executes a low-level call\\n function _call(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) internal returns (bytes memory result) {\\n bool success;\\n (success, result) = to.call{value: value}(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n /// @dev Executes a low-level static call\\n function _callStatic(address to, bytes calldata data)\\n internal\\n view\\n returns (bytes memory result)\\n {\\n bool success;\\n (success, result) = to.staticcall(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n function allowedMethod(bytes calldata _data) internal returns (bool) {\\n bytes4 signature = parseFirst4Bytes(_data);\\n // approve > 0x095ea7b3\\n\\n if (signature == 0x095ea7b3) {\\n return false;\\n }\\n\\n return true;\\n }\\n\\n function parseFirst4Bytes(bytes calldata _data) public pure returns (bytes4) {\\n return bytes4(_data[:4]);\\n }\\n\\n modifier onlyAllowedMethod(bytes calldata _data) {\\n require(allowedMethod(_data), \\\"Method all not allowed\\\");\\n _;\\n }\\n}\\n\",\"keccak256\":\"0xa19901bd1b773a41ab51f92c050bccf6139c492c846bf0d331772c2d80346ed5\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\ninterface IERC6551AccountProxy {\\n function implementation() external view returns (address);\\n}\\n\\n/// @dev the ERC-165 identifier for this interface is `0xeff4d378`\\ninterface IERC6551Account {\\n event TransactionExecuted(address indexed target, uint256 indexed value, bytes data);\\n\\n receive() external payable;\\n\\n function executeCall(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) external payable returns (bytes memory);\\n\\n function token()\\n external\\n view\\n returns (uint256 chainId, address tokenContract, uint256 tokenId);\\n\\n function owner() external view returns (address);\\n}\\n\",\"keccak256\":\"0x5fe2dca745f8e753d414778980a0846c1bbcbb26a09d7cd7fb712c7db7939582\",\"license\":\"UNLICENSED\"},\"contracts/lib/ERC6551AccountLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nlibrary ERC6551AccountLib {\\n function token()\\n internal\\n view\\n returns (\\n uint256,\\n address,\\n uint256\\n )\\n {\\n bytes memory footer = new bytes(0x60);\\n\\n assembly {\\n // copy 0x60 bytes from end of footer\\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\\n }\\n\\n return abi.decode(footer, (uint256, address, uint256));\\n }\\n\\n function salt() internal view returns (uint256) {\\n bytes memory footer = new bytes(0x20);\\n\\n assembly {\\n // copy 0x20 bytes from beginning of footer\\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\\n }\\n\\n return abi.decode(footer, (uint256));\\n }\\n}\\n\",\"keccak256\":\"0xf7a8eb3b4fb63068eb8ed2a1a129e4676af842541f43c1a1dc96a9f295060c45\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3566,"contract":"contracts/Account.sol:Account","label":"lockedUntil","offset":0,"slot":"0","type":"t_uint256"},{"astId":3573,"contract":"contracts/Account.sol:Account","label":"permissions","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/AccountRegistryBridge.sol":{"AccountRegistryBridge":{"abi":[{"inputs":[],"name":"IMPLEMENTATION","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REGISTRY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"account","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"createAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506102ad806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806306433b1b14610051578063192df655146100885780633a4741bd1461009b5780635fbfb9cf146100b6575b600080fd5b61006c7302101dfb77fde026414827fdc604ddaf224f092181565b6040516001600160a01b03909116815260200160405180910390f35b61006c61009636600461022e565b6100c9565b61006c732d25602551487c3f3354dd80d76d54383a24335881565b61006c6100c436600461022e565b61017d565b604051632f4de29b60e11b8152732d25602551487c3f3354dd80d76d54383a24335860048201524660248201526001600160a01b038316604482015260648101829052600060848201819052907302101dfb77fde026414827fdc604ddaf224f092190635e9bc5369060a401602060405180830381865afa158015610152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610176919061025a565b9392505050565b60405163da7323b360e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201524660248201526001600160a01b03831660448201526064810182905260006084820181905260c060a483015260c48201819052907302101dfb77fde026414827fdc604ddaf224f09219063da7323b39060e4016020604051808303816000875af1158015610152573d6000803e3d6000fd5b6001600160a01b038116811461022b57600080fd5b50565b6000806040838503121561024157600080fd5b823561024c81610216565b946020939093013593505050565b60006020828403121561026c57600080fd5b81516101768161021656fea26469706673582212200b4836e18ca9294f39a0f67787d9af3a81bbfd3510dceb2abf00f235aa0e1ecf64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AD DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6433B1B EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x192DF655 EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x3A4741BD EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x5FBFB9CF EQ PUSH2 0xB6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6C PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x96 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E JUMP JUMPDEST PUSH2 0xC9 JUMP JUMPDEST PUSH2 0x6C PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 DUP2 JUMP JUMPDEST PUSH2 0x6C PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2F4DE29B PUSH1 0xE1 SHL DUP2 MSTORE PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 PUSH1 0x4 DUP3 ADD MSTORE CHAINID PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 SWAP1 PUSH4 0x5E9BC536 SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x152 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 0x176 SWAP2 SWAP1 PUSH2 0x25A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xDA7323B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 PUSH1 0x4 DUP3 ADD MSTORE CHAINID PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP4 ADD MSTORE PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 SWAP1 PUSH4 0xDA7323B3 SWAP1 PUSH1 0xE4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x152 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x24C DUP2 PUSH2 0x216 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x176 DUP2 PUSH2 0x216 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND BASEFEE CALLDATASIZE 0xE1 DUP13 0xA9 0x29 0x4F CODECOPY LOG0 0xF6 PUSH24 0x87D9AF3A81BBFD3510DCEB2ABF00F235AA0E1ECF64736F6C PUSH4 0x43000811 STOP CALLER ","sourceMap":"163:830:18:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@IMPLEMENTATION_4132":{"entryPoint":null,"id":4132,"parameterSlots":0,"returnSlots":0},"@REGISTRY_4129":{"entryPoint":null,"id":4129,"parameterSlots":0,"returnSlots":0},"@account_4177":{"entryPoint":201,"id":4177,"parameterSlots":2,"returnSlots":1},"@createAccount_4155":{"entryPoint":381,"id":4155,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":602,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":558,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_uint256_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_address_t_uint256_t_rational_0_by_1_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"validator_revert_address":{"entryPoint":534,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2175:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:102:29","statements":[{"nodeType":"YulAssignment","src":"125:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:29"},"nodeType":"YulFunctionCall","src":"133:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"182:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"198:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"203:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"194:3:29"},"nodeType":"YulFunctionCall","src":"194:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"207:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"190:3:29"},"nodeType":"YulFunctionCall","src":"190:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"178:3:29"},"nodeType":"YulFunctionCall","src":"178:32:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:29"},"nodeType":"YulFunctionCall","src":"160:51:29"},"nodeType":"YulExpressionStatement","src":"160:51:29"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:29","type":""}],"src":"14:203:29"},{"body":{"nodeType":"YulBlock","src":"267:86:29","statements":[{"body":{"nodeType":"YulBlock","src":"331:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"340:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"343:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"333:6:29"},"nodeType":"YulFunctionCall","src":"333:12:29"},"nodeType":"YulExpressionStatement","src":"333:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"290:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"301:5:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"316:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"321:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"312:3:29"},"nodeType":"YulFunctionCall","src":"312:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"325:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"308:3:29"},"nodeType":"YulFunctionCall","src":"308:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"297:3:29"},"nodeType":"YulFunctionCall","src":"297:31:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"287:2:29"},"nodeType":"YulFunctionCall","src":"287:42:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"280:6:29"},"nodeType":"YulFunctionCall","src":"280:50:29"},"nodeType":"YulIf","src":"277:70:29"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"256:5:29","type":""}],"src":"222:131:29"},{"body":{"nodeType":"YulBlock","src":"445:228:29","statements":[{"body":{"nodeType":"YulBlock","src":"491:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"500:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"503:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"493:6:29"},"nodeType":"YulFunctionCall","src":"493:12:29"},"nodeType":"YulExpressionStatement","src":"493:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"466:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"475:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"462:3:29"},"nodeType":"YulFunctionCall","src":"462:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"487:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"458:3:29"},"nodeType":"YulFunctionCall","src":"458:32:29"},"nodeType":"YulIf","src":"455:52:29"},{"nodeType":"YulVariableDeclaration","src":"516:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"542:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"529:12:29"},"nodeType":"YulFunctionCall","src":"529:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"520:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"586:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"561:24:29"},"nodeType":"YulFunctionCall","src":"561:31:29"},"nodeType":"YulExpressionStatement","src":"561:31:29"},{"nodeType":"YulAssignment","src":"601:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"611:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"601:6:29"}]},{"nodeType":"YulAssignment","src":"625:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"652:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"663:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"648:3:29"},"nodeType":"YulFunctionCall","src":"648:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"635:12:29"},"nodeType":"YulFunctionCall","src":"635:32:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"625:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"403:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"414:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"426:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"434:6:29","type":""}],"src":"358:315:29"},{"body":{"nodeType":"YulBlock","src":"899:306:29","statements":[{"nodeType":"YulAssignment","src":"909:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"921:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"932:3:29","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"917:3:29"},"nodeType":"YulFunctionCall","src":"917:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"909:4:29"}]},{"nodeType":"YulVariableDeclaration","src":"945:29:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"963:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"968:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"959:3:29"},"nodeType":"YulFunctionCall","src":"959:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"972:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"955:3:29"},"nodeType":"YulFunctionCall","src":"955:19:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"949:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"990:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1005:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1013:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1001:3:29"},"nodeType":"YulFunctionCall","src":"1001:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"983:6:29"},"nodeType":"YulFunctionCall","src":"983:34:29"},"nodeType":"YulExpressionStatement","src":"983:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1037:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1048:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1033:3:29"},"nodeType":"YulFunctionCall","src":"1033:18:29"},{"name":"value1","nodeType":"YulIdentifier","src":"1053:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1026:6:29"},"nodeType":"YulFunctionCall","src":"1026:34:29"},"nodeType":"YulExpressionStatement","src":"1026:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1080:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1091:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1076:3:29"},"nodeType":"YulFunctionCall","src":"1076:18:29"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1100:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1108:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1096:3:29"},"nodeType":"YulFunctionCall","src":"1096:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1069:6:29"},"nodeType":"YulFunctionCall","src":"1069:43:29"},"nodeType":"YulExpressionStatement","src":"1069:43:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1132:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1143:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1128:3:29"},"nodeType":"YulFunctionCall","src":"1128:18:29"},{"name":"value3","nodeType":"YulIdentifier","src":"1148:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1121:6:29"},"nodeType":"YulFunctionCall","src":"1121:34:29"},"nodeType":"YulExpressionStatement","src":"1121:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1175:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1186:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1171:3:29"},"nodeType":"YulFunctionCall","src":"1171:19:29"},{"name":"value4","nodeType":"YulIdentifier","src":"1192:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1164:6:29"},"nodeType":"YulFunctionCall","src":"1164:35:29"},"nodeType":"YulExpressionStatement","src":"1164:35:29"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_uint256_t_address_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"836:9:29","type":""},{"name":"value4","nodeType":"YulTypedName","src":"847:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"855:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"863:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"871:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"879:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"890:4:29","type":""}],"src":"678:527:29"},{"body":{"nodeType":"YulBlock","src":"1291:170:29","statements":[{"body":{"nodeType":"YulBlock","src":"1337:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1346:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1349:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1339:6:29"},"nodeType":"YulFunctionCall","src":"1339:12:29"},"nodeType":"YulExpressionStatement","src":"1339:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1312:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1321:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1308:3:29"},"nodeType":"YulFunctionCall","src":"1308:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1333:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1304:3:29"},"nodeType":"YulFunctionCall","src":"1304:32:29"},"nodeType":"YulIf","src":"1301:52:29"},{"nodeType":"YulVariableDeclaration","src":"1362:29:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1381:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1375:5:29"},"nodeType":"YulFunctionCall","src":"1375:16:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1366:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1425:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1400:24:29"},"nodeType":"YulFunctionCall","src":"1400:31:29"},"nodeType":"YulExpressionStatement","src":"1400:31:29"},{"nodeType":"YulAssignment","src":"1440:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"1450:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1440:6:29"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1257:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1268:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1280:6:29","type":""}],"src":"1210:251:29"},{"body":{"nodeType":"YulBlock","src":"1787:386:29","statements":[{"nodeType":"YulVariableDeclaration","src":"1797:29:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1815:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1820:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1811:3:29"},"nodeType":"YulFunctionCall","src":"1811:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"1824:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1807:3:29"},"nodeType":"YulFunctionCall","src":"1807:19:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1801:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1842:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1857:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1865:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1853:3:29"},"nodeType":"YulFunctionCall","src":"1853:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:29"},"nodeType":"YulFunctionCall","src":"1835:34:29"},"nodeType":"YulExpressionStatement","src":"1835:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1889:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1900:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1885:3:29"},"nodeType":"YulFunctionCall","src":"1885:18:29"},{"name":"value1","nodeType":"YulIdentifier","src":"1905:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1878:6:29"},"nodeType":"YulFunctionCall","src":"1878:34:29"},"nodeType":"YulExpressionStatement","src":"1878:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1932:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1943:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1928:3:29"},"nodeType":"YulFunctionCall","src":"1928:18:29"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"1952:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1960:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1948:3:29"},"nodeType":"YulFunctionCall","src":"1948:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1921:6:29"},"nodeType":"YulFunctionCall","src":"1921:43:29"},"nodeType":"YulExpressionStatement","src":"1921:43:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1984:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1995:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1980:3:29"},"nodeType":"YulFunctionCall","src":"1980:18:29"},{"name":"value3","nodeType":"YulIdentifier","src":"2000:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1973:6:29"},"nodeType":"YulFunctionCall","src":"1973:34:29"},"nodeType":"YulExpressionStatement","src":"1973:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2027:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2038:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2023:3:29"},"nodeType":"YulFunctionCall","src":"2023:19:29"},{"name":"value4","nodeType":"YulIdentifier","src":"2044:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2016:6:29"},"nodeType":"YulFunctionCall","src":"2016:35:29"},"nodeType":"YulExpressionStatement","src":"2016:35:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2071:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2082:3:29","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2067:3:29"},"nodeType":"YulFunctionCall","src":"2067:19:29"},{"kind":"number","nodeType":"YulLiteral","src":"2088:3:29","type":"","value":"192"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2060:6:29"},"nodeType":"YulFunctionCall","src":"2060:32:29"},"nodeType":"YulExpressionStatement","src":"2060:32:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2112:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2123:3:29","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2108:3:29"},"nodeType":"YulFunctionCall","src":"2108:19:29"},{"kind":"number","nodeType":"YulLiteral","src":"2129:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2101:6:29"},"nodeType":"YulFunctionCall","src":"2101:30:29"},"nodeType":"YulExpressionStatement","src":"2101:30:29"},{"nodeType":"YulAssignment","src":"2140:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2152:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2163:3:29","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2148:3:29"},"nodeType":"YulFunctionCall","src":"2148:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2140:4:29"}]}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address_t_uint256_t_rational_0_by_1_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1724:9:29","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1735:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1743:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1751:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1759:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1767:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1778:4:29","type":""}],"src":"1466:707:29"}]},"contents":"{\n { }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\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 value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_address_t_uint256_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_uint256_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\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_address_t_uint256_t_address_t_uint256_t_rational_0_by_1_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_uint256_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), 192)\n mstore(add(headStart, 192), 0)\n tail := add(headStart, 224)\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c806306433b1b14610051578063192df655146100885780633a4741bd1461009b5780635fbfb9cf146100b6575b600080fd5b61006c7302101dfb77fde026414827fdc604ddaf224f092181565b6040516001600160a01b03909116815260200160405180910390f35b61006c61009636600461022e565b6100c9565b61006c732d25602551487c3f3354dd80d76d54383a24335881565b61006c6100c436600461022e565b61017d565b604051632f4de29b60e11b8152732d25602551487c3f3354dd80d76d54383a24335860048201524660248201526001600160a01b038316604482015260648101829052600060848201819052907302101dfb77fde026414827fdc604ddaf224f092190635e9bc5369060a401602060405180830381865afa158015610152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610176919061025a565b9392505050565b60405163da7323b360e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201524660248201526001600160a01b03831660448201526064810182905260006084820181905260c060a483015260c48201819052907302101dfb77fde026414827fdc604ddaf224f09219063da7323b39060e4016020604051808303816000875af1158015610152573d6000803e3d6000fd5b6001600160a01b038116811461022b57600080fd5b50565b6000806040838503121561024157600080fd5b823561024c81610216565b946020939093013593505050565b60006020828403121561026c57600080fd5b81516101768161021656fea26469706673582212200b4836e18ca9294f39a0f67787d9af3a81bbfd3510dceb2abf00f235aa0e1ecf64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6433B1B EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x192DF655 EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x3A4741BD EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x5FBFB9CF EQ PUSH2 0xB6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6C PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6C PUSH2 0x96 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E JUMP JUMPDEST PUSH2 0xC9 JUMP JUMPDEST PUSH2 0x6C PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 DUP2 JUMP JUMPDEST PUSH2 0x6C PUSH2 0xC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2F4DE29B PUSH1 0xE1 SHL DUP2 MSTORE PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 PUSH1 0x4 DUP3 ADD MSTORE CHAINID PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 SWAP1 PUSH4 0x5E9BC536 SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x152 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 0x176 SWAP2 SWAP1 PUSH2 0x25A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xDA7323B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x2D25602551487C3F3354DD80D76D54383A243358 PUSH1 0x4 DUP3 ADD MSTORE CHAINID PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 PUSH1 0xA4 DUP4 ADD MSTORE PUSH1 0xC4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH20 0x2101DFB77FDE026414827FDC604DDAF224F0921 SWAP1 PUSH4 0xDA7323B3 SWAP1 PUSH1 0xE4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x152 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x241 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x24C DUP2 PUSH2 0x216 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x26C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x176 DUP2 PUSH2 0x216 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND BASEFEE CALLDATASIZE 0xE1 DUP13 0xA9 0x29 0x4F CODECOPY LOG0 0xF6 PUSH24 0x87D9AF3A81BBFD3510DCEB2ABF00F235AA0E1ECF64736F6C PUSH4 0x43000811 STOP CALLER ","sourceMap":"163:830:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;200:78;;236:42;200:78;;;;;-1:-1:-1;;;;;178:32:29;;;160:51;;148:2;133:18;200:78:18;;;;;;;697:294;;;;;;:::i;:::-;;:::i;284:83::-;;325:42;284:83;;374:317;;;;;;:::i;:::-;;:::i;697:294::-;827:157;;-1:-1:-1;;;827:157:18;;325:42;827:157;;;983:34:29;896:13:18;1033:18:29;;;1026:34;-1:-1:-1;;;;;1096:15:29;;1076:18;;;1069:43;1128:18;;;1121:34;;;801:7:18;1171:19:29;;;1164:35;;;801:7:18;236:42;;827:27;;917:19:29;;827:157:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;820:164;697:294;-1:-1:-1;;;697:294:18:o;374:317::-;505:179;;-1:-1:-1;;;505:179:18;;325:42;505:179;;;1835:34:29;580:13:18;1885:18:29;;;1878:34;-1:-1:-1;;;;;1948:15:29;;1928:18;;;1921:43;1980:18;;;1973:34;;;479:7:18;2023:19:29;;;2016:35;;;2088:3;2067:19;;;2060:32;2108:19;;;2101:30;;;479:7:18;236:42;;505:33;;2148:19:29;;505:179:18;;;;;;;;;;;;;;;;;;;;;;;222:131:29;-1:-1:-1;;;;;297:31:29;;287:42;;277:70;;343:1;340;333:12;277:70;222:131;:::o;358:315::-;426:6;434;487:2;475:9;466:7;462:23;458:32;455:52;;;503:1;500;493:12;455:52;542:9;529:23;561:31;586:5;561:31;:::i;:::-;611:5;663:2;648:18;;;;635:32;;-1:-1:-1;;;358:315:29:o;1210:251::-;1280:6;1333:2;1321:9;1312:7;1308:23;1304:32;1301:52;;;1349:1;1346;1339:12;1301:52;1381:9;1375:16;1400:31;1425:5;1400:31;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"137000","executionCost":"183","totalCost":"137183"},"external":{"IMPLEMENTATION()":"226","REGISTRY()":"182","account(address,uint256)":"infinite","createAccount(address,uint256)":"infinite"}},"methodIdentifiers":{"IMPLEMENTATION()":"3a4741bd","REGISTRY()":"06433b1b","account(address,uint256)":"192df655","createAccount(address,uint256)":"5fbfb9cf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IMPLEMENTATION\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REGISTRY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"account\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/AccountRegistryBridge.sol\":\"AccountRegistryBridge\"},\"evmVersion\":\"london\",\"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 v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/AccountRegistryBridge.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.13;\\n\\nimport \\\"./interfaces/IRegistry.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\ncontract AccountRegistryBridge {\\n address public constant REGISTRY = \\t0x02101dfB77FDE026414827Fdc604ddAF224F0921;\\n address public constant IMPLEMENTATION = 0x2D25602551487C3f3354dD80D76D54383A243358;\\n\\n function createAccount(\\n address contractAddress,\\n uint256 tokenId\\n ) external returns (address) {\\n return IRegistry(REGISTRY).createAccount(\\n IMPLEMENTATION,\\n block.chainid,\\n contractAddress,\\n tokenId,\\n 0,\\n ''\\n );\\n }\\n\\n function account(\\n address contractAddress,\\n uint256 tokenId\\n ) external view returns (address) {\\n return IRegistry(REGISTRY).account(\\n IMPLEMENTATION,\\n block.chainid,\\n contractAddress,\\n tokenId,\\n 0\\n );\\n }\\n}\",\"keccak256\":\"0x263ac1c6e56edaab1925063387b0fcd8ba33f875f3b5a2afeffdc4424ac2189a\",\"license\":\"MIT\"},\"contracts/interfaces/IRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\ninterface IRegistry {\\n function createAccount(\\n address implementation,\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId,\\n uint256 salt,\\n bytes calldata initData\\n ) external returns (address);\\n\\n function account(\\n address implementation,\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId,\\n uint256 salt\\n ) external view returns (address);\\n}\\n\",\"keccak256\":\"0xd24999d4d474bd349b1e2e5006eff215c5d9a64a481a9ebac3293f98603fbd27\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ChargedParticlesAccount.sol":{"ChargedParticlesAccount":{"abi":[{"inputs":[],"name":"AccountLocked","type":"error"},{"inputs":[],"name":"ExceedsMaxLockTime","type":"error"},{"inputs":[],"name":"InvalidInput","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"OwnershipCycle","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"lockedUntil","type":"uint256"}],"name":"LockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"OverrideUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bool","name":"hasPermission","type":"bool"}],"name":"PermissionUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"TransactionExecuted","type":"event"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"nftTokenAddress","type":"address"},{"internalType":"uint256","name":"nftTokenId","type":"uint256"},{"internalType":"uint256","name":"nftTokenAmount","type":"uint256"}],"name":"breakCovalentBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftTokenAddress","type":"address"},{"internalType":"uint256","name":"nftTokenId","type":"uint256"},{"internalType":"uint256","name":"nftTokenAmount","type":"uint256"}],"name":"covalentBond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"assetToken","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"dischargeParticle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"assetToken","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"energizeParticle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockedUntil","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockedUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"receivedTokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"parseFirst4Bytes","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"permissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"callers","type":"address[]"},{"internalType":"bool[]","name":"_permissions","type":"bool[]"}],"name":"setPermissions","outputs":[],"stateMutability":"nonpayable","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":{"kind":"dev","methods":{"executeCall(address,uint256,bytes)":{"details":"executes a low-level call against an account if the caller is authorized to make calls"},"isAuthorized(address)":{"details":"Returns the authorization status for a given caller"},"isLocked()":{"details":"returns the current lock status of the account as a boolean"},"lock(uint256)":{"details":"locks the account until a certain timestamp"},"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":{"details":"Allows ERC-1155 token batches to be received. This function can be overriden."},"onERC1155Received(address,address,uint256,uint256,bytes)":{"details":"Allows ERC-1155 tokens to be received. This function can be overriden."},"onERC721Received(address,address,uint256,bytes)":{"details":"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden."},"owner()":{"details":"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account."},"setPermissions(address[],bool[])":{"details":"grants a given caller execution permissions"},"supportsInterface(bytes4)":{"details":"Returns true if a given interfaceId is supported by this account. This method can be extended by an override."},"token()":{"details":"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_3636":{"entryPoint":null,"id":3636,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506114a9806100206000396000f3fe60806040526004361061010d5760003560e01c8063a737a29911610095578063d0ad253511610064578063d0ad253514610318578063dd46706414610338578063f23a6e6114610358578063fc0c546a14610384578063fe9fbb80146103bc57600080fd5b8063a737a29914610288578063bc197c81146102a8578063ca1cc220146102d4578063ce0617ec146102f457600080fd5b80636b764e1b116100dc5780636b764e1b146101e45780638da5cb5b146102045780639e5d4c4914610231578063a4e2d63414610251578063a65e78f11461026857600080fd5b806301ffc9a714610119578063039721b11461014e578063150b7a02146101705780631f9838b5146101a957600080fd5b3661011457005b600080fd5b34801561012557600080fd5b50610139610134366004610cbb565b6103dc565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b5061016e610169366004610d38565b610443565b005b34801561017c57600080fd5b5061019061018b366004610e73565b61060c565b6040516001600160e01b03199091168152602001610145565b3480156101b557600080fd5b506101396101c4366004610edf565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101f057600080fd5b5061016e6101ff366004610f18565b610674565b34801561021057600080fd5b506102196106e2565b6040516001600160a01b039091168152602001610145565b61024461023f366004610fa0565b610778565b6040516101459190610ff0565b34801561025d57600080fd5b506000544210610139565b34801561027457600080fd5b5061016e61028336600461103e565b610873565b34801561029457600080fd5b5061016e6102a336600461106a565b6108ef565b3480156102b457600080fd5b506101906102c3366004611114565b63bc197c8160e01b95945050505050565b3480156102e057600080fd5b5061016e6102ef3660046111c2565b610951565b34801561030057600080fd5b5061030a60005481565b604051908152602001610145565b34801561032457600080fd5b50610190610333366004611203565b6109ca565b34801561034457600080fd5b5061016e610353366004611245565b6109eb565b34801561036457600080fd5b5061019061037336600461125e565b63f23a6e6160e01b95945050505050565b34801561039057600080fd5b50610399610ab0565b604080519384526001600160a01b03909216602084015290820152606001610145565b3480156103c857600080fd5b506101396103d73660046112c7565b610ac8565b6000806001600160e01b031983166301ffc9a760e01b148061040e57506001600160e01b03198316630271189760e51b145b8061042957506001600160e01b03198316631dfe9a6f60e31b145b9050801561043a5750600192915050565b50600092915050565b60005442101561046657604051636315bfbb60e01b815260040160405180910390fd5b60006104706106e2565b9050336001600160a01b0382161461049b5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104bc5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b81811015610603578484828181106104d9576104d96112e4565b90506020020160208101906104ee9190611308565b6001600160a01b038416600090815260016020526040812090898985818110610519576105196112e4565b905060200201602081019061052e91906112c7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf58388888481811061058a5761058a6112e4565b905060200201602081019061059f91906112c7565b8787858181106105b1576105b16112e4565b90506020020160208101906105c69190611308565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a1806105fb8161133b565b9150506104bf565b50505050505050565b60008060008061061a610bb1565b925092509250468314801561063757506001600160a01b03821633145b801561064257508581145b156106605760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b604051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156106c457600080fd5b505af11580156106d8573d6000803e3d6000fd5b5050505050505050565b6000806000806106f0610bb1565b925092509250468314610707576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa15801561074c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107709190611354565b935050505090565b606061078333610ac8565b6107a05760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156107c357604051636315bfbb60e01b815260040160405180910390fd5b82826107cf8282610c04565b6108185760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b85876001600160a01b03167f47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d28787604051610854929190611371565b60405180910390a361086887878787610c3f565b979650505050505050565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af11580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea91906113a0565b505050565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038416906342842e0e90606401600060405180830381600087803b15801561093d57600080fd5b505af1158015610603573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af11580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c491906113a0565b50505050565b60006109d960048284866113bd565b6109e2916113e7565b90505b92915050565b6109f36106e2565b6001600160a01b0316336001600160a01b031614610a245760405163ea8e4eb560e01b815260040160405180910390fd5b600054421015610a4757604051636315bfbb60e01b815260040160405180910390fd5b610a55426301e13380611417565b811115610a75576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b6000806000610abd610bb1565b925092509250909192565b6000806000610ad5610bb1565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190611354565b9050806001600160a01b0316856001600160a01b031603610b6d57506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff1615610ba657506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610bf8919061142a565b93509350935050909192565b600080610c1184846109ca565b90506001600160e01b0319811663095ea7b360e01b03610c355760009150506109e5565b5060019392505050565b60606000856001600160a01b0316858585604051610c5e929190611463565b60006040518083038185875af1925050503d8060008114610c9b576040519150601f19603f3d011682016040523d82523d6000602084013e610ca0565b606091505b509250905080610cb257815160208301fd5b50949350505050565b600060208284031215610ccd57600080fd5b81356001600160e01b031981168114610ce557600080fd5b9392505050565b60008083601f840112610cfe57600080fd5b50813567ffffffffffffffff811115610d1657600080fd5b6020830191508360208260051b8501011115610d3157600080fd5b9250929050565b60008060008060408587031215610d4e57600080fd5b843567ffffffffffffffff80821115610d6657600080fd5b610d7288838901610cec565b90965094506020870135915080821115610d8b57600080fd5b50610d9887828801610cec565b95989497509550505050565b6001600160a01b0381168114610db957600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610dfb57610dfb610dbc565b604052919050565b600082601f830112610e1457600080fd5b813567ffffffffffffffff811115610e2e57610e2e610dbc565b610e41601f8201601f1916602001610dd2565b818152846020838601011115610e5657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e8957600080fd5b8435610e9481610da4565b93506020850135610ea481610da4565b925060408501359150606085013567ffffffffffffffff811115610ec757600080fd5b610ed387828801610e03565b91505092959194509250565b60008060408385031215610ef257600080fd5b8235610efd81610da4565b91506020830135610f0d81610da4565b809150509250929050565b60008060008060808587031215610f2e57600080fd5b8435610f3981610da4565b93506020850135610f4981610da4565b93969395505050506040820135916060013590565b60008083601f840112610f7057600080fd5b50813567ffffffffffffffff811115610f8857600080fd5b602083019150836020828501011115610d3157600080fd5b60008060008060608587031215610fb657600080fd5b8435610fc181610da4565b935060208501359250604085013567ffffffffffffffff811115610fe457600080fd5b610d9887828801610f5e565b600060208083528351808285015260005b8181101561101d57858101830151858201604001528201611001565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561105157600080fd5b823561105c81610da4565b946020939093013593505050565b60008060006060848603121561107f57600080fd5b833561108a81610da4565b95602085013595506040909401359392505050565b600082601f8301126110b057600080fd5b8135602067ffffffffffffffff8211156110cc576110cc610dbc565b8160051b6110db828201610dd2565b92835284810182019282810190878511156110f557600080fd5b83870192505b84831015610868578235825291830191908301906110fb565b600080600080600060a0868803121561112c57600080fd5b853561113781610da4565b9450602086013561114781610da4565b9350604086013567ffffffffffffffff8082111561116457600080fd5b61117089838a0161109f565b9450606088013591508082111561118657600080fd5b61119289838a0161109f565b935060808801359150808211156111a857600080fd5b506111b588828901610e03565b9150509295509295909350565b6000806000606084860312156111d757600080fd5b83356111e281610da4565b925060208401356111f281610da4565b929592945050506040919091013590565b6000806020838503121561121657600080fd5b823567ffffffffffffffff81111561122d57600080fd5b61123985828601610f5e565b90969095509350505050565b60006020828403121561125757600080fd5b5035919050565b600080600080600060a0868803121561127657600080fd5b853561128181610da4565b9450602086013561129181610da4565b93506040860135925060608601359150608086013567ffffffffffffffff8111156112bb57600080fd5b6111b588828901610e03565b6000602082840312156112d957600080fd5b8135610ce581610da4565b634e487b7160e01b600052603260045260246000fd5b8015158114610db957600080fd5b60006020828403121561131a57600080fd5b8135610ce5816112fa565b634e487b7160e01b600052601160045260246000fd5b60006001820161134d5761134d611325565b5060010190565b60006020828403121561136657600080fd5b8151610ce581610da4565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156113b257600080fd5b8151610ce5816112fa565b600080858511156113cd57600080fd5b838611156113da57600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561140f5780818660040360031b1b83161692505b505092915050565b808201808211156109e5576109e5611325565b60008060006060848603121561143f57600080fd5b83519250602084015161145181610da4565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220a53d9f0a5da30624ea9d8a215cb356ee157dbd7bc9d81c8b84c41586262e0b7464736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x14A9 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA737A299 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xD0AD2535 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0xFE9FBB80 EQ PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA737A299 EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0xCA1CC220 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6B764E1B GT PUSH2 0xDC JUMPI DUP1 PUSH4 0x6B764E1B EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x9E5D4C49 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xA65E78F1 EQ PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x1A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x114 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x134 CALLDATASIZE PUSH1 0x4 PUSH2 0xCBB JUMP JUMPDEST PUSH2 0x3DC 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 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xD38 JUMP JUMPDEST PUSH2 0x443 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x18B CALLDATASIZE PUSH1 0x4 PUSH2 0xE73 JUMP JUMPDEST PUSH2 0x60C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x1C4 CALLDATASIZE PUSH1 0x4 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0xF18 JUMP JUMPDEST PUSH2 0x674 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x219 PUSH2 0x6E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST PUSH2 0x244 PUSH2 0x23F CALLDATASIZE PUSH1 0x4 PUSH2 0xFA0 JUMP JUMPDEST PUSH2 0x778 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0xFF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x139 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x283 CALLDATASIZE PUSH1 0x4 PUSH2 0x103E JUMP JUMPDEST PUSH2 0x873 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x2A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x106A JUMP JUMPDEST PUSH2 0x8EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x2C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1114 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x2EF CALLDATASIZE PUSH1 0x4 PUSH2 0x11C2 JUMP JUMPDEST PUSH2 0x951 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30A PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x333 CALLDATASIZE PUSH1 0x4 PUSH2 0x1203 JUMP JUMPDEST PUSH2 0x9CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x353 CALLDATASIZE PUSH1 0x4 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x9EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x373 CALLDATASIZE PUSH1 0x4 PUSH2 0x125E JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x399 PUSH2 0xAB0 JUMP JUMPDEST 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 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x3D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C7 JUMP JUMPDEST PUSH2 0xAC8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x40E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x429 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1DFE9A6F PUSH1 0xE3 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x43A JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x470 PUSH2 0x6E2 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x49B JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x4BC JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x603 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x4D9 JUMPI PUSH2 0x4D9 PUSH2 0x12E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4EE SWAP2 SWAP1 PUSH2 0x1308 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x519 JUMPI PUSH2 0x519 PUSH2 0x12E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x52E SWAP2 SWAP1 PUSH2 0x12C7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x58A JUMPI PUSH2 0x58A PUSH2 0x12E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x59F SWAP2 SWAP1 PUSH2 0x12C7 JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x5B1 JUMPI PUSH2 0x5B1 PUSH2 0x12E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x5C6 SWAP2 SWAP1 PUSH2 0x1308 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x5FB DUP2 PUSH2 0x133B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4BF JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x61A PUSH2 0xBB1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x637 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x642 JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x6F0 PUSH2 0xBB1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x707 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x74C 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 0x770 SWAP2 SWAP1 PUSH2 0x1354 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x783 CALLER PUSH2 0xAC8 JUMP JUMPDEST PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 PUSH2 0x7CF DUP3 DUP3 PUSH2 0xC04 JUMP JUMPDEST PUSH2 0x818 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x47D99AD340F52DA66535AFF7E10DA1CEB85A32BCBD9FA1C42314D194545E14D2 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x854 SWAP3 SWAP2 SWAP1 PUSH2 0x1371 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x868 DUP8 DUP8 DUP8 DUP8 PUSH2 0xC3F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8C6 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 0x8EA SWAP2 SWAP1 PUSH2 0x13A0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x603 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A0 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 0x9C4 SWAP2 SWAP1 PUSH2 0x13A0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9D9 PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x13BD JUMP JUMPDEST PUSH2 0x9E2 SWAP2 PUSH2 0x13E7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9F3 PUSH2 0x6E2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xA24 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xA47 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA55 TIMESTAMP PUSH4 0x1E13380 PUSH2 0x1417 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xA75 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xABD PUSH2 0xBB1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xAD5 PUSH2 0xBB1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0xB23 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 0xB47 SWAP2 SWAP1 PUSH2 0x1354 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB6D JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xBA6 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xBF8 SWAP2 SWAP1 PUSH2 0x142A JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC11 DUP5 DUP5 PUSH2 0x9CA JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0xC35 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x9E5 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xC5E SWAP3 SWAP2 SWAP1 PUSH2 0x1463 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 0xC9B 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 0xCA0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0xCB2 JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xCE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xD31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD72 DUP9 DUP4 DUP10 ADD PUSH2 0xCEC JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xD8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD98 DUP8 DUP3 DUP9 ADD PUSH2 0xCEC JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xDFB JUMPI PUSH2 0xDFB PUSH2 0xDBC JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE2E JUMPI PUSH2 0xE2E PUSH2 0xDBC JUMP JUMPDEST PUSH2 0xE41 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xDD2 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xE56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xE94 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xEA4 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED3 DUP8 DUP3 DUP9 ADD PUSH2 0xE03 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xEFD DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xF0D DUP2 PUSH2 0xDA4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xF39 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xF49 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xF70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xD31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xFC1 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD98 DUP8 DUP3 DUP9 ADD PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x101D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1001 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x105C DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x107F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x108A DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x10CC JUMPI PUSH2 0x10CC PUSH2 0xDBC JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0x10DB DUP3 DUP3 ADD PUSH2 0xDD2 JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x10F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x868 JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0x10FB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x112C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1137 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1147 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1170 DUP10 DUP4 DUP11 ADD PUSH2 0x109F JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1192 DUP10 DUP4 DUP11 ADD PUSH2 0x109F JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x11A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11B5 DUP9 DUP3 DUP10 ADD PUSH2 0xE03 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x11E2 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x11F2 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x122D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1239 DUP6 DUP3 DUP7 ADD PUSH2 0xF5E JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1281 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1291 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B5 DUP9 DUP3 DUP10 ADD PUSH2 0xE03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCE5 DUP2 PUSH2 0xDA4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x131A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCE5 DUP2 PUSH2 0x12FA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x134D JUMPI PUSH2 0x134D PUSH2 0x1325 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCE5 DUP2 PUSH2 0xDA4 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE DUP2 PUSH1 0x20 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x40 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCE5 DUP2 PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x13CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x13DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x140F JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x9E5 JUMPI PUSH2 0x9E5 PUSH2 0x1325 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x143F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x1451 DUP2 PUSH2 0xDA4 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 RETURNDATASIZE SWAP16 EXP 0x5D LOG3 MOD 0x24 0xEA SWAP14 DUP11 0x21 0x5C 0xB3 JUMP 0xEE ISZERO PUSH30 0xBD7BC9D81C8B84C41586262E0B7464736F6C634300081100330000000000 ","sourceMap":"206:995:19:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_3641":{"entryPoint":null,"id":3641,"parameterSlots":0,"returnSlots":0},"@_call_4042":{"entryPoint":3135,"id":4042,"parameterSlots":4,"returnSlots":1},"@allowedMethod_4093":{"entryPoint":3076,"id":4093,"parameterSlots":2,"returnSlots":1},"@breakCovalentBond_4232":{"entryPoint":1652,"id":4232,"parameterSlots":4,"returnSlots":0},"@covalentBond_4208":{"entryPoint":2287,"id":4208,"parameterSlots":3,"returnSlots":0},"@dischargeParticle_4271":{"entryPoint":2385,"id":4271,"parameterSlots":3,"returnSlots":0},"@energizeParticle_4253":{"entryPoint":2163,"id":4253,"parameterSlots":2,"returnSlots":0},"@executeCall_3673":{"entryPoint":1912,"id":3673,"parameterSlots":4,"returnSlots":1},"@isAuthorized_3878":{"entryPoint":2760,"id":3878,"parameterSlots":1,"returnSlots":1},"@isLocked_3787":{"entryPoint":null,"id":3787,"parameterSlots":0,"returnSlots":1},"@lock_3775":{"entryPoint":2539,"id":3775,"parameterSlots":1,"returnSlots":0},"@lockedUntil_3566":{"entryPoint":null,"id":3566,"parameterSlots":0,"returnSlots":0},"@onERC1155BatchReceived_4010":{"entryPoint":null,"id":4010,"parameterSlots":5,"returnSlots":1},"@onERC1155Received_3986":{"entryPoint":null,"id":3986,"parameterSlots":5,"returnSlots":1},"@onERC721Received_3964":{"entryPoint":1548,"id":3964,"parameterSlots":4,"returnSlots":1},"@owner_3836":{"entryPoint":1762,"id":3836,"parameterSlots":0,"returnSlots":1},"@parseFirst4Bytes_4108":{"entryPoint":2506,"id":4108,"parameterSlots":2,"returnSlots":1},"@permissions_3573":{"entryPoint":null,"id":3573,"parameterSlots":0,"returnSlots":0},"@setPermissions_3746":{"entryPoint":1091,"id":3746,"parameterSlots":4,"returnSlots":0},"@supportsInterface_3917":{"entryPoint":988,"id":3917,"parameterSlots":1,"returnSlots":1},"@token_3802":{"entryPoint":2736,"id":3802,"parameterSlots":0,"returnSlots":3},"@token_4633":{"entryPoint":2993,"id":4633,"parameterSlots":0,"returnSlots":3},"abi_decode_array_address_dyn_calldata":{"entryPoint":3308,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_array_uint256_dyn":{"entryPoint":4255,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":3587,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3934,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":4807,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4948,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3807,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr":{"entryPoint":4372,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4546,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":3699,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256":{"entryPoint":3864,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr":{"entryPoint":4702,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4158,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr":{"entryPoint":4000,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_uint256t_uint256":{"entryPoint":4202,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr":{"entryPoint":3384,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool":{"entryPoint":4872,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":5024,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":3259,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_calldata_ptr":{"entryPoint":4611,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":4677,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory":{"entryPoint":5162,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":5219,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4977,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4080,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__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},"allocate_memory":{"entryPoint":3538,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":5053,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":5143,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":5095,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":4923,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":4901,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4836,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3516,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":3492,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":4858,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:15864:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:217:29","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:29"},"nodeType":"YulFunctionCall","src":"131:12:29"},"nodeType":"YulExpressionStatement","src":"131:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:29"},"nodeType":"YulFunctionCall","src":"100:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:29"},"nodeType":"YulFunctionCall","src":"96:32:29"},"nodeType":"YulIf","src":"93:52:29"},{"nodeType":"YulVariableDeclaration","src":"154:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:29"},"nodeType":"YulFunctionCall","src":"167:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"254:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"263:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"266:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"256:6:29"},"nodeType":"YulFunctionCall","src":"256:12:29"},"nodeType":"YulExpressionStatement","src":"256:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"234:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"239:10:29","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"230:3:29"},"nodeType":"YulFunctionCall","src":"230:20:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:29"},"nodeType":"YulFunctionCall","src":"219:32:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:29"},"nodeType":"YulFunctionCall","src":"209:43:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:29"},"nodeType":"YulFunctionCall","src":"202:51:29"},"nodeType":"YulIf","src":"199:71:29"},{"nodeType":"YulAssignment","src":"279:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"289:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"279:6:29"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:29","type":""}],"src":"14:286:29"},{"body":{"nodeType":"YulBlock","src":"400:92:29","statements":[{"nodeType":"YulAssignment","src":"410:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"422:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"433:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"418:3:29"},"nodeType":"YulFunctionCall","src":"418:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"410:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"452:9:29"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"477:6:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"470:6:29"},"nodeType":"YulFunctionCall","src":"470:14:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"463:6:29"},"nodeType":"YulFunctionCall","src":"463:22:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"445:6:29"},"nodeType":"YulFunctionCall","src":"445:41:29"},"nodeType":"YulExpressionStatement","src":"445:41:29"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"369:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"380:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"391:4:29","type":""}],"src":"305:187:29"},{"body":{"nodeType":"YulBlock","src":"581:283:29","statements":[{"body":{"nodeType":"YulBlock","src":"630:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"639:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"642:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"632:6:29"},"nodeType":"YulFunctionCall","src":"632:12:29"},"nodeType":"YulExpressionStatement","src":"632:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"609:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"617:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"605:3:29"},"nodeType":"YulFunctionCall","src":"605:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"624:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"601:3:29"},"nodeType":"YulFunctionCall","src":"601:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"594:6:29"},"nodeType":"YulFunctionCall","src":"594:35:29"},"nodeType":"YulIf","src":"591:55:29"},{"nodeType":"YulAssignment","src":"655:30:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"678:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"665:12:29"},"nodeType":"YulFunctionCall","src":"665:20:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"655:6:29"}]},{"body":{"nodeType":"YulBlock","src":"728:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"737:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"740:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"730:6:29"},"nodeType":"YulFunctionCall","src":"730:12:29"},"nodeType":"YulExpressionStatement","src":"730:12:29"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"700:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"708:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"697:2:29"},"nodeType":"YulFunctionCall","src":"697:30:29"},"nodeType":"YulIf","src":"694:50:29"},{"nodeType":"YulAssignment","src":"753:29:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"769:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"777:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:29"},"nodeType":"YulFunctionCall","src":"765:17:29"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"753:8:29"}]},{"body":{"nodeType":"YulBlock","src":"842:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"851:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"854:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"844:6:29"},"nodeType":"YulFunctionCall","src":"844:12:29"},"nodeType":"YulExpressionStatement","src":"844:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"805:6:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"817:1:29","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"820:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"813:3:29"},"nodeType":"YulFunctionCall","src":"813:14:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"801:3:29"},"nodeType":"YulFunctionCall","src":"801:27:29"},{"kind":"number","nodeType":"YulLiteral","src":"830:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"797:3:29"},"nodeType":"YulFunctionCall","src":"797:38:29"},{"name":"end","nodeType":"YulIdentifier","src":"837:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"794:2:29"},"nodeType":"YulFunctionCall","src":"794:47:29"},"nodeType":"YulIf","src":"791:67:29"}]},"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"544:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"552:3:29","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"560:8:29","type":""},{"name":"length","nodeType":"YulTypedName","src":"570:6:29","type":""}],"src":"497:367:29"},{"body":{"nodeType":"YulBlock","src":"1023:616:29","statements":[{"body":{"nodeType":"YulBlock","src":"1069:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1078:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1081:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1071:6:29"},"nodeType":"YulFunctionCall","src":"1071:12:29"},"nodeType":"YulExpressionStatement","src":"1071:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1044:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1053:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1040:3:29"},"nodeType":"YulFunctionCall","src":"1040:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1065:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1036:3:29"},"nodeType":"YulFunctionCall","src":"1036:32:29"},"nodeType":"YulIf","src":"1033:52:29"},{"nodeType":"YulVariableDeclaration","src":"1094:37:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1108:12:29"},"nodeType":"YulFunctionCall","src":"1108:23:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1098:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1140:28:29","value":{"kind":"number","nodeType":"YulLiteral","src":"1150:18:29","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1144:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1195:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1204:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1207:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1197:6:29"},"nodeType":"YulFunctionCall","src":"1197:12:29"},"nodeType":"YulExpressionStatement","src":"1197:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1183:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1191:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1180:2:29"},"nodeType":"YulFunctionCall","src":"1180:14:29"},"nodeType":"YulIf","src":"1177:34:29"},{"nodeType":"YulVariableDeclaration","src":"1220:96:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1288:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"1299:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1284:3:29"},"nodeType":"YulFunctionCall","src":"1284:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1308:7:29"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1246:37:29"},"nodeType":"YulFunctionCall","src":"1246:70:29"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"1224:8:29","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"1234:8:29","type":""}]},{"nodeType":"YulAssignment","src":"1325:18:29","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"1335:8:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1325:6:29"}]},{"nodeType":"YulAssignment","src":"1352:18:29","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1362:8:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1352:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1379:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1412:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1423:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1408:3:29"},"nodeType":"YulFunctionCall","src":"1408:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1395:12:29"},"nodeType":"YulFunctionCall","src":"1395:32:29"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1456:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1465:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1468:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1458:6:29"},"nodeType":"YulFunctionCall","src":"1458:12:29"},"nodeType":"YulExpressionStatement","src":"1458:12:29"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1442:8:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1452:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1439:2:29"},"nodeType":"YulFunctionCall","src":"1439:16:29"},"nodeType":"YulIf","src":"1436:36:29"},{"nodeType":"YulVariableDeclaration","src":"1481:98:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1549:9:29"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1560:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1545:3:29"},"nodeType":"YulFunctionCall","src":"1545:24:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1571:7:29"}],"functionName":{"name":"abi_decode_array_address_dyn_calldata","nodeType":"YulIdentifier","src":"1507:37:29"},"nodeType":"YulFunctionCall","src":"1507:72:29"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"1485:8:29","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"1495:8:29","type":""}]},{"nodeType":"YulAssignment","src":"1588:18:29","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1598:8:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1588:6:29"}]},{"nodeType":"YulAssignment","src":"1615:18:29","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1625:8:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1615:6:29"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"965:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"976:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"988:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"996:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1004:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1012:6:29","type":""}],"src":"869:770:29"},{"body":{"nodeType":"YulBlock","src":"1689:86:29","statements":[{"body":{"nodeType":"YulBlock","src":"1753:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1762:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1765:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1755:6:29"},"nodeType":"YulFunctionCall","src":"1755:12:29"},"nodeType":"YulExpressionStatement","src":"1755:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1712:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1723:5:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1738:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1743:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1734:3:29"},"nodeType":"YulFunctionCall","src":"1734:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"1747:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1730:3:29"},"nodeType":"YulFunctionCall","src":"1730:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1719:3:29"},"nodeType":"YulFunctionCall","src":"1719:31:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1709:2:29"},"nodeType":"YulFunctionCall","src":"1709:42:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1702:6:29"},"nodeType":"YulFunctionCall","src":"1702:50:29"},"nodeType":"YulIf","src":"1699:70:29"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1678:5:29","type":""}],"src":"1644:131:29"},{"body":{"nodeType":"YulBlock","src":"1812:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1829:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1836:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1841:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1832:3:29"},"nodeType":"YulFunctionCall","src":"1832:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1822:6:29"},"nodeType":"YulFunctionCall","src":"1822:31:29"},"nodeType":"YulExpressionStatement","src":"1822:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1869:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1872:4:29","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1862:6:29"},"nodeType":"YulFunctionCall","src":"1862:15:29"},"nodeType":"YulExpressionStatement","src":"1862:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1893:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1896:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1886:6:29"},"nodeType":"YulFunctionCall","src":"1886:15:29"},"nodeType":"YulExpressionStatement","src":"1886:15:29"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1780:127:29"},{"body":{"nodeType":"YulBlock","src":"1957:230:29","statements":[{"nodeType":"YulAssignment","src":"1967:19:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1983:2:29","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1977:5:29"},"nodeType":"YulFunctionCall","src":"1977:9:29"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1967:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1995:58:29","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2017:6:29"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2033:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"2039:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2029:3:29"},"nodeType":"YulFunctionCall","src":"2029:13:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2048:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2044:3:29"},"nodeType":"YulFunctionCall","src":"2044:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2025:3:29"},"nodeType":"YulFunctionCall","src":"2025:27:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2013:3:29"},"nodeType":"YulFunctionCall","src":"2013:40:29"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1999:10:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2128:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2130:16:29"},"nodeType":"YulFunctionCall","src":"2130:18:29"},"nodeType":"YulExpressionStatement","src":"2130:18:29"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2071:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2083:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2068:2:29"},"nodeType":"YulFunctionCall","src":"2068:34:29"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2107:10:29"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2119:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2104:2:29"},"nodeType":"YulFunctionCall","src":"2104:22:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2065:2:29"},"nodeType":"YulFunctionCall","src":"2065:62:29"},"nodeType":"YulIf","src":"2062:88:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2166:2:29","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2170:10:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2159:6:29"},"nodeType":"YulFunctionCall","src":"2159:22:29"},"nodeType":"YulExpressionStatement","src":"2159:22:29"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1937:4:29","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1946:6:29","type":""}],"src":"1912:275:29"},{"body":{"nodeType":"YulBlock","src":"2244:478:29","statements":[{"body":{"nodeType":"YulBlock","src":"2293:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2302:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2305:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2295:6:29"},"nodeType":"YulFunctionCall","src":"2295:12:29"},"nodeType":"YulExpressionStatement","src":"2295:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2272:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"2280:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2268:3:29"},"nodeType":"YulFunctionCall","src":"2268:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"2287:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2264:3:29"},"nodeType":"YulFunctionCall","src":"2264:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2257:6:29"},"nodeType":"YulFunctionCall","src":"2257:35:29"},"nodeType":"YulIf","src":"2254:55:29"},{"nodeType":"YulVariableDeclaration","src":"2318:30:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2341:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2328:12:29"},"nodeType":"YulFunctionCall","src":"2328:20:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2322:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2387:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2389:16:29"},"nodeType":"YulFunctionCall","src":"2389:18:29"},"nodeType":"YulExpressionStatement","src":"2389:18:29"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2363:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"2367:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2360:2:29"},"nodeType":"YulFunctionCall","src":"2360:26:29"},"nodeType":"YulIf","src":"2357:52:29"},{"nodeType":"YulVariableDeclaration","src":"2418:70:29","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2461:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"2465:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2457:3:29"},"nodeType":"YulFunctionCall","src":"2457:13:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2476:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2472:3:29"},"nodeType":"YulFunctionCall","src":"2472:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2453:3:29"},"nodeType":"YulFunctionCall","src":"2453:27:29"},{"kind":"number","nodeType":"YulLiteral","src":"2482:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2449:3:29"},"nodeType":"YulFunctionCall","src":"2449:38:29"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2433:15:29"},"nodeType":"YulFunctionCall","src":"2433:55:29"},"variables":[{"name":"array_1","nodeType":"YulTypedName","src":"2422:7:29","type":""}]},{"expression":{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2504:7:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2513:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2497:6:29"},"nodeType":"YulFunctionCall","src":"2497:19:29"},"nodeType":"YulExpressionStatement","src":"2497:19:29"},{"body":{"nodeType":"YulBlock","src":"2564:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2573:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2576:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2566:6:29"},"nodeType":"YulFunctionCall","src":"2566:12:29"},"nodeType":"YulExpressionStatement","src":"2566:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2539:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2547:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2535:3:29"},"nodeType":"YulFunctionCall","src":"2535:15:29"},{"kind":"number","nodeType":"YulLiteral","src":"2552:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2531:3:29"},"nodeType":"YulFunctionCall","src":"2531:26:29"},{"name":"end","nodeType":"YulIdentifier","src":"2559:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2528:2:29"},"nodeType":"YulFunctionCall","src":"2528:35:29"},"nodeType":"YulIf","src":"2525:55:29"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2606:7:29"},{"kind":"number","nodeType":"YulLiteral","src":"2615:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2602:3:29"},"nodeType":"YulFunctionCall","src":"2602:18:29"},{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2626:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"2634:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2622:3:29"},"nodeType":"YulFunctionCall","src":"2622:17:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2641:2:29"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2589:12:29"},"nodeType":"YulFunctionCall","src":"2589:55:29"},"nodeType":"YulExpressionStatement","src":"2589:55:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nodeType":"YulIdentifier","src":"2668:7:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2677:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2664:3:29"},"nodeType":"YulFunctionCall","src":"2664:16:29"},{"kind":"number","nodeType":"YulLiteral","src":"2682:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2660:3:29"},"nodeType":"YulFunctionCall","src":"2660:27:29"},{"kind":"number","nodeType":"YulLiteral","src":"2689:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2653:6:29"},"nodeType":"YulFunctionCall","src":"2653:38:29"},"nodeType":"YulExpressionStatement","src":"2653:38:29"},{"nodeType":"YulAssignment","src":"2700:16:29","value":{"name":"array_1","nodeType":"YulIdentifier","src":"2709:7:29"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2700:5:29"}]}]},"name":"abi_decode_bytes","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2218:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"2226:3:29","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2234:5:29","type":""}],"src":"2192:530:29"},{"body":{"nodeType":"YulBlock","src":"2857:535:29","statements":[{"body":{"nodeType":"YulBlock","src":"2904:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2916:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2906:6:29"},"nodeType":"YulFunctionCall","src":"2906:12:29"},"nodeType":"YulExpressionStatement","src":"2906:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2878:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2887:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2874:3:29"},"nodeType":"YulFunctionCall","src":"2874:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2899:3:29","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2870:3:29"},"nodeType":"YulFunctionCall","src":"2870:33:29"},"nodeType":"YulIf","src":"2867:53:29"},{"nodeType":"YulVariableDeclaration","src":"2929:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2955:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2942:12:29"},"nodeType":"YulFunctionCall","src":"2942:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2933:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2999:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2974:24:29"},"nodeType":"YulFunctionCall","src":"2974:31:29"},"nodeType":"YulExpressionStatement","src":"2974:31:29"},{"nodeType":"YulAssignment","src":"3014:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"3024:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3014:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3038:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3070:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3081:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3066:3:29"},"nodeType":"YulFunctionCall","src":"3066:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3053:12:29"},"nodeType":"YulFunctionCall","src":"3053:32:29"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3042:7:29","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3119:7:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3094:24:29"},"nodeType":"YulFunctionCall","src":"3094:33:29"},"nodeType":"YulExpressionStatement","src":"3094:33:29"},{"nodeType":"YulAssignment","src":"3136:17:29","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3146:7:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3136:6:29"}]},{"nodeType":"YulAssignment","src":"3162:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3189:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3200:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3185:3:29"},"nodeType":"YulFunctionCall","src":"3185:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3172:12:29"},"nodeType":"YulFunctionCall","src":"3172:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3162:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3213:46:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3244:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3255:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3240:3:29"},"nodeType":"YulFunctionCall","src":"3240:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3227:12:29"},"nodeType":"YulFunctionCall","src":"3227:32:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3217:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3302:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3311:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3314:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3304:6:29"},"nodeType":"YulFunctionCall","src":"3304:12:29"},"nodeType":"YulExpressionStatement","src":"3304:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3274:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"3282:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3271:2:29"},"nodeType":"YulFunctionCall","src":"3271:30:29"},"nodeType":"YulIf","src":"3268:50:29"},{"nodeType":"YulAssignment","src":"3327:59:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3358:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"3369:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3354:3:29"},"nodeType":"YulFunctionCall","src":"3354:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3378:7:29"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"3337:16:29"},"nodeType":"YulFunctionCall","src":"3337:49:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3327:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2799:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2810:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2822:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2830:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2838:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2846:6:29","type":""}],"src":"2727:665:29"},{"body":{"nodeType":"YulBlock","src":"3496:103:29","statements":[{"nodeType":"YulAssignment","src":"3506:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3518:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3529:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3514:3:29"},"nodeType":"YulFunctionCall","src":"3514:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3506:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3563:6:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3575:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3580:10:29","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3571:3:29"},"nodeType":"YulFunctionCall","src":"3571:20:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3559:3:29"},"nodeType":"YulFunctionCall","src":"3559:33:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3541:6:29"},"nodeType":"YulFunctionCall","src":"3541:52:29"},"nodeType":"YulExpressionStatement","src":"3541:52:29"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3465:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3476:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3487:4:29","type":""}],"src":"3397:202:29"},{"body":{"nodeType":"YulBlock","src":"3691:301:29","statements":[{"body":{"nodeType":"YulBlock","src":"3737:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3746:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3749:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3739:6:29"},"nodeType":"YulFunctionCall","src":"3739:12:29"},"nodeType":"YulExpressionStatement","src":"3739:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3712:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"3721:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3708:3:29"},"nodeType":"YulFunctionCall","src":"3708:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"3733:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3704:3:29"},"nodeType":"YulFunctionCall","src":"3704:32:29"},"nodeType":"YulIf","src":"3701:52:29"},{"nodeType":"YulVariableDeclaration","src":"3762:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3788:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3775:12:29"},"nodeType":"YulFunctionCall","src":"3775:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3766:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3832:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3807:24:29"},"nodeType":"YulFunctionCall","src":"3807:31:29"},"nodeType":"YulExpressionStatement","src":"3807:31:29"},{"nodeType":"YulAssignment","src":"3847:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"3857:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3847:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3871:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3903:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3914:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3899:3:29"},"nodeType":"YulFunctionCall","src":"3899:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3886:12:29"},"nodeType":"YulFunctionCall","src":"3886:32:29"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"3875:7:29","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"3952:7:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3927:24:29"},"nodeType":"YulFunctionCall","src":"3927:33:29"},"nodeType":"YulExpressionStatement","src":"3927:33:29"},{"nodeType":"YulAssignment","src":"3969:17:29","value":{"name":"value_1","nodeType":"YulIdentifier","src":"3979:7:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3969:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3649:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3660:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3672:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3680:6:29","type":""}],"src":"3604:388:29"},{"body":{"nodeType":"YulBlock","src":"4118:404:29","statements":[{"body":{"nodeType":"YulBlock","src":"4165:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4174:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4177:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4167:6:29"},"nodeType":"YulFunctionCall","src":"4167:12:29"},"nodeType":"YulExpressionStatement","src":"4167:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4139:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"4148:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4135:3:29"},"nodeType":"YulFunctionCall","src":"4135:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"4160:3:29","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4131:3:29"},"nodeType":"YulFunctionCall","src":"4131:33:29"},"nodeType":"YulIf","src":"4128:53:29"},{"nodeType":"YulVariableDeclaration","src":"4190:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4216:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4203:12:29"},"nodeType":"YulFunctionCall","src":"4203:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"4194:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4260:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4235:24:29"},"nodeType":"YulFunctionCall","src":"4235:31:29"},"nodeType":"YulExpressionStatement","src":"4235:31:29"},{"nodeType":"YulAssignment","src":"4275:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"4285:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4275:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"4299:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4331:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4342:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4327:3:29"},"nodeType":"YulFunctionCall","src":"4327:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4314:12:29"},"nodeType":"YulFunctionCall","src":"4314:32:29"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"4303:7:29","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"4380:7:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"4355:24:29"},"nodeType":"YulFunctionCall","src":"4355:33:29"},"nodeType":"YulExpressionStatement","src":"4355:33:29"},{"nodeType":"YulAssignment","src":"4397:17:29","value":{"name":"value_1","nodeType":"YulIdentifier","src":"4407:7:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4397:6:29"}]},{"nodeType":"YulAssignment","src":"4423:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4450:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4461:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4446:3:29"},"nodeType":"YulFunctionCall","src":"4446:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4433:12:29"},"nodeType":"YulFunctionCall","src":"4433:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4423:6:29"}]},{"nodeType":"YulAssignment","src":"4474:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4501:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4512:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4497:3:29"},"nodeType":"YulFunctionCall","src":"4497:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4484:12:29"},"nodeType":"YulFunctionCall","src":"4484:32:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4474:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4060:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4071:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4083:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4091:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4099:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4107:6:29","type":""}],"src":"3997:525:29"},{"body":{"nodeType":"YulBlock","src":"4628:102:29","statements":[{"nodeType":"YulAssignment","src":"4638:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4650:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4661:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4646:3:29"},"nodeType":"YulFunctionCall","src":"4646:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4638:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4680:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4695:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4711:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"4716:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4707:3:29"},"nodeType":"YulFunctionCall","src":"4707:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"4720:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4703:3:29"},"nodeType":"YulFunctionCall","src":"4703:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4691:3:29"},"nodeType":"YulFunctionCall","src":"4691:32:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4673:6:29"},"nodeType":"YulFunctionCall","src":"4673:51:29"},"nodeType":"YulExpressionStatement","src":"4673:51:29"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4597:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4608:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4619:4:29","type":""}],"src":"4527:203:29"},{"body":{"nodeType":"YulBlock","src":"4807:275:29","statements":[{"body":{"nodeType":"YulBlock","src":"4856:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4865:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4868:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4858:6:29"},"nodeType":"YulFunctionCall","src":"4858:12:29"},"nodeType":"YulExpressionStatement","src":"4858:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4835:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4843:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4831:3:29"},"nodeType":"YulFunctionCall","src":"4831:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"4850:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4827:3:29"},"nodeType":"YulFunctionCall","src":"4827:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4820:6:29"},"nodeType":"YulFunctionCall","src":"4820:35:29"},"nodeType":"YulIf","src":"4817:55:29"},{"nodeType":"YulAssignment","src":"4881:30:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4904:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4891:12:29"},"nodeType":"YulFunctionCall","src":"4891:20:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4881:6:29"}]},{"body":{"nodeType":"YulBlock","src":"4954:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4963:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4966:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4956:6:29"},"nodeType":"YulFunctionCall","src":"4956:12:29"},"nodeType":"YulExpressionStatement","src":"4956:12:29"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4926:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4934:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4923:2:29"},"nodeType":"YulFunctionCall","src":"4923:30:29"},"nodeType":"YulIf","src":"4920:50:29"},{"nodeType":"YulAssignment","src":"4979:29:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4995:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"5003:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4991:3:29"},"nodeType":"YulFunctionCall","src":"4991:17:29"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"4979:8:29"}]},{"body":{"nodeType":"YulBlock","src":"5060:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5069:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5072:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5062:6:29"},"nodeType":"YulFunctionCall","src":"5062:12:29"},"nodeType":"YulExpressionStatement","src":"5062:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5031:6:29"},{"name":"length","nodeType":"YulIdentifier","src":"5039:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5027:3:29"},"nodeType":"YulFunctionCall","src":"5027:19:29"},{"kind":"number","nodeType":"YulLiteral","src":"5048:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5023:3:29"},"nodeType":"YulFunctionCall","src":"5023:30:29"},{"name":"end","nodeType":"YulIdentifier","src":"5055:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5020:2:29"},"nodeType":"YulFunctionCall","src":"5020:39:29"},"nodeType":"YulIf","src":"5017:59:29"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4770:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"4778:3:29","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"4786:8:29","type":""},{"name":"length","nodeType":"YulTypedName","src":"4796:6:29","type":""}],"src":"4735:347:29"},{"body":{"nodeType":"YulBlock","src":"5210:489:29","statements":[{"body":{"nodeType":"YulBlock","src":"5256:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5265:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5268:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5258:6:29"},"nodeType":"YulFunctionCall","src":"5258:12:29"},"nodeType":"YulExpressionStatement","src":"5258:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5231:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"5240:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5227:3:29"},"nodeType":"YulFunctionCall","src":"5227:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"5252:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5223:3:29"},"nodeType":"YulFunctionCall","src":"5223:32:29"},"nodeType":"YulIf","src":"5220:52:29"},{"nodeType":"YulVariableDeclaration","src":"5281:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5307:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5294:12:29"},"nodeType":"YulFunctionCall","src":"5294:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5285:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5351:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"5326:24:29"},"nodeType":"YulFunctionCall","src":"5326:31:29"},"nodeType":"YulExpressionStatement","src":"5326:31:29"},{"nodeType":"YulAssignment","src":"5366:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"5376:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5366:6:29"}]},{"nodeType":"YulAssignment","src":"5390:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5417:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5428:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5413:3:29"},"nodeType":"YulFunctionCall","src":"5413:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5400:12:29"},"nodeType":"YulFunctionCall","src":"5400:32:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5390:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"5441:46:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5472:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5483:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5468:3:29"},"nodeType":"YulFunctionCall","src":"5468:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5455:12:29"},"nodeType":"YulFunctionCall","src":"5455:32:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5445:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"5530:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5539:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5542:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5532:6:29"},"nodeType":"YulFunctionCall","src":"5532:12:29"},"nodeType":"YulExpressionStatement","src":"5532:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5502:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"5510:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5499:2:29"},"nodeType":"YulFunctionCall","src":"5499:30:29"},"nodeType":"YulIf","src":"5496:50:29"},{"nodeType":"YulVariableDeclaration","src":"5555:84:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5611:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"5622:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5607:3:29"},"nodeType":"YulFunctionCall","src":"5607:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5631:7:29"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"5581:25:29"},"nodeType":"YulFunctionCall","src":"5581:58:29"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"5559:8:29","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"5569:8:29","type":""}]},{"nodeType":"YulAssignment","src":"5648:18:29","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"5658:8:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5648:6:29"}]},{"nodeType":"YulAssignment","src":"5675:18:29","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"5685:8:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5675:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5152:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5163:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5175:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5183:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5191:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5199:6:29","type":""}],"src":"5087:612:29"},{"body":{"nodeType":"YulBlock","src":"5823:427:29","statements":[{"nodeType":"YulVariableDeclaration","src":"5833:12:29","value":{"kind":"number","nodeType":"YulLiteral","src":"5843:2:29","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5837:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5861:9:29"},{"name":"_1","nodeType":"YulIdentifier","src":"5872:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5854:6:29"},"nodeType":"YulFunctionCall","src":"5854:21:29"},"nodeType":"YulExpressionStatement","src":"5854:21:29"},{"nodeType":"YulVariableDeclaration","src":"5884:27:29","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5904:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5898:5:29"},"nodeType":"YulFunctionCall","src":"5898:13:29"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5888:6:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5931:9:29"},{"name":"_1","nodeType":"YulIdentifier","src":"5942:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5927:3:29"},"nodeType":"YulFunctionCall","src":"5927:18:29"},{"name":"length","nodeType":"YulIdentifier","src":"5947:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5920:6:29"},"nodeType":"YulFunctionCall","src":"5920:34:29"},"nodeType":"YulExpressionStatement","src":"5920:34:29"},{"nodeType":"YulVariableDeclaration","src":"5963:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"5972:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5967:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"6032:90:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6061:9:29"},{"name":"i","nodeType":"YulIdentifier","src":"6072:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6057:3:29"},"nodeType":"YulFunctionCall","src":"6057:17:29"},{"kind":"number","nodeType":"YulLiteral","src":"6076:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6053:3:29"},"nodeType":"YulFunctionCall","src":"6053:26:29"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6095:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"6103:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6091:3:29"},"nodeType":"YulFunctionCall","src":"6091:14:29"},{"name":"_1","nodeType":"YulIdentifier","src":"6107:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6087:3:29"},"nodeType":"YulFunctionCall","src":"6087:23:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6081:5:29"},"nodeType":"YulFunctionCall","src":"6081:30:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6046:6:29"},"nodeType":"YulFunctionCall","src":"6046:66:29"},"nodeType":"YulExpressionStatement","src":"6046:66:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5993:1:29"},{"name":"length","nodeType":"YulIdentifier","src":"5996:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5990:2:29"},"nodeType":"YulFunctionCall","src":"5990:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6004:19:29","statements":[{"nodeType":"YulAssignment","src":"6006:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6015:1:29"},{"name":"_1","nodeType":"YulIdentifier","src":"6018:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6011:3:29"},"nodeType":"YulFunctionCall","src":"6011:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6006:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"5986:3:29","statements":[]},"src":"5982:140:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6146:9:29"},{"name":"length","nodeType":"YulIdentifier","src":"6157:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6142:3:29"},"nodeType":"YulFunctionCall","src":"6142:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"6166:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6138:3:29"},"nodeType":"YulFunctionCall","src":"6138:31:29"},{"kind":"number","nodeType":"YulLiteral","src":"6171:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6131:6:29"},"nodeType":"YulFunctionCall","src":"6131:42:29"},"nodeType":"YulExpressionStatement","src":"6131:42:29"},{"nodeType":"YulAssignment","src":"6182:62:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6198:9:29"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6217:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"6225:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6213:3:29"},"nodeType":"YulFunctionCall","src":"6213:15:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6234:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6230:3:29"},"nodeType":"YulFunctionCall","src":"6230:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6209:3:29"},"nodeType":"YulFunctionCall","src":"6209:29:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6194:3:29"},"nodeType":"YulFunctionCall","src":"6194:45:29"},{"kind":"number","nodeType":"YulLiteral","src":"6241:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6190:3:29"},"nodeType":"YulFunctionCall","src":"6190:54:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6182:4:29"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5792:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5803:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5814:4:29","type":""}],"src":"5704:546:29"},{"body":{"nodeType":"YulBlock","src":"6342:228:29","statements":[{"body":{"nodeType":"YulBlock","src":"6388:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6397:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6400:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6390:6:29"},"nodeType":"YulFunctionCall","src":"6390:12:29"},"nodeType":"YulExpressionStatement","src":"6390:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6363:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"6372:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6359:3:29"},"nodeType":"YulFunctionCall","src":"6359:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"6384:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6355:3:29"},"nodeType":"YulFunctionCall","src":"6355:32:29"},"nodeType":"YulIf","src":"6352:52:29"},{"nodeType":"YulVariableDeclaration","src":"6413:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6439:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6426:12:29"},"nodeType":"YulFunctionCall","src":"6426:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6417:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6483:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"6458:24:29"},"nodeType":"YulFunctionCall","src":"6458:31:29"},"nodeType":"YulExpressionStatement","src":"6458:31:29"},{"nodeType":"YulAssignment","src":"6498:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"6508:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6498:6:29"}]},{"nodeType":"YulAssignment","src":"6522:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6549:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6560:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6545:3:29"},"nodeType":"YulFunctionCall","src":"6545:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6532:12:29"},"nodeType":"YulFunctionCall","src":"6532:32:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6522:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6300:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6311:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6323:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6331:6:29","type":""}],"src":"6255:315:29"},{"body":{"nodeType":"YulBlock","src":"6679:279:29","statements":[{"body":{"nodeType":"YulBlock","src":"6725:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6734:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6737:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6727:6:29"},"nodeType":"YulFunctionCall","src":"6727:12:29"},"nodeType":"YulExpressionStatement","src":"6727:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6700:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"6709:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6696:3:29"},"nodeType":"YulFunctionCall","src":"6696:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"6721:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6692:3:29"},"nodeType":"YulFunctionCall","src":"6692:32:29"},"nodeType":"YulIf","src":"6689:52:29"},{"nodeType":"YulVariableDeclaration","src":"6750:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6776:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6763:12:29"},"nodeType":"YulFunctionCall","src":"6763:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"6754:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6820:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"6795:24:29"},"nodeType":"YulFunctionCall","src":"6795:31:29"},"nodeType":"YulExpressionStatement","src":"6795:31:29"},{"nodeType":"YulAssignment","src":"6835:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"6845:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6835:6:29"}]},{"nodeType":"YulAssignment","src":"6859:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6886:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6897:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6882:3:29"},"nodeType":"YulFunctionCall","src":"6882:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6869:12:29"},"nodeType":"YulFunctionCall","src":"6869:32:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6859:6:29"}]},{"nodeType":"YulAssignment","src":"6910:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6937:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6948:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6933:3:29"},"nodeType":"YulFunctionCall","src":"6933:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6920:12:29"},"nodeType":"YulFunctionCall","src":"6920:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"6910:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6629:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6640:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6652:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6660:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6668:6:29","type":""}],"src":"6575:383:29"},{"body":{"nodeType":"YulBlock","src":"7027:648:29","statements":[{"body":{"nodeType":"YulBlock","src":"7076:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7085:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7088:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7078:6:29"},"nodeType":"YulFunctionCall","src":"7078:12:29"},"nodeType":"YulExpressionStatement","src":"7078:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7055:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"7063:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7051:3:29"},"nodeType":"YulFunctionCall","src":"7051:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"7070:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7047:3:29"},"nodeType":"YulFunctionCall","src":"7047:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7040:6:29"},"nodeType":"YulFunctionCall","src":"7040:35:29"},"nodeType":"YulIf","src":"7037:55:29"},{"nodeType":"YulVariableDeclaration","src":"7101:30:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7124:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7111:12:29"},"nodeType":"YulFunctionCall","src":"7111:20:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"7105:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7140:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"7150:4:29","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"7144:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"7193:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7195:16:29"},"nodeType":"YulFunctionCall","src":"7195:18:29"},"nodeType":"YulExpressionStatement","src":"7195:18:29"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"7169:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"7173:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7166:2:29"},"nodeType":"YulFunctionCall","src":"7166:26:29"},"nodeType":"YulIf","src":"7163:52:29"},{"nodeType":"YulVariableDeclaration","src":"7224:20:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7238:1:29","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"7241:2:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7234:3:29"},"nodeType":"YulFunctionCall","src":"7234:10:29"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"7228:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7253:39:29","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"7284:2:29"},{"name":"_2","nodeType":"YulIdentifier","src":"7288:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7280:3:29"},"nodeType":"YulFunctionCall","src":"7280:11:29"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"7264:15:29"},"nodeType":"YulFunctionCall","src":"7264:28:29"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"7257:3:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7301:16:29","value":{"name":"dst","nodeType":"YulIdentifier","src":"7314:3:29"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"7305:5:29","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7333:3:29"},{"name":"_1","nodeType":"YulIdentifier","src":"7338:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7326:6:29"},"nodeType":"YulFunctionCall","src":"7326:15:29"},"nodeType":"YulExpressionStatement","src":"7326:15:29"},{"nodeType":"YulAssignment","src":"7350:19:29","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7361:3:29"},{"name":"_2","nodeType":"YulIdentifier","src":"7366:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7357:3:29"},"nodeType":"YulFunctionCall","src":"7357:12:29"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"7350:3:29"}]},{"nodeType":"YulVariableDeclaration","src":"7378:38:29","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7400:6:29"},{"name":"_3","nodeType":"YulIdentifier","src":"7408:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7396:3:29"},"nodeType":"YulFunctionCall","src":"7396:15:29"},{"name":"_2","nodeType":"YulIdentifier","src":"7413:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7392:3:29"},"nodeType":"YulFunctionCall","src":"7392:24:29"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"7382:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"7444:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7453:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7456:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7446:6:29"},"nodeType":"YulFunctionCall","src":"7446:12:29"},"nodeType":"YulExpressionStatement","src":"7446:12:29"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"7431:6:29"},{"name":"end","nodeType":"YulIdentifier","src":"7439:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7428:2:29"},"nodeType":"YulFunctionCall","src":"7428:15:29"},"nodeType":"YulIf","src":"7425:35:29"},{"nodeType":"YulVariableDeclaration","src":"7469:26:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7484:6:29"},{"name":"_2","nodeType":"YulIdentifier","src":"7492:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7480:3:29"},"nodeType":"YulFunctionCall","src":"7480:15:29"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"7473:3:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"7560:86:29","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7581:3:29"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7599:3:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7586:12:29"},"nodeType":"YulFunctionCall","src":"7586:17:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7574:6:29"},"nodeType":"YulFunctionCall","src":"7574:30:29"},"nodeType":"YulExpressionStatement","src":"7574:30:29"},{"nodeType":"YulAssignment","src":"7617:19:29","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7628:3:29"},{"name":"_2","nodeType":"YulIdentifier","src":"7633:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7624:3:29"},"nodeType":"YulFunctionCall","src":"7624:12:29"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"7617:3:29"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7515:3:29"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"7520:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7512:2:29"},"nodeType":"YulFunctionCall","src":"7512:15:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7528:23:29","statements":[{"nodeType":"YulAssignment","src":"7530:19:29","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7541:3:29"},{"name":"_2","nodeType":"YulIdentifier","src":"7546:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7537:3:29"},"nodeType":"YulFunctionCall","src":"7537:12:29"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"7530:3:29"}]}]},"pre":{"nodeType":"YulBlock","src":"7508:3:29","statements":[]},"src":"7504:142:29"},{"nodeType":"YulAssignment","src":"7655:14:29","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"7664:5:29"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"7655:5:29"}]}]},"name":"abi_decode_array_uint256_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7001:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"7009:3:29","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"7017:5:29","type":""}],"src":"6963:712:29"},{"body":{"nodeType":"YulBlock","src":"7877:874:29","statements":[{"body":{"nodeType":"YulBlock","src":"7924:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7933:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7936:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7926:6:29"},"nodeType":"YulFunctionCall","src":"7926:12:29"},"nodeType":"YulExpressionStatement","src":"7926:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7898:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"7907:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7894:3:29"},"nodeType":"YulFunctionCall","src":"7894:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"7919:3:29","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7890:3:29"},"nodeType":"YulFunctionCall","src":"7890:33:29"},"nodeType":"YulIf","src":"7887:53:29"},{"nodeType":"YulVariableDeclaration","src":"7949:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7975:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"7962:12:29"},"nodeType":"YulFunctionCall","src":"7962:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"7953:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8019:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"7994:24:29"},"nodeType":"YulFunctionCall","src":"7994:31:29"},"nodeType":"YulExpressionStatement","src":"7994:31:29"},{"nodeType":"YulAssignment","src":"8034:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"8044:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8034:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"8058:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8090:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8101:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8086:3:29"},"nodeType":"YulFunctionCall","src":"8086:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8073:12:29"},"nodeType":"YulFunctionCall","src":"8073:32:29"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"8062:7:29","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"8139:7:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"8114:24:29"},"nodeType":"YulFunctionCall","src":"8114:33:29"},"nodeType":"YulExpressionStatement","src":"8114:33:29"},{"nodeType":"YulAssignment","src":"8156:17:29","value":{"name":"value_1","nodeType":"YulIdentifier","src":"8166:7:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8156:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"8182:46:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8213:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8224:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8209:3:29"},"nodeType":"YulFunctionCall","src":"8209:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8196:12:29"},"nodeType":"YulFunctionCall","src":"8196:32:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8186:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8237:28:29","value":{"kind":"number","nodeType":"YulLiteral","src":"8247:18:29","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8241:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"8292:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8301:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8304:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8294:6:29"},"nodeType":"YulFunctionCall","src":"8294:12:29"},"nodeType":"YulExpressionStatement","src":"8294:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8280:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"8288:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8277:2:29"},"nodeType":"YulFunctionCall","src":"8277:14:29"},"nodeType":"YulIf","src":"8274:34:29"},{"nodeType":"YulAssignment","src":"8317:71:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8360:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"8371:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8356:3:29"},"nodeType":"YulFunctionCall","src":"8356:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8380:7:29"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"8327:28:29"},"nodeType":"YulFunctionCall","src":"8327:61:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"8317:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"8397:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8430:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8441:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8426:3:29"},"nodeType":"YulFunctionCall","src":"8426:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8413:12:29"},"nodeType":"YulFunctionCall","src":"8413:32:29"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"8401:8:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"8474:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8483:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8486:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8476:6:29"},"nodeType":"YulFunctionCall","src":"8476:12:29"},"nodeType":"YulExpressionStatement","src":"8476:12:29"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"8460:8:29"},{"name":"_1","nodeType":"YulIdentifier","src":"8470:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8457:2:29"},"nodeType":"YulFunctionCall","src":"8457:16:29"},"nodeType":"YulIf","src":"8454:36:29"},{"nodeType":"YulAssignment","src":"8499:73:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8542:9:29"},{"name":"offset_1","nodeType":"YulIdentifier","src":"8553:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8538:3:29"},"nodeType":"YulFunctionCall","src":"8538:24:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8564:7:29"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nodeType":"YulIdentifier","src":"8509:28:29"},"nodeType":"YulFunctionCall","src":"8509:63:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"8499:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"8581:49:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8614:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8625:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8610:3:29"},"nodeType":"YulFunctionCall","src":"8610:19:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8597:12:29"},"nodeType":"YulFunctionCall","src":"8597:33:29"},"variables":[{"name":"offset_2","nodeType":"YulTypedName","src":"8585:8:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"8659:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8668:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8671:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8661:6:29"},"nodeType":"YulFunctionCall","src":"8661:12:29"},"nodeType":"YulExpressionStatement","src":"8661:12:29"}]},"condition":{"arguments":[{"name":"offset_2","nodeType":"YulIdentifier","src":"8645:8:29"},{"name":"_1","nodeType":"YulIdentifier","src":"8655:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8642:2:29"},"nodeType":"YulFunctionCall","src":"8642:16:29"},"nodeType":"YulIf","src":"8639:36:29"},{"nodeType":"YulAssignment","src":"8684:61:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8715:9:29"},{"name":"offset_2","nodeType":"YulIdentifier","src":"8726:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8711:3:29"},"nodeType":"YulFunctionCall","src":"8711:24:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8737:7:29"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"8694:16:29"},"nodeType":"YulFunctionCall","src":"8694:51:29"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"8684:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7811:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7822:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7834:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7842:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7850:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7858:6:29","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7866:6:29","type":""}],"src":"7680:1071:29"},{"body":{"nodeType":"YulBlock","src":"8860:352:29","statements":[{"body":{"nodeType":"YulBlock","src":"8906:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8915:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8918:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8908:6:29"},"nodeType":"YulFunctionCall","src":"8908:12:29"},"nodeType":"YulExpressionStatement","src":"8908:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8881:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"8890:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8877:3:29"},"nodeType":"YulFunctionCall","src":"8877:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"8902:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8873:3:29"},"nodeType":"YulFunctionCall","src":"8873:32:29"},"nodeType":"YulIf","src":"8870:52:29"},{"nodeType":"YulVariableDeclaration","src":"8931:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8957:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8944:12:29"},"nodeType":"YulFunctionCall","src":"8944:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"8935:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9001:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"8976:24:29"},"nodeType":"YulFunctionCall","src":"8976:31:29"},"nodeType":"YulExpressionStatement","src":"8976:31:29"},{"nodeType":"YulAssignment","src":"9016:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"9026:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9016:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"9040:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9072:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9083:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9068:3:29"},"nodeType":"YulFunctionCall","src":"9068:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9055:12:29"},"nodeType":"YulFunctionCall","src":"9055:32:29"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"9044:7:29","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"9121:7:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"9096:24:29"},"nodeType":"YulFunctionCall","src":"9096:33:29"},"nodeType":"YulExpressionStatement","src":"9096:33:29"},{"nodeType":"YulAssignment","src":"9138:17:29","value":{"name":"value_1","nodeType":"YulIdentifier","src":"9148:7:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9138:6:29"}]},{"nodeType":"YulAssignment","src":"9164:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9191:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9202:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9187:3:29"},"nodeType":"YulFunctionCall","src":"9187:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9174:12:29"},"nodeType":"YulFunctionCall","src":"9174:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9164:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8810:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8821:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8833:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8841:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8849:6:29","type":""}],"src":"8756:456:29"},{"body":{"nodeType":"YulBlock","src":"9318:76:29","statements":[{"nodeType":"YulAssignment","src":"9328:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9340:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9351:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9336:3:29"},"nodeType":"YulFunctionCall","src":"9336:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9328:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9370:9:29"},{"name":"value0","nodeType":"YulIdentifier","src":"9381:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9363:6:29"},"nodeType":"YulFunctionCall","src":"9363:25:29"},"nodeType":"YulExpressionStatement","src":"9363:25:29"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9287:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9298:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9309:4:29","type":""}],"src":"9217:177:29"},{"body":{"nodeType":"YulBlock","src":"9488:320:29","statements":[{"body":{"nodeType":"YulBlock","src":"9534:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9543:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9546:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9536:6:29"},"nodeType":"YulFunctionCall","src":"9536:12:29"},"nodeType":"YulExpressionStatement","src":"9536:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9509:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"9518:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9505:3:29"},"nodeType":"YulFunctionCall","src":"9505:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"9530:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9501:3:29"},"nodeType":"YulFunctionCall","src":"9501:32:29"},"nodeType":"YulIf","src":"9498:52:29"},{"nodeType":"YulVariableDeclaration","src":"9559:37:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9586:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9573:12:29"},"nodeType":"YulFunctionCall","src":"9573:23:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9563:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"9639:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9648:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9651:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9641:6:29"},"nodeType":"YulFunctionCall","src":"9641:12:29"},"nodeType":"YulExpressionStatement","src":"9641:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9611:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"9619:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9608:2:29"},"nodeType":"YulFunctionCall","src":"9608:30:29"},"nodeType":"YulIf","src":"9605:50:29"},{"nodeType":"YulVariableDeclaration","src":"9664:84:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9720:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"9731:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9716:3:29"},"nodeType":"YulFunctionCall","src":"9716:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9740:7:29"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"9690:25:29"},"nodeType":"YulFunctionCall","src":"9690:58:29"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"9668:8:29","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"9678:8:29","type":""}]},{"nodeType":"YulAssignment","src":"9757:18:29","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"9767:8:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9757:6:29"}]},{"nodeType":"YulAssignment","src":"9784:18:29","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"9794:8:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9784:6:29"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9446:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9457:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9469:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9477:6:29","type":""}],"src":"9399:409:29"},{"body":{"nodeType":"YulBlock","src":"9883:110:29","statements":[{"body":{"nodeType":"YulBlock","src":"9929:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9938:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9941:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9931:6:29"},"nodeType":"YulFunctionCall","src":"9931:12:29"},"nodeType":"YulExpressionStatement","src":"9931:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9904:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"9913:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9900:3:29"},"nodeType":"YulFunctionCall","src":"9900:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"9925:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9896:3:29"},"nodeType":"YulFunctionCall","src":"9896:32:29"},"nodeType":"YulIf","src":"9893:52:29"},{"nodeType":"YulAssignment","src":"9954:33:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9977:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9964:12:29"},"nodeType":"YulFunctionCall","src":"9964:23:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9954:6:29"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9849:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9860:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9872:6:29","type":""}],"src":"9813:180:29"},{"body":{"nodeType":"YulBlock","src":"10145:587:29","statements":[{"body":{"nodeType":"YulBlock","src":"10192:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10201:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10204:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10194:6:29"},"nodeType":"YulFunctionCall","src":"10194:12:29"},"nodeType":"YulExpressionStatement","src":"10194:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10166:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"10175:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10162:3:29"},"nodeType":"YulFunctionCall","src":"10162:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"10187:3:29","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10158:3:29"},"nodeType":"YulFunctionCall","src":"10158:33:29"},"nodeType":"YulIf","src":"10155:53:29"},{"nodeType":"YulVariableDeclaration","src":"10217:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10243:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10230:12:29"},"nodeType":"YulFunctionCall","src":"10230:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10221:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10287:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"10262:24:29"},"nodeType":"YulFunctionCall","src":"10262:31:29"},"nodeType":"YulExpressionStatement","src":"10262:31:29"},{"nodeType":"YulAssignment","src":"10302:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"10312:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10302:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"10326:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10358:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10369:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10354:3:29"},"nodeType":"YulFunctionCall","src":"10354:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10341:12:29"},"nodeType":"YulFunctionCall","src":"10341:32:29"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"10330:7:29","type":""}]},{"expression":{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"10407:7:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"10382:24:29"},"nodeType":"YulFunctionCall","src":"10382:33:29"},"nodeType":"YulExpressionStatement","src":"10382:33:29"},{"nodeType":"YulAssignment","src":"10424:17:29","value":{"name":"value_1","nodeType":"YulIdentifier","src":"10434:7:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10424:6:29"}]},{"nodeType":"YulAssignment","src":"10450:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10477:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10488:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10473:3:29"},"nodeType":"YulFunctionCall","src":"10473:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10460:12:29"},"nodeType":"YulFunctionCall","src":"10460:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"10450:6:29"}]},{"nodeType":"YulAssignment","src":"10501:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10528:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10539:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10524:3:29"},"nodeType":"YulFunctionCall","src":"10524:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10511:12:29"},"nodeType":"YulFunctionCall","src":"10511:32:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"10501:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"10552:47:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10583:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10594:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10579:3:29"},"nodeType":"YulFunctionCall","src":"10579:19:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10566:12:29"},"nodeType":"YulFunctionCall","src":"10566:33:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10556:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"10642:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10651:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10654:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10644:6:29"},"nodeType":"YulFunctionCall","src":"10644:12:29"},"nodeType":"YulExpressionStatement","src":"10644:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10614:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"10622:18:29","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10611:2:29"},"nodeType":"YulFunctionCall","src":"10611:30:29"},"nodeType":"YulIf","src":"10608:50:29"},{"nodeType":"YulAssignment","src":"10667:59:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10698:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"10709:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10694:3:29"},"nodeType":"YulFunctionCall","src":"10694:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10718:7:29"}],"functionName":{"name":"abi_decode_bytes","nodeType":"YulIdentifier","src":"10677:16:29"},"nodeType":"YulFunctionCall","src":"10677:49:29"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"10667:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10079:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10090:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10102:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10110:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10118:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10126:6:29","type":""},{"name":"value4","nodeType":"YulTypedName","src":"10134:6:29","type":""}],"src":"9998:734:29"},{"body":{"nodeType":"YulBlock","src":"10894:188:29","statements":[{"nodeType":"YulAssignment","src":"10904:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10916:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10927:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10912:3:29"},"nodeType":"YulFunctionCall","src":"10912:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10904:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10946:9:29"},{"name":"value0","nodeType":"YulIdentifier","src":"10957:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10939:6:29"},"nodeType":"YulFunctionCall","src":"10939:25:29"},"nodeType":"YulExpressionStatement","src":"10939:25:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10984:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10995:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10980:3:29"},"nodeType":"YulFunctionCall","src":"10980:18:29"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"11004:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11020:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"11025:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11016:3:29"},"nodeType":"YulFunctionCall","src":"11016:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"11029:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11012:3:29"},"nodeType":"YulFunctionCall","src":"11012:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11000:3:29"},"nodeType":"YulFunctionCall","src":"11000:32:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10973:6:29"},"nodeType":"YulFunctionCall","src":"10973:60:29"},"nodeType":"YulExpressionStatement","src":"10973:60:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11053:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"11064:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11049:3:29"},"nodeType":"YulFunctionCall","src":"11049:18:29"},{"name":"value2","nodeType":"YulIdentifier","src":"11069:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11042:6:29"},"nodeType":"YulFunctionCall","src":"11042:34:29"},"nodeType":"YulExpressionStatement","src":"11042:34:29"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10847:9:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10858:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10866:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10874:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10885:4:29","type":""}],"src":"10737:345:29"},{"body":{"nodeType":"YulBlock","src":"11157:177:29","statements":[{"body":{"nodeType":"YulBlock","src":"11203:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11212:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11215:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11205:6:29"},"nodeType":"YulFunctionCall","src":"11205:12:29"},"nodeType":"YulExpressionStatement","src":"11205:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11178:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"11187:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11174:3:29"},"nodeType":"YulFunctionCall","src":"11174:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"11199:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11170:3:29"},"nodeType":"YulFunctionCall","src":"11170:32:29"},"nodeType":"YulIf","src":"11167:52:29"},{"nodeType":"YulVariableDeclaration","src":"11228:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11254:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11241:12:29"},"nodeType":"YulFunctionCall","src":"11241:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11232:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11298:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"11273:24:29"},"nodeType":"YulFunctionCall","src":"11273:31:29"},"nodeType":"YulExpressionStatement","src":"11273:31:29"},{"nodeType":"YulAssignment","src":"11313:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"11323:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11313:6:29"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11123:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11134:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11146:6:29","type":""}],"src":"11087:247:29"},{"body":{"nodeType":"YulBlock","src":"11371:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11388:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11395:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"11400:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"11391:3:29"},"nodeType":"YulFunctionCall","src":"11391:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11381:6:29"},"nodeType":"YulFunctionCall","src":"11381:31:29"},"nodeType":"YulExpressionStatement","src":"11381:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11428:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11431:4:29","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11421:6:29"},"nodeType":"YulFunctionCall","src":"11421:15:29"},"nodeType":"YulExpressionStatement","src":"11421:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11452:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11455:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11445:6:29"},"nodeType":"YulFunctionCall","src":"11445:15:29"},"nodeType":"YulExpressionStatement","src":"11445:15:29"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"11339:127:29"},{"body":{"nodeType":"YulBlock","src":"11513:76:29","statements":[{"body":{"nodeType":"YulBlock","src":"11567:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11576:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11579:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11569:6:29"},"nodeType":"YulFunctionCall","src":"11569:12:29"},"nodeType":"YulExpressionStatement","src":"11569:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11536:5:29"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11557:5:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11550:6:29"},"nodeType":"YulFunctionCall","src":"11550:13:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11543:6:29"},"nodeType":"YulFunctionCall","src":"11543:21:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11533:2:29"},"nodeType":"YulFunctionCall","src":"11533:32:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11526:6:29"},"nodeType":"YulFunctionCall","src":"11526:40:29"},"nodeType":"YulIf","src":"11523:60:29"}]},"name":"validator_revert_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11502:5:29","type":""}],"src":"11471:118:29"},{"body":{"nodeType":"YulBlock","src":"11661:174:29","statements":[{"body":{"nodeType":"YulBlock","src":"11707:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11716:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11719:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11709:6:29"},"nodeType":"YulFunctionCall","src":"11709:12:29"},"nodeType":"YulExpressionStatement","src":"11709:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"11682:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"11691:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11678:3:29"},"nodeType":"YulFunctionCall","src":"11678:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"11703:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11674:3:29"},"nodeType":"YulFunctionCall","src":"11674:32:29"},"nodeType":"YulIf","src":"11671:52:29"},{"nodeType":"YulVariableDeclaration","src":"11732:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11758:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11745:12:29"},"nodeType":"YulFunctionCall","src":"11745:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"11736:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11799:5:29"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"11777:21:29"},"nodeType":"YulFunctionCall","src":"11777:28:29"},"nodeType":"YulExpressionStatement","src":"11777:28:29"},{"nodeType":"YulAssignment","src":"11814:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"11824:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"11814:6:29"}]}]},"name":"abi_decode_tuple_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11627:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"11638:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"11650:6:29","type":""}],"src":"11594:241:29"},{"body":{"nodeType":"YulBlock","src":"11991:234:29","statements":[{"nodeType":"YulAssignment","src":"12001:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12013:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"12024:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12009:3:29"},"nodeType":"YulFunctionCall","src":"12009:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12001:4:29"}]},{"nodeType":"YulVariableDeclaration","src":"12036:29:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12054:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"12059:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12050:3:29"},"nodeType":"YulFunctionCall","src":"12050:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"12063:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12046:3:29"},"nodeType":"YulFunctionCall","src":"12046:19:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12040:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12081:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12096:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"12104:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12092:3:29"},"nodeType":"YulFunctionCall","src":"12092:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12074:6:29"},"nodeType":"YulFunctionCall","src":"12074:34:29"},"nodeType":"YulExpressionStatement","src":"12074:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12128:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"12139:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12124:3:29"},"nodeType":"YulFunctionCall","src":"12124:18:29"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12148:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"12156:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12144:3:29"},"nodeType":"YulFunctionCall","src":"12144:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12117:6:29"},"nodeType":"YulFunctionCall","src":"12117:43:29"},"nodeType":"YulExpressionStatement","src":"12117:43:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12180:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"12191:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12176:3:29"},"nodeType":"YulFunctionCall","src":"12176:18:29"},{"arguments":[{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"12210:6:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12203:6:29"},"nodeType":"YulFunctionCall","src":"12203:14:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12196:6:29"},"nodeType":"YulFunctionCall","src":"12196:22:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12169:6:29"},"nodeType":"YulFunctionCall","src":"12169:50:29"},"nodeType":"YulExpressionStatement","src":"12169:50:29"}]},"name":"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11944:9:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11955:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11963:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11971:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11982:4:29","type":""}],"src":"11840:385:29"},{"body":{"nodeType":"YulBlock","src":"12262:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12279:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12286:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"12291:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12282:3:29"},"nodeType":"YulFunctionCall","src":"12282:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12272:6:29"},"nodeType":"YulFunctionCall","src":"12272:31:29"},"nodeType":"YulExpressionStatement","src":"12272:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12319:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12322:4:29","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12312:6:29"},"nodeType":"YulFunctionCall","src":"12312:15:29"},"nodeType":"YulExpressionStatement","src":"12312:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12343:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12346:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12336:6:29"},"nodeType":"YulFunctionCall","src":"12336:15:29"},"nodeType":"YulExpressionStatement","src":"12336:15:29"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"12230:127:29"},{"body":{"nodeType":"YulBlock","src":"12409:88:29","statements":[{"body":{"nodeType":"YulBlock","src":"12440:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"12442:16:29"},"nodeType":"YulFunctionCall","src":"12442:18:29"},"nodeType":"YulExpressionStatement","src":"12442:18:29"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12425:5:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12436:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"12432:3:29"},"nodeType":"YulFunctionCall","src":"12432:6:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12422:2:29"},"nodeType":"YulFunctionCall","src":"12422:17:29"},"nodeType":"YulIf","src":"12419:43:29"},{"nodeType":"YulAssignment","src":"12471:20:29","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12482:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"12489:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12478:3:29"},"nodeType":"YulFunctionCall","src":"12478:13:29"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"12471:3:29"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12391:5:29","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"12401:3:29","type":""}],"src":"12362:135:29"},{"body":{"nodeType":"YulBlock","src":"12659:218:29","statements":[{"nodeType":"YulAssignment","src":"12669:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12681:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"12692:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12677:3:29"},"nodeType":"YulFunctionCall","src":"12677:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12669:4:29"}]},{"nodeType":"YulVariableDeclaration","src":"12704:29:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12722:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"12727:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"12718:3:29"},"nodeType":"YulFunctionCall","src":"12718:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"12731:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12714:3:29"},"nodeType":"YulFunctionCall","src":"12714:19:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"12708:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12749:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12764:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"12772:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12760:3:29"},"nodeType":"YulFunctionCall","src":"12760:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12742:6:29"},"nodeType":"YulFunctionCall","src":"12742:34:29"},"nodeType":"YulExpressionStatement","src":"12742:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12796:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"12807:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12792:3:29"},"nodeType":"YulFunctionCall","src":"12792:18:29"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"12816:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"12824:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12812:3:29"},"nodeType":"YulFunctionCall","src":"12812:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12785:6:29"},"nodeType":"YulFunctionCall","src":"12785:43:29"},"nodeType":"YulExpressionStatement","src":"12785:43:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12848:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"12859:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12844:3:29"},"nodeType":"YulFunctionCall","src":"12844:18:29"},{"name":"value2","nodeType":"YulIdentifier","src":"12864:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12837:6:29"},"nodeType":"YulFunctionCall","src":"12837:34:29"},"nodeType":"YulExpressionStatement","src":"12837:34:29"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12612:9:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12623:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12631:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12639:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12650:4:29","type":""}],"src":"12502:375:29"},{"body":{"nodeType":"YulBlock","src":"12963:170:29","statements":[{"body":{"nodeType":"YulBlock","src":"13009:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13018:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"13021:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13011:6:29"},"nodeType":"YulFunctionCall","src":"13011:12:29"},"nodeType":"YulExpressionStatement","src":"13011:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12984:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"12993:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12980:3:29"},"nodeType":"YulFunctionCall","src":"12980:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"13005:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12976:3:29"},"nodeType":"YulFunctionCall","src":"12976:32:29"},"nodeType":"YulIf","src":"12973:52:29"},{"nodeType":"YulVariableDeclaration","src":"13034:29:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13053:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13047:5:29"},"nodeType":"YulFunctionCall","src":"13047:16:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"13038:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13097:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"13072:24:29"},"nodeType":"YulFunctionCall","src":"13072:31:29"},"nodeType":"YulExpressionStatement","src":"13072:31:29"},{"nodeType":"YulAssignment","src":"13112:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"13122:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13112:6:29"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12929:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12940:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12952:6:29","type":""}],"src":"12882:251:29"},{"body":{"nodeType":"YulBlock","src":"13312:172:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13329:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"13340:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13322:6:29"},"nodeType":"YulFunctionCall","src":"13322:21:29"},"nodeType":"YulExpressionStatement","src":"13322:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13363:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"13374:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13359:3:29"},"nodeType":"YulFunctionCall","src":"13359:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"13379:2:29","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13352:6:29"},"nodeType":"YulFunctionCall","src":"13352:30:29"},"nodeType":"YulExpressionStatement","src":"13352:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13402:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"13413:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13398:3:29"},"nodeType":"YulFunctionCall","src":"13398:18:29"},{"hexValue":"4d6574686f6420616c6c206e6f7420616c6c6f776564","kind":"string","nodeType":"YulLiteral","src":"13418:24:29","type":"","value":"Method all not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13391:6:29"},"nodeType":"YulFunctionCall","src":"13391:52:29"},"nodeType":"YulExpressionStatement","src":"13391:52:29"},{"nodeType":"YulAssignment","src":"13452:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13464:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"13475:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13460:3:29"},"nodeType":"YulFunctionCall","src":"13460:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13452:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13289:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13303:4:29","type":""}],"src":"13138:346:29"},{"body":{"nodeType":"YulBlock","src":"13618:259:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13635:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"13646:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13628:6:29"},"nodeType":"YulFunctionCall","src":"13628:21:29"},"nodeType":"YulExpressionStatement","src":"13628:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13669:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"13680:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13665:3:29"},"nodeType":"YulFunctionCall","src":"13665:18:29"},{"name":"value1","nodeType":"YulIdentifier","src":"13685:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13658:6:29"},"nodeType":"YulFunctionCall","src":"13658:34:29"},"nodeType":"YulExpressionStatement","src":"13658:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13718:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"13729:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13714:3:29"},"nodeType":"YulFunctionCall","src":"13714:18:29"},{"name":"value0","nodeType":"YulIdentifier","src":"13734:6:29"},{"name":"value1","nodeType":"YulIdentifier","src":"13742:6:29"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"13701:12:29"},"nodeType":"YulFunctionCall","src":"13701:48:29"},"nodeType":"YulExpressionStatement","src":"13701:48:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13773:9:29"},{"name":"value1","nodeType":"YulIdentifier","src":"13784:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13769:3:29"},"nodeType":"YulFunctionCall","src":"13769:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"13793:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13765:3:29"},"nodeType":"YulFunctionCall","src":"13765:31:29"},{"kind":"number","nodeType":"YulLiteral","src":"13798:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13758:6:29"},"nodeType":"YulFunctionCall","src":"13758:42:29"},"nodeType":"YulExpressionStatement","src":"13758:42:29"},{"nodeType":"YulAssignment","src":"13809:62:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13825:9:29"},{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"13844:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"13852:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13840:3:29"},"nodeType":"YulFunctionCall","src":"13840:15:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13861:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"13857:3:29"},"nodeType":"YulFunctionCall","src":"13857:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13836:3:29"},"nodeType":"YulFunctionCall","src":"13836:29:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13821:3:29"},"nodeType":"YulFunctionCall","src":"13821:45:29"},{"kind":"number","nodeType":"YulLiteral","src":"13868:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13817:3:29"},"nodeType":"YulFunctionCall","src":"13817:54:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13809:4:29"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13579:9:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13590:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13598:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13609:4:29","type":""}],"src":"13489:388:29"},{"body":{"nodeType":"YulBlock","src":"13960:167:29","statements":[{"body":{"nodeType":"YulBlock","src":"14006:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14015:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14018:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14008:6:29"},"nodeType":"YulFunctionCall","src":"14008:12:29"},"nodeType":"YulExpressionStatement","src":"14008:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13981:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"13990:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13977:3:29"},"nodeType":"YulFunctionCall","src":"13977:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"14002:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13973:3:29"},"nodeType":"YulFunctionCall","src":"13973:32:29"},"nodeType":"YulIf","src":"13970:52:29"},{"nodeType":"YulVariableDeclaration","src":"14031:29:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14050:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14044:5:29"},"nodeType":"YulFunctionCall","src":"14044:16:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"14035:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14091:5:29"}],"functionName":{"name":"validator_revert_bool","nodeType":"YulIdentifier","src":"14069:21:29"},"nodeType":"YulFunctionCall","src":"14069:28:29"},"nodeType":"YulExpressionStatement","src":"14069:28:29"},{"nodeType":"YulAssignment","src":"14106:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"14116:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"14106:6:29"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13926:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13937:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"13949:6:29","type":""}],"src":"13882:245:29"},{"body":{"nodeType":"YulBlock","src":"14261:145:29","statements":[{"nodeType":"YulAssignment","src":"14271:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14283:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"14294:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14279:3:29"},"nodeType":"YulFunctionCall","src":"14279:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14271:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14313:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14328:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14344:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"14349:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14340:3:29"},"nodeType":"YulFunctionCall","src":"14340:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"14353:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14336:3:29"},"nodeType":"YulFunctionCall","src":"14336:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14324:3:29"},"nodeType":"YulFunctionCall","src":"14324:32:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14306:6:29"},"nodeType":"YulFunctionCall","src":"14306:51:29"},"nodeType":"YulExpressionStatement","src":"14306:51:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14377:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"14388:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14373:3:29"},"nodeType":"YulFunctionCall","src":"14373:18:29"},{"name":"value1","nodeType":"YulIdentifier","src":"14393:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14366:6:29"},"nodeType":"YulFunctionCall","src":"14366:34:29"},"nodeType":"YulExpressionStatement","src":"14366:34:29"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14222:9:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14233:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14241:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14252:4:29","type":""}],"src":"14132:274:29"},{"body":{"nodeType":"YulBlock","src":"14541:201:29","statements":[{"body":{"nodeType":"YulBlock","src":"14579:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14588:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14591:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14581:6:29"},"nodeType":"YulFunctionCall","src":"14581:12:29"},"nodeType":"YulExpressionStatement","src":"14581:12:29"}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"14557:10:29"},{"name":"endIndex","nodeType":"YulIdentifier","src":"14569:8:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14554:2:29"},"nodeType":"YulFunctionCall","src":"14554:24:29"},"nodeType":"YulIf","src":"14551:44:29"},{"body":{"nodeType":"YulBlock","src":"14628:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14637:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14640:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14630:6:29"},"nodeType":"YulFunctionCall","src":"14630:12:29"},"nodeType":"YulExpressionStatement","src":"14630:12:29"}]},"condition":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"14610:8:29"},{"name":"length","nodeType":"YulIdentifier","src":"14620:6:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14607:2:29"},"nodeType":"YulFunctionCall","src":"14607:20:29"},"nodeType":"YulIf","src":"14604:40:29"},{"nodeType":"YulAssignment","src":"14653:36:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"14670:6:29"},{"name":"startIndex","nodeType":"YulIdentifier","src":"14678:10:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14666:3:29"},"nodeType":"YulFunctionCall","src":"14666:23:29"},"variableNames":[{"name":"offsetOut","nodeType":"YulIdentifier","src":"14653:9:29"}]},{"nodeType":"YulAssignment","src":"14698:38:29","value":{"arguments":[{"name":"endIndex","nodeType":"YulIdentifier","src":"14715:8:29"},{"name":"startIndex","nodeType":"YulIdentifier","src":"14725:10:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14711:3:29"},"nodeType":"YulFunctionCall","src":"14711:25:29"},"variableNames":[{"name":"lengthOut","nodeType":"YulIdentifier","src":"14698:9:29"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"14475:6:29","type":""},{"name":"length","nodeType":"YulTypedName","src":"14483:6:29","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"14491:10:29","type":""},{"name":"endIndex","nodeType":"YulTypedName","src":"14503:8:29","type":""}],"returnVariables":[{"name":"offsetOut","nodeType":"YulTypedName","src":"14516:9:29","type":""},{"name":"lengthOut","nodeType":"YulTypedName","src":"14527:9:29","type":""}],"src":"14411:331:29"},{"body":{"nodeType":"YulBlock","src":"14847:223:29","statements":[{"nodeType":"YulVariableDeclaration","src":"14857:29:29","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"14880:5:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"14867:12:29"},"nodeType":"YulFunctionCall","src":"14867:19:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"14861:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14895:30:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14909:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"14914:10:29","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"14905:3:29"},"nodeType":"YulFunctionCall","src":"14905:20:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"14899:2:29","type":""}]},{"nodeType":"YulAssignment","src":"14934:20:29","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"14947:2:29"},{"name":"_2","nodeType":"YulIdentifier","src":"14951:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14943:3:29"},"nodeType":"YulFunctionCall","src":"14943:11:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14934:5:29"}]},{"body":{"nodeType":"YulBlock","src":"14985:79:29","statements":[{"nodeType":"YulAssignment","src":"14999:55:29","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"15016:2:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15028:1:29","type":"","value":"3"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15035:1:29","type":"","value":"4"},{"name":"len","nodeType":"YulIdentifier","src":"15038:3:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15031:3:29"},"nodeType":"YulFunctionCall","src":"15031:11:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15024:3:29"},"nodeType":"YulFunctionCall","src":"15024:19:29"},{"name":"_2","nodeType":"YulIdentifier","src":"15045:2:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15020:3:29"},"nodeType":"YulFunctionCall","src":"15020:28:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15012:3:29"},"nodeType":"YulFunctionCall","src":"15012:37:29"},{"name":"_2","nodeType":"YulIdentifier","src":"15051:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15008:3:29"},"nodeType":"YulFunctionCall","src":"15008:46:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14999:5:29"}]}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"14969:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"14974:1:29","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14966:2:29"},"nodeType":"YulFunctionCall","src":"14966:10:29"},"nodeType":"YulIf","src":"14963:101:29"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"14822:5:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"14829:3:29","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"14837:5:29","type":""}],"src":"14747:323:29"},{"body":{"nodeType":"YulBlock","src":"15123:77:29","statements":[{"nodeType":"YulAssignment","src":"15133:16:29","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15144:1:29"},{"name":"y","nodeType":"YulIdentifier","src":"15147:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15140:3:29"},"nodeType":"YulFunctionCall","src":"15140:9:29"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"15133:3:29"}]},{"body":{"nodeType":"YulBlock","src":"15172:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"15174:16:29"},"nodeType":"YulFunctionCall","src":"15174:18:29"},"nodeType":"YulExpressionStatement","src":"15174:18:29"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15164:1:29"},{"name":"sum","nodeType":"YulIdentifier","src":"15167:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15161:2:29"},"nodeType":"YulFunctionCall","src":"15161:10:29"},"nodeType":"YulIf","src":"15158:36:29"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15106:1:29","type":""},{"name":"y","nodeType":"YulTypedName","src":"15109:1:29","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"15115:3:29","type":""}],"src":"15075:125:29"},{"body":{"nodeType":"YulBlock","src":"15328:258:29","statements":[{"body":{"nodeType":"YulBlock","src":"15374:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15383:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15386:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15376:6:29"},"nodeType":"YulFunctionCall","src":"15376:12:29"},"nodeType":"YulExpressionStatement","src":"15376:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"15349:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"15358:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15345:3:29"},"nodeType":"YulFunctionCall","src":"15345:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"15370:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"15341:3:29"},"nodeType":"YulFunctionCall","src":"15341:32:29"},"nodeType":"YulIf","src":"15338:52:29"},{"nodeType":"YulAssignment","src":"15399:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15415:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15409:5:29"},"nodeType":"YulFunctionCall","src":"15409:16:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"15399:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"15434:38:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15457:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"15468:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15453:3:29"},"nodeType":"YulFunctionCall","src":"15453:18:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15447:5:29"},"nodeType":"YulFunctionCall","src":"15447:25:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"15438:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15506:5:29"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"15481:24:29"},"nodeType":"YulFunctionCall","src":"15481:31:29"},"nodeType":"YulExpressionStatement","src":"15481:31:29"},{"nodeType":"YulAssignment","src":"15521:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"15531:5:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"15521:6:29"}]},{"nodeType":"YulAssignment","src":"15545:35:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15565:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"15576:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15561:3:29"},"nodeType":"YulFunctionCall","src":"15561:18:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15555:5:29"},"nodeType":"YulFunctionCall","src":"15555:25:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"15545:6:29"}]}]},"name":"abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15278:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"15289:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"15301:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15309:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15317:6:29","type":""}],"src":"15205:381:29"},{"body":{"nodeType":"YulBlock","src":"15738:124:29","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15761:3:29"},{"name":"value0","nodeType":"YulIdentifier","src":"15766:6:29"},{"name":"value1","nodeType":"YulIdentifier","src":"15774:6:29"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"15748:12:29"},"nodeType":"YulFunctionCall","src":"15748:33:29"},"nodeType":"YulExpressionStatement","src":"15748:33:29"},{"nodeType":"YulVariableDeclaration","src":"15790:26:29","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15804:3:29"},{"name":"value1","nodeType":"YulIdentifier","src":"15809:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15800:3:29"},"nodeType":"YulFunctionCall","src":"15800:16:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15794:2:29","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"15832:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"15836:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15825:6:29"},"nodeType":"YulFunctionCall","src":"15825:13:29"},"nodeType":"YulExpressionStatement","src":"15825:13:29"},{"nodeType":"YulAssignment","src":"15847:9:29","value":{"name":"_1","nodeType":"YulIdentifier","src":"15854:2:29"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15847:3:29"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15706:3:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15711:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15719:6:29","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15730:3:29","type":""}],"src":"15591:271:29"}]},"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 abi_decode_array_address_dyn_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_address_$dyn_calldata_ptrt_array$_t_bool_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_array_address_dyn_calldata(add(headStart, offset_1), dataEnd)\n value2 := value2_1\n value3 := value3_1\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 panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\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 value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\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 abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\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 value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\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 value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\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_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\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 }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_array_uint256_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n let _3 := shl(5, _1)\n let dst := allocate_memory(add(_3, _2))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, _3), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n mstore(dst, calldataload(src))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 offset := calldataload(add(headStart, 64))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n value2 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n let offset_2 := calldataload(add(headStart, 128))\n if gt(offset_2, _1) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { 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 value2 := calldataload(add(headStart, 64))\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_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { 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 value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n value4 := abi_decode_bytes(add(headStart, offset), dataEnd)\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_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function validator_revert_bool(value)\n {\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), iszero(iszero(value2)))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\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_79d11aec389817f57efb69d9d4f8198d49d65c8615ad96f9eb956990654d5483__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 22)\n mstore(add(headStart, 64), \"Method all not allowed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), value1)\n calldatacopy(add(headStart, 64), value0, value1)\n mstore(add(add(headStart, value1), 64), 0)\n tail := add(add(headStart, and(add(value1, 31), not(31))), 64)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n {\n if gt(startIndex, endIndex) { revert(0, 0) }\n if gt(endIndex, length) { revert(0, 0) }\n offsetOut := add(offset, startIndex)\n lengthOut := sub(endIndex, startIndex)\n }\n function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4(array, len) -> value\n {\n let _1 := calldataload(array)\n let _2 := shl(224, 0xffffffff)\n value := and(_1, _2)\n if lt(len, 4)\n {\n value := and(and(_1, shl(shl(3, sub(4, len)), _2)), _2)\n }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_uint256t_address_payablet_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := mload(headStart)\n let value := mload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n value2 := mload(add(headStart, 64))\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}","id":29,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061010d5760003560e01c8063a737a29911610095578063d0ad253511610064578063d0ad253514610318578063dd46706414610338578063f23a6e6114610358578063fc0c546a14610384578063fe9fbb80146103bc57600080fd5b8063a737a29914610288578063bc197c81146102a8578063ca1cc220146102d4578063ce0617ec146102f457600080fd5b80636b764e1b116100dc5780636b764e1b146101e45780638da5cb5b146102045780639e5d4c4914610231578063a4e2d63414610251578063a65e78f11461026857600080fd5b806301ffc9a714610119578063039721b11461014e578063150b7a02146101705780631f9838b5146101a957600080fd5b3661011457005b600080fd5b34801561012557600080fd5b50610139610134366004610cbb565b6103dc565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b5061016e610169366004610d38565b610443565b005b34801561017c57600080fd5b5061019061018b366004610e73565b61060c565b6040516001600160e01b03199091168152602001610145565b3480156101b557600080fd5b506101396101c4366004610edf565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101f057600080fd5b5061016e6101ff366004610f18565b610674565b34801561021057600080fd5b506102196106e2565b6040516001600160a01b039091168152602001610145565b61024461023f366004610fa0565b610778565b6040516101459190610ff0565b34801561025d57600080fd5b506000544210610139565b34801561027457600080fd5b5061016e61028336600461103e565b610873565b34801561029457600080fd5b5061016e6102a336600461106a565b6108ef565b3480156102b457600080fd5b506101906102c3366004611114565b63bc197c8160e01b95945050505050565b3480156102e057600080fd5b5061016e6102ef3660046111c2565b610951565b34801561030057600080fd5b5061030a60005481565b604051908152602001610145565b34801561032457600080fd5b50610190610333366004611203565b6109ca565b34801561034457600080fd5b5061016e610353366004611245565b6109eb565b34801561036457600080fd5b5061019061037336600461125e565b63f23a6e6160e01b95945050505050565b34801561039057600080fd5b50610399610ab0565b604080519384526001600160a01b03909216602084015290820152606001610145565b3480156103c857600080fd5b506101396103d73660046112c7565b610ac8565b6000806001600160e01b031983166301ffc9a760e01b148061040e57506001600160e01b03198316630271189760e51b145b8061042957506001600160e01b03198316631dfe9a6f60e31b145b9050801561043a5750600192915050565b50600092915050565b60005442101561046657604051636315bfbb60e01b815260040160405180910390fd5b60006104706106e2565b9050336001600160a01b0382161461049b5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104bc5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b81811015610603578484828181106104d9576104d96112e4565b90506020020160208101906104ee9190611308565b6001600160a01b038416600090815260016020526040812090898985818110610519576105196112e4565b905060200201602081019061052e91906112c7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf58388888481811061058a5761058a6112e4565b905060200201602081019061059f91906112c7565b8787858181106105b1576105b16112e4565b90506020020160208101906105c69190611308565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a1806105fb8161133b565b9150506104bf565b50505050505050565b60008060008061061a610bb1565b925092509250468314801561063757506001600160a01b03821633145b801561064257508581145b156106605760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b604051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156106c457600080fd5b505af11580156106d8573d6000803e3d6000fd5b5050505050505050565b6000806000806106f0610bb1565b925092509250468314610707576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa15801561074c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107709190611354565b935050505090565b606061078333610ac8565b6107a05760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156107c357604051636315bfbb60e01b815260040160405180910390fd5b82826107cf8282610c04565b6108185760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b85876001600160a01b03167f47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d28787604051610854929190611371565b60405180910390a361086887878787610c3f565b979650505050505050565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af11580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea91906113a0565b505050565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038416906342842e0e90606401600060405180830381600087803b15801561093d57600080fd5b505af1158015610603573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af11580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c491906113a0565b50505050565b60006109d960048284866113bd565b6109e2916113e7565b90505b92915050565b6109f36106e2565b6001600160a01b0316336001600160a01b031614610a245760405163ea8e4eb560e01b815260040160405180910390fd5b600054421015610a4757604051636315bfbb60e01b815260040160405180910390fd5b610a55426301e13380611417565b811115610a75576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b6000806000610abd610bb1565b925092509250909192565b6000806000610ad5610bb1565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190611354565b9050806001600160a01b0316856001600160a01b031603610b6d57506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff1615610ba657506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610bf8919061142a565b93509350935050909192565b600080610c1184846109ca565b90506001600160e01b0319811663095ea7b360e01b03610c355760009150506109e5565b5060019392505050565b60606000856001600160a01b0316858585604051610c5e929190611463565b60006040518083038185875af1925050503d8060008114610c9b576040519150601f19603f3d011682016040523d82523d6000602084013e610ca0565b606091505b509250905080610cb257815160208301fd5b50949350505050565b600060208284031215610ccd57600080fd5b81356001600160e01b031981168114610ce557600080fd5b9392505050565b60008083601f840112610cfe57600080fd5b50813567ffffffffffffffff811115610d1657600080fd5b6020830191508360208260051b8501011115610d3157600080fd5b9250929050565b60008060008060408587031215610d4e57600080fd5b843567ffffffffffffffff80821115610d6657600080fd5b610d7288838901610cec565b90965094506020870135915080821115610d8b57600080fd5b50610d9887828801610cec565b95989497509550505050565b6001600160a01b0381168114610db957600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610dfb57610dfb610dbc565b604052919050565b600082601f830112610e1457600080fd5b813567ffffffffffffffff811115610e2e57610e2e610dbc565b610e41601f8201601f1916602001610dd2565b818152846020838601011115610e5657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e8957600080fd5b8435610e9481610da4565b93506020850135610ea481610da4565b925060408501359150606085013567ffffffffffffffff811115610ec757600080fd5b610ed387828801610e03565b91505092959194509250565b60008060408385031215610ef257600080fd5b8235610efd81610da4565b91506020830135610f0d81610da4565b809150509250929050565b60008060008060808587031215610f2e57600080fd5b8435610f3981610da4565b93506020850135610f4981610da4565b93969395505050506040820135916060013590565b60008083601f840112610f7057600080fd5b50813567ffffffffffffffff811115610f8857600080fd5b602083019150836020828501011115610d3157600080fd5b60008060008060608587031215610fb657600080fd5b8435610fc181610da4565b935060208501359250604085013567ffffffffffffffff811115610fe457600080fd5b610d9887828801610f5e565b600060208083528351808285015260005b8181101561101d57858101830151858201604001528201611001565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561105157600080fd5b823561105c81610da4565b946020939093013593505050565b60008060006060848603121561107f57600080fd5b833561108a81610da4565b95602085013595506040909401359392505050565b600082601f8301126110b057600080fd5b8135602067ffffffffffffffff8211156110cc576110cc610dbc565b8160051b6110db828201610dd2565b92835284810182019282810190878511156110f557600080fd5b83870192505b84831015610868578235825291830191908301906110fb565b600080600080600060a0868803121561112c57600080fd5b853561113781610da4565b9450602086013561114781610da4565b9350604086013567ffffffffffffffff8082111561116457600080fd5b61117089838a0161109f565b9450606088013591508082111561118657600080fd5b61119289838a0161109f565b935060808801359150808211156111a857600080fd5b506111b588828901610e03565b9150509295509295909350565b6000806000606084860312156111d757600080fd5b83356111e281610da4565b925060208401356111f281610da4565b929592945050506040919091013590565b6000806020838503121561121657600080fd5b823567ffffffffffffffff81111561122d57600080fd5b61123985828601610f5e565b90969095509350505050565b60006020828403121561125757600080fd5b5035919050565b600080600080600060a0868803121561127657600080fd5b853561128181610da4565b9450602086013561129181610da4565b93506040860135925060608601359150608086013567ffffffffffffffff8111156112bb57600080fd5b6111b588828901610e03565b6000602082840312156112d957600080fd5b8135610ce581610da4565b634e487b7160e01b600052603260045260246000fd5b8015158114610db957600080fd5b60006020828403121561131a57600080fd5b8135610ce5816112fa565b634e487b7160e01b600052601160045260246000fd5b60006001820161134d5761134d611325565b5060010190565b60006020828403121561136657600080fd5b8151610ce581610da4565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156113b257600080fd5b8151610ce5816112fa565b600080858511156113cd57600080fd5b838611156113da57600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561140f5780818660040360031b1b83161692505b505092915050565b808201808211156109e5576109e5611325565b60008060006060848603121561143f57600080fd5b83519250602084015161145181610da4565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220a53d9f0a5da30624ea9d8a215cb356ee157dbd7bc9d81c8b84c41586262e0b7464736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA737A299 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xD0AD2535 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD0AD2535 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xDD467064 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0xFE9FBB80 EQ PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA737A299 EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0xCA1CC220 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0xCE0617EC EQ PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6B764E1B GT PUSH2 0xDC JUMPI DUP1 PUSH4 0x6B764E1B EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x9E5D4C49 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0xA4E2D634 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0xA65E78F1 EQ PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x119 JUMPI DUP1 PUSH4 0x39721B1 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x1F9838B5 EQ PUSH2 0x1A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x114 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x134 CALLDATASIZE PUSH1 0x4 PUSH2 0xCBB JUMP JUMPDEST PUSH2 0x3DC 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 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xD38 JUMP JUMPDEST PUSH2 0x443 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x18B CALLDATASIZE PUSH1 0x4 PUSH2 0xE73 JUMP JUMPDEST PUSH2 0x60C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x1C4 CALLDATASIZE PUSH1 0x4 PUSH2 0xEDF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0xF18 JUMP JUMPDEST PUSH2 0x674 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x219 PUSH2 0x6E2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST PUSH2 0x244 PUSH2 0x23F CALLDATASIZE PUSH1 0x4 PUSH2 0xFA0 JUMP JUMPDEST PUSH2 0x778 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0xFF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD TIMESTAMP LT PUSH2 0x139 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x283 CALLDATASIZE PUSH1 0x4 PUSH2 0x103E JUMP JUMPDEST PUSH2 0x873 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x2A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x106A JUMP JUMPDEST PUSH2 0x8EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x2C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1114 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x2EF CALLDATASIZE PUSH1 0x4 PUSH2 0x11C2 JUMP JUMPDEST PUSH2 0x951 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30A PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x333 CALLDATASIZE PUSH1 0x4 PUSH2 0x1203 JUMP JUMPDEST PUSH2 0x9CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x353 CALLDATASIZE PUSH1 0x4 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x9EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x364 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x190 PUSH2 0x373 CALLDATASIZE PUSH1 0x4 PUSH2 0x125E JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x399 PUSH2 0xAB0 JUMP JUMPDEST 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 0x145 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x139 PUSH2 0x3D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x12C7 JUMP JUMPDEST PUSH2 0xAC8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x40E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x429 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND PUSH4 0x1DFE9A6F PUSH1 0xE3 SHL EQ JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x43A JUMPI POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x470 PUSH2 0x6E2 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ PUSH2 0x49B JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 DUP3 DUP2 EQ PUSH2 0x4BC JUMPI PUSH1 0x40 MLOAD PUSH4 0xB4FA3FB3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x603 JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x4D9 JUMPI PUSH2 0x4D9 PUSH2 0x12E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4EE SWAP2 SWAP1 PUSH2 0x1308 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x519 JUMPI PUSH2 0x519 PUSH2 0x12E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x52E SWAP2 SWAP1 PUSH2 0x12C7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH32 0x394777A58092892D136A90C4BB7E4350C72AC50FBA6A0208128677F36527DCF5 DUP4 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0x58A JUMPI PUSH2 0x58A PUSH2 0x12E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x59F SWAP2 SWAP1 PUSH2 0x12C7 JUMP JUMPDEST DUP8 DUP8 DUP6 DUP2 DUP2 LT PUSH2 0x5B1 JUMPI PUSH2 0x5B1 PUSH2 0x12E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x5C6 SWAP2 SWAP1 PUSH2 0x1308 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH2 0x5FB DUP2 PUSH2 0x133B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4BF JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x61A PUSH2 0xBB1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ DUP1 ISZERO PUSH2 0x637 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLER EQ JUMPDEST DUP1 ISZERO PUSH2 0x642 JUMPI POP DUP6 DUP2 EQ JUMPDEST ISZERO PUSH2 0x660 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x6F0 PUSH2 0xBB1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x707 JUMPI PUSH1 0x0 SWAP4 POP POP POP POP SWAP1 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 0x74C 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 0x770 SWAP2 SWAP1 PUSH2 0x1354 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x783 CALLER PUSH2 0xAC8 JUMP JUMPDEST PUSH2 0x7A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP3 PUSH2 0x7CF DUP3 DUP3 PUSH2 0xC04 JUMP JUMPDEST PUSH2 0x818 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x13595D1A1BD908185B1B081B9BDD08185B1B1BDDD959 PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x47D99AD340F52DA66535AFF7E10DA1CEB85A32BCBD9FA1C42314D194545E14D2 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x854 SWAP3 SWAP2 SWAP1 PUSH2 0x1371 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x868 DUP8 DUP8 DUP8 DUP8 PUSH2 0xC3F JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8C6 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 0x8EA SWAP2 SWAP1 PUSH2 0x13A0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x93D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x603 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9A0 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 0x9C4 SWAP2 SWAP1 PUSH2 0x13A0 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9D9 PUSH1 0x4 DUP3 DUP5 DUP7 PUSH2 0x13BD JUMP JUMPDEST PUSH2 0x9E2 SWAP2 PUSH2 0x13E7 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9F3 PUSH2 0x6E2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xA24 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEA8E4EB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xA47 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6315BFBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA55 TIMESTAMP PUSH4 0x1E13380 PUSH2 0x1417 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0xA75 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1814F7D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xA7B24C66DD3269A292A60B3FACDBB8F3E7557D1E19E64D99E0D6EE7250BE63AD SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xABD PUSH2 0xBB1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xAD5 PUSH2 0xBB1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 POP 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 0xB23 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 0xB47 SWAP2 SWAP1 PUSH2 0x1354 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB6D JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xBA6 JUMPI POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0xAD PUSH1 0x4D PUSH1 0x20 DUP4 ADD ADDRESS EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xBF8 SWAP2 SWAP1 PUSH2 0x142A JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC11 DUP5 DUP5 PUSH2 0x9CA JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SUB PUSH2 0xC35 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x9E5 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xC5E SWAP3 SWAP2 SWAP1 PUSH2 0x1463 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 0xC9B 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 0xCA0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP3 POP SWAP1 POP DUP1 PUSH2 0xCB2 JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xCE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xD31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD72 DUP9 DUP4 DUP10 ADD PUSH2 0xCEC JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xD8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD98 DUP8 DUP3 DUP9 ADD PUSH2 0xCEC JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xDB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xDFB JUMPI PUSH2 0xDFB PUSH2 0xDBC JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE2E JUMPI PUSH2 0xE2E PUSH2 0xDBC JUMP JUMPDEST PUSH2 0xE41 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0xDD2 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xE56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xE94 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xEA4 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xED3 DUP8 DUP3 DUP9 ADD PUSH2 0xE03 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xEFD DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0xF0D DUP2 PUSH2 0xDA4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xF39 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0xF49 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xF70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xD31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xFC1 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD98 DUP8 DUP3 DUP9 ADD PUSH2 0xF5E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x101D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1001 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1051 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x105C DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x107F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x108A DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x10B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x10CC JUMPI PUSH2 0x10CC PUSH2 0xDBC JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH2 0x10DB DUP3 DUP3 ADD PUSH2 0xDD2 JUMP JUMPDEST SWAP3 DUP4 MSTORE DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP3 DUP2 ADD SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x10F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD SWAP3 POP JUMPDEST DUP5 DUP4 LT ISZERO PUSH2 0x868 JUMPI DUP3 CALLDATALOAD DUP3 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH2 0x10FB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x112C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1137 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1147 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1170 DUP10 DUP4 DUP11 ADD PUSH2 0x109F JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1192 DUP10 DUP4 DUP11 ADD PUSH2 0x109F JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x11A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x11B5 DUP9 DUP3 DUP10 ADD PUSH2 0xE03 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x11E2 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x11F2 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x122D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1239 DUP6 DUP3 DUP7 ADD PUSH2 0xF5E JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1281 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1291 DUP2 PUSH2 0xDA4 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11B5 DUP9 DUP3 DUP10 ADD PUSH2 0xE03 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x12D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCE5 DUP2 PUSH2 0xDA4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xDB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x131A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCE5 DUP2 PUSH2 0x12FA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x134D JUMPI PUSH2 0x134D PUSH2 0x1325 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCE5 DUP2 PUSH2 0xDA4 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE DUP2 PUSH1 0x20 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x40 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCE5 DUP2 PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x13CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x13DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 CALLDATALOAD DUP2 DUP2 AND SWAP2 PUSH1 0x4 DUP6 LT ISZERO PUSH2 0x140F JUMPI DUP1 DUP2 DUP7 PUSH1 0x4 SUB PUSH1 0x3 SHL SHL DUP4 AND AND SWAP3 POP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x9E5 JUMPI PUSH2 0x9E5 PUSH2 0x1325 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x143F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x1451 DUP2 PUSH2 0xDA4 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 RETURNDATASIZE SWAP16 EXP 0x5D LOG3 MOD 0x24 0xEA SWAP14 DUP11 0x21 0x5C 0xB3 JUMP 0xEE ISZERO PUSH30 0xBD7BC9D81C8B84C41586262E0B7464736F6C634300081100330000000000 ","sourceMap":"206:995:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4901:393:17;;;;;;;;;;-1:-1:-1;4901:393:17;;;;;:::i;:::-;;:::i;:::-;;;470:14:29;;463:22;445:41;;433:2;418:18;4901:393:17;;;;;;;;2369:528;;;;;;;;;;-1:-1:-1;2369:528:17;;;;;:::i;:::-;;:::i;:::-;;5439:526;;;;;;;;;;-1:-1:-1;5439:526:17;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3559:33:29;;;3541:52;;3529:2;3514:18;5439:526:17;3397:202:29;953:63:17;;;;;;;;;;-1:-1:-1;953:63:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;563:256:19;;;;;;;;;;-1:-1:-1;563:256:19;;;;;:::i;:::-;;:::i;3903:310:17:-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;4691:32:29;;;4673:51;;4661:2;4646:18;3903:310:17;4527:203:29;2017:289:17;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3288:100::-;;;;;;;;;;-1:-1:-1;3329:4:17;3352:11;3366:15;-1:-1:-1;3288:100:17;;825:186:19;;;;;;;;;;-1:-1:-1;825:186:19;;;;;:::i;:::-;;:::i;256:301::-;;;;;;;;;;-1:-1:-1;256:301:19;;;;;:::i;:::-;;:::i;6368:244:17:-;;;;;;;;;;-1:-1:-1;6368:244:17;;;;;:::i;:::-;-1:-1:-1;;;6368:244:17;;;;;;;;1017:182:19;;;;;;;;;;-1:-1:-1;1017:182:19;;;;;:::i;:::-;;:::i;859:26:17:-;;;;;;;;;;;;;;;;;;;9363:25:29;;;9351:2;9336:18;859:26:17;9217:177:29;7656:118:17;;;;;;;;;;-1:-1:-1;7656:118:17;;;;;:::i;:::-;;:::i;2960:249::-;;;;;;;;;;-1:-1:-1;2960:249:17;;;;;:::i;:::-;;:::i;6055:216::-;;;;;;;;;;-1:-1:-1;6055:216:17;;;;;:::i;:::-;-1:-1:-1;;;6055:216:17;;;;;;;;3520:220;;;;;;;;;;;;;:::i;:::-;;;;10939:25:29;;;-1:-1:-1;;;;;11000:32:29;;;10995:2;10980:18;;10973:60;11049:18;;;11042:34;10927:2;10912:18;3520:220:17;10737:345:29;4284:480:17;;;;;;;;;;-1:-1:-1;4284:480:17;;;;;:::i;:::-;;:::i;4901:393::-;5011:4;;-1:-1:-1;;;;;;5053:40:17;;-1:-1:-1;;;5053:40:17;;:105;;-1:-1:-1;;;;;;;5109:49:17;;-1:-1:-1;;;5109:49:17;5053:105;:169;;;-1:-1:-1;;;;;;;5174:48:17;;-1:-1:-1;;;5174:48:17;5053:169;5031:191;;5237:14;5233:31;;;-1:-1:-1;5260:4:17;;4901:393;-1:-1:-1;;4901:393:17:o;5233:31::-;-1:-1:-1;5282:5:17;;4901:393;-1:-1:-1;;4901:393:17:o;2369:528::-;3329:4;3352:11;3366:15;-1:-1:-1;1710:38:17;;;1733:15;;-1:-1:-1;;;1733:15:17;;;;;;;;;;;1710:38;2505:14:::1;2522:7;:5;:7::i;:::-;2505:24:::0;-1:-1:-1;2543:10:17::1;-1:-1:-1::0;;;;;2543:20:17;::::1;;2539:48;;2572:15;;-1:-1:-1::0;;;2572:15:17::1;;;;;;;;;;;2539:48;2615:7:::0;2644:29;;::::1;2640:56;;2682:14;;-1:-1:-1::0;;;2682:14:17::1;;;;;;;;;;;2640:56;2712:9;2707:184;2731:6;2727:1;:10;2707:184;;;2792:12;;2805:1;2792:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2758:19:17;::::1;;::::0;;;:11:::1;:19;::::0;;;;;2778:7;;2786:1;2778:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2758:31:17::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;2758:31:17;:49;;-1:-1:-1;;2758:49:17::1;::::0;::::1;;::::0;;;::::1;::::0;;2826:54:::1;2844:6:::0;2852:7;;2860:1;2852:10;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2864:12;;2877:1;2864:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2826:54;::::0;;-1:-1:-1;;;;;12092:15:29;;;12074:34;;12144:15;;;;12139:2;12124:18;;12117:43;12203:14;12196:22;12176:18;;;12169:50;12024:2;12009:18;2826:54:17::1;;;;;;;2739:3:::0;::::1;::::0;::::1;:::i;:::-;;;;2707:184;;;;2495:402;;2369:528:::0;;;;:::o;5439:526::-;5590:6;5622:15;5651:21;5686:15;5714:25;:23;:25::i;:::-;5608:131;;;;;;5778:13;5767:7;:24;:67;;;;-1:-1:-1;;;;;;5807:27:17;;5824:10;5807:27;5767:67;:109;;;;;5861:15;5850:7;:26;5767:109;5750:160;;;5894:16;;-1:-1:-1;;;5894:16:17;;;;;;;;;;;5750:160;-1:-1:-1;;;;5928:30:17;5439:526;-1:-1:-1;;;;;;;5439:526:17:o;563:256:19:-;734:78;;-1:-1:-1;;;734:78:19;;784:4;734:78;;;12742:34:29;-1:-1:-1;;;;;12812:15:29;;;12792:18;;;12785:43;12844:18;;;12837:34;;;734:41:19;;;;;12677:18:29;;734:78:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;563:256;;;;:::o;3903:310:17:-;3941:7;3974:15;4003:21;4038:15;4066:25;:23;:25::i;:::-;3960:131;;;;;;4117:13;4106:7;:24;4102:47;;4147:1;4132:17;;;;;3903:310;:::o;4102:47::-;4167:39;;-1:-1:-1;;;4167:39:17;;;;;9363:25:29;;;-1:-1:-1;;;;;4167:30:17;;;;;9336:18:29;;4167:39:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4160:46;;;;;3903:310;:::o;2017:289::-;2194:12;1547:24;1560:10;1547:12;:24::i;:::-;1542:53;;1580:15;;-1:-1:-1;;;1580:15:17;;;;;;;;;;;1542:53;3329:4;3352:11;3366:15;-1:-1:-1;1710:38:17::1;;;1733:15;;-1:-1:-1::0;;;1733:15:17::1;;;;;;;;;;;1710:38;2179:4:::2;;7847:20;7861:5;;7847:13;:20::i;:::-;7839:55;;;::::0;-1:-1:-1;;;7839:55:17;;13340:2:29;7839:55:17::2;::::0;::::2;13322:21:29::0;13379:2;13359:18;;;13352:30;-1:-1:-1;;;13398:18:29;;;13391:52;13460:18;;7839:55:17::2;;;;;;;;2247:5:::3;2243:2;-1:-1:-1::0;;;;;2223:36:17::3;;2254:4;;2223:36;;;;;;;:::i;:::-;;;;;;;;2277:22;2283:2;2287:5;2294:4;;2277:5;:22::i;:::-;2270:29:::0;2017:289;-1:-1:-1;;;;;;;2017:289:17:o;825:186:19:-;933:71;;-1:-1:-1;;;933:71:19;;965:10;933:71;;;12742:34:29;985:4:19;12792:18:29;;;12785:43;12844:18;;;12837:34;;;-1:-1:-1;;;;;933:31:19;;;;;12677:18:29;;933:71:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;825:186;;:::o;256:301::-;424:126;;-1:-1:-1;;;424:126:19;;479:10;424:126;;;12742:34:29;511:4:19;12792:18:29;;;12785:43;12844:18;;;12837:34;;;-1:-1:-1;;;;;424:41:19;;;;;12677:18:29;;424:126:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1017:182;1144:50;;-1:-1:-1;;;1144:50:19;;-1:-1:-1;;;;;14324:32:29;;;1144:50:19;;;14306:51:29;14373:18;;;14366:34;;;1144:27:19;;;;;14279:18:29;;1144:50:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1017:182;;;:::o;7656:118:17:-;7725:6;7757:9;7764:1;7725:6;7757:5;;:9;:::i;:::-;7750:17;;;:::i;:::-;7743:24;;7656:118;;;;;:::o;2960:249::-;1375:7;:5;:7::i;:::-;-1:-1:-1;;;;;1361:21:17;:10;-1:-1:-1;;;;;1361:21:17;;1357:49;;1391:15;;-1:-1:-1;;;1391:15:17;;;;;;;;;;;1357:49;3329:4;3352:11;3366:15;-1:-1:-1;1710:38:17::1;;;1733:15;;-1:-1:-1::0;;;1733:15:17::1;;;;;;;;;;;1710:38;3057:26:::2;:15;3075:8;3057:26;:::i;:::-;3042:12;:41;3038:86;;;3104:20;;-1:-1:-1::0;;;3104:20:17::2;;;;;;;;;;;3038:86;3135:11;:26:::0;;;3177:25:::2;::::0;9363::29;;;3177::17::2;::::0;9351:2:29;9336:18;3177:25:17::2;;;;;;;2960:249:::0;:::o;3520:220::-;3597:15;3626:21;3661:15;3708:25;:23;:25::i;:::-;3701:32;;;;;;3520:220;;;:::o;4284:480::-;4343:4;4387:21;4422:15;4450:25;:23;:25::i;:::-;4502:39;;-1:-1:-1;;;4502:39:17;;;;;9363:25:29;;;4359:116:17;;-1:-1:-1;4359:116:17;-1:-1:-1;4485:14:17;;-1:-1:-1;;;;;;4502:30:17;;;;;9336:18:29;;4502:39:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4485:56;;4599:6;-1:-1:-1;;;;;4589:16:17;:6;-1:-1:-1;;;;;4589:16:17;;4585:33;;-1:-1:-1;4614:4:17;;4284:480;-1:-1:-1;;;;4284:480:17:o;4585:33::-;-1:-1:-1;;;;;4694:19:17;;;;;;;:11;:19;;;;;;;;:27;;;;;;;;;;;;4690:44;;;-1:-1:-1;4730:4:17;;4284:480;-1:-1:-1;;;;4284:480:17:o;4690:44::-;-1:-1:-1;4752:5:17;;4284:480;-1:-1:-1;;;;4284:480:17:o;90:406:25:-;263:15;;;273:4;263:15;;;;;;;;;167:7;;;;;;;;263:15;;;;;;;;;;;-1:-1:-1;263:15:25;241:37;;410:4;404;397;389:6;385:17;374:9;362:53;453:6;442:47;;;;;;;;;;;;:::i;:::-;435:54;;;;;;;90:406;;;:::o;7391:259:17:-;7454:4;7470:16;7489:23;7506:5;;7489:16;:23::i;:::-;7470:42;-1:-1:-1;;;;;;;7560:23:17;;-1:-1:-1;;;7560:23:17;7556:66;;7606:5;7599:12;;;;;7556:66;-1:-1:-1;7639:4:17;;7391:259;-1:-1:-1;;;7391:259:17:o;6657:345::-;6768:19;6799:12;6841:2;-1:-1:-1;;;;;6841:7:17;6856:5;6863:4;;6841:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6821:47:17;-1:-1:-1;6821:47:17;-1:-1:-1;6821:47:17;6879:117;;6964:6;6958:13;6953:2;6945:6;6941:15;6934:38;6879:117;6789:213;6657:345;;;;;;:::o;14:286:29:-;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:29;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:29:o;497:367::-;560:8;570:6;624:3;617:4;609:6;605:17;601:27;591:55;;642:1;639;632:12;591:55;-1:-1:-1;665:20:29;;708:18;697:30;;694:50;;;740:1;737;730:12;694:50;777:4;769:6;765:17;753:29;;837:3;830:4;820:6;817:1;813:14;805:6;801:27;797:38;794:47;791:67;;;854:1;851;844:12;791:67;497:367;;;;;:::o;869:770::-;988:6;996;1004;1012;1065:2;1053:9;1044:7;1040:23;1036:32;1033:52;;;1081:1;1078;1071:12;1033:52;1121:9;1108:23;1150:18;1191:2;1183:6;1180:14;1177:34;;;1207:1;1204;1197:12;1177:34;1246:70;1308:7;1299:6;1288:9;1284:22;1246:70;:::i;:::-;1335:8;;-1:-1:-1;1220:96:29;-1:-1:-1;1423:2:29;1408:18;;1395:32;;-1:-1:-1;1439:16:29;;;1436:36;;;1468:1;1465;1458:12;1436:36;;1507:72;1571:7;1560:8;1549:9;1545:24;1507:72;:::i;:::-;869:770;;;;-1:-1:-1;1598:8:29;-1:-1:-1;;;;869:770:29:o;1644:131::-;-1:-1:-1;;;;;1719:31:29;;1709:42;;1699:70;;1765:1;1762;1755:12;1699:70;1644:131;:::o;1780:127::-;1841:10;1836:3;1832:20;1829:1;1822:31;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;1912:275;1983:2;1977:9;2048:2;2029:13;;-1:-1:-1;;2025:27:29;2013:40;;2083:18;2068:34;;2104:22;;;2065:62;2062:88;;;2130:18;;:::i;:::-;2166:2;2159:22;1912:275;;-1:-1:-1;1912:275:29:o;2192:530::-;2234:5;2287:3;2280:4;2272:6;2268:17;2264:27;2254:55;;2305:1;2302;2295:12;2254:55;2341:6;2328:20;2367:18;2363:2;2360:26;2357:52;;;2389:18;;:::i;:::-;2433:55;2476:2;2457:13;;-1:-1:-1;;2453:27:29;2482:4;2449:38;2433:55;:::i;:::-;2513:2;2504:7;2497:19;2559:3;2552:4;2547:2;2539:6;2535:15;2531:26;2528:35;2525:55;;;2576:1;2573;2566:12;2525:55;2641:2;2634:4;2626:6;2622:17;2615:4;2606:7;2602:18;2589:55;2689:1;2664:16;;;2682:4;2660:27;2653:38;;;;2668:7;2192:530;-1:-1:-1;;;2192:530:29:o;2727:665::-;2822:6;2830;2838;2846;2899:3;2887:9;2878:7;2874:23;2870:33;2867:53;;;2916:1;2913;2906:12;2867:53;2955:9;2942:23;2974:31;2999:5;2974:31;:::i;:::-;3024:5;-1:-1:-1;3081:2:29;3066:18;;3053:32;3094:33;3053:32;3094:33;:::i;:::-;3146:7;-1:-1:-1;3200:2:29;3185:18;;3172:32;;-1:-1:-1;3255:2:29;3240:18;;3227:32;3282:18;3271:30;;3268:50;;;3314:1;3311;3304:12;3268:50;3337:49;3378:7;3369:6;3358:9;3354:22;3337:49;:::i;:::-;3327:59;;;2727:665;;;;;;;:::o;3604:388::-;3672:6;3680;3733:2;3721:9;3712:7;3708:23;3704:32;3701:52;;;3749:1;3746;3739:12;3701:52;3788:9;3775:23;3807:31;3832:5;3807:31;:::i;:::-;3857:5;-1:-1:-1;3914:2:29;3899:18;;3886:32;3927:33;3886:32;3927:33;:::i;:::-;3979:7;3969:17;;;3604:388;;;;;:::o;3997:525::-;4083:6;4091;4099;4107;4160:3;4148:9;4139:7;4135:23;4131:33;4128:53;;;4177:1;4174;4167:12;4128:53;4216:9;4203:23;4235:31;4260:5;4235:31;:::i;:::-;4285:5;-1:-1:-1;4342:2:29;4327:18;;4314:32;4355:33;4314:32;4355:33;:::i;:::-;3997:525;;4407:7;;-1:-1:-1;;;;4461:2:29;4446:18;;4433:32;;4512:2;4497:18;4484:32;;3997:525::o;4735:347::-;4786:8;4796:6;4850:3;4843:4;4835:6;4831:17;4827:27;4817:55;;4868:1;4865;4858:12;4817:55;-1:-1:-1;4891:20:29;;4934:18;4923:30;;4920:50;;;4966:1;4963;4956:12;4920:50;5003:4;4995:6;4991:17;4979:29;;5055:3;5048:4;5039:6;5031;5027:19;5023:30;5020:39;5017:59;;;5072:1;5069;5062:12;5087:612;5175:6;5183;5191;5199;5252:2;5240:9;5231:7;5227:23;5223:32;5220:52;;;5268:1;5265;5258:12;5220:52;5307:9;5294:23;5326:31;5351:5;5326:31;:::i;:::-;5376:5;-1:-1:-1;5428:2:29;5413:18;;5400:32;;-1:-1:-1;5483:2:29;5468:18;;5455:32;5510:18;5499:30;;5496:50;;;5542:1;5539;5532:12;5496:50;5581:58;5631:7;5622:6;5611:9;5607:22;5581:58;:::i;5704:546::-;5814:4;5843:2;5872;5861:9;5854:21;5904:6;5898:13;5947:6;5942:2;5931:9;5927:18;5920:34;5972:1;5982:140;5996:6;5993:1;5990:13;5982:140;;;6091:14;;;6087:23;;6081:30;6057:17;;;6076:2;6053:26;6046:66;6011:10;;5982:140;;;5986:3;6171:1;6166:2;6157:6;6146:9;6142:22;6138:31;6131:42;6241:2;6234;6230:7;6225:2;6217:6;6213:15;6209:29;6198:9;6194:45;6190:54;6182:62;;;;5704:546;;;;:::o;6255:315::-;6323:6;6331;6384:2;6372:9;6363:7;6359:23;6355:32;6352:52;;;6400:1;6397;6390:12;6352:52;6439:9;6426:23;6458:31;6483:5;6458:31;:::i;:::-;6508:5;6560:2;6545:18;;;;6532:32;;-1:-1:-1;;;6255:315:29:o;6575:383::-;6652:6;6660;6668;6721:2;6709:9;6700:7;6696:23;6692:32;6689:52;;;6737:1;6734;6727:12;6689:52;6776:9;6763:23;6795:31;6820:5;6795:31;:::i;:::-;6845:5;6897:2;6882:18;;6869:32;;-1:-1:-1;6948:2:29;6933:18;;;6920:32;;6575:383;-1:-1:-1;;;6575:383:29:o;6963:712::-;7017:5;7070:3;7063:4;7055:6;7051:17;7047:27;7037:55;;7088:1;7085;7078:12;7037:55;7124:6;7111:20;7150:4;7173:18;7169:2;7166:26;7163:52;;;7195:18;;:::i;:::-;7241:2;7238:1;7234:10;7264:28;7288:2;7284;7280:11;7264:28;:::i;:::-;7326:15;;;7396;;;7392:24;;;7357:12;;;;7428:15;;;7425:35;;;7456:1;7453;7446:12;7425:35;7492:2;7484:6;7480:15;7469:26;;7504:142;7520:6;7515:3;7512:15;7504:142;;;7586:17;;7574:30;;7537:12;;;;7624;;;;7504:142;;7680:1071;7834:6;7842;7850;7858;7866;7919:3;7907:9;7898:7;7894:23;7890:33;7887:53;;;7936:1;7933;7926:12;7887:53;7975:9;7962:23;7994:31;8019:5;7994:31;:::i;:::-;8044:5;-1:-1:-1;8101:2:29;8086:18;;8073:32;8114:33;8073:32;8114:33;:::i;:::-;8166:7;-1:-1:-1;8224:2:29;8209:18;;8196:32;8247:18;8277:14;;;8274:34;;;8304:1;8301;8294:12;8274:34;8327:61;8380:7;8371:6;8360:9;8356:22;8327:61;:::i;:::-;8317:71;;8441:2;8430:9;8426:18;8413:32;8397:48;;8470:2;8460:8;8457:16;8454:36;;;8486:1;8483;8476:12;8454:36;8509:63;8564:7;8553:8;8542:9;8538:24;8509:63;:::i;:::-;8499:73;;8625:3;8614:9;8610:19;8597:33;8581:49;;8655:2;8645:8;8642:16;8639:36;;;8671:1;8668;8661:12;8639:36;;8694:51;8737:7;8726:8;8715:9;8711:24;8694:51;:::i;:::-;8684:61;;;7680:1071;;;;;;;;:::o;8756:456::-;8833:6;8841;8849;8902:2;8890:9;8881:7;8877:23;8873:32;8870:52;;;8918:1;8915;8908:12;8870:52;8957:9;8944:23;8976:31;9001:5;8976:31;:::i;:::-;9026:5;-1:-1:-1;9083:2:29;9068:18;;9055:32;9096:33;9055:32;9096:33;:::i;:::-;8756:456;;9148:7;;-1:-1:-1;;;9202:2:29;9187:18;;;;9174:32;;8756:456::o;9399:409::-;9469:6;9477;9530:2;9518:9;9509:7;9505:23;9501:32;9498:52;;;9546:1;9543;9536:12;9498:52;9586:9;9573:23;9619:18;9611:6;9608:30;9605:50;;;9651:1;9648;9641:12;9605:50;9690:58;9740:7;9731:6;9720:9;9716:22;9690:58;:::i;:::-;9767:8;;9664:84;;-1:-1:-1;9399:409:29;-1:-1:-1;;;;9399:409:29:o;9813:180::-;9872:6;9925:2;9913:9;9904:7;9900:23;9896:32;9893:52;;;9941:1;9938;9931:12;9893:52;-1:-1:-1;9964:23:29;;9813:180;-1:-1:-1;9813:180:29:o;9998:734::-;10102:6;10110;10118;10126;10134;10187:3;10175:9;10166:7;10162:23;10158:33;10155:53;;;10204:1;10201;10194:12;10155:53;10243:9;10230:23;10262:31;10287:5;10262:31;:::i;:::-;10312:5;-1:-1:-1;10369:2:29;10354:18;;10341:32;10382:33;10341:32;10382:33;:::i;:::-;10434:7;-1:-1:-1;10488:2:29;10473:18;;10460:32;;-1:-1:-1;10539:2:29;10524:18;;10511:32;;-1:-1:-1;10594:3:29;10579:19;;10566:33;10622:18;10611:30;;10608:50;;;10654:1;10651;10644:12;10608:50;10677:49;10718:7;10709:6;10698:9;10694:22;10677:49;:::i;11087:247::-;11146:6;11199:2;11187:9;11178:7;11174:23;11170:32;11167:52;;;11215:1;11212;11205:12;11167:52;11254:9;11241:23;11273:31;11298:5;11273:31;:::i;11339:127::-;11400:10;11395:3;11391:20;11388:1;11381:31;11431:4;11428:1;11421:15;11455:4;11452:1;11445:15;11471:118;11557:5;11550:13;11543:21;11536:5;11533:32;11523:60;;11579:1;11576;11569:12;11594:241;11650:6;11703:2;11691:9;11682:7;11678:23;11674:32;11671:52;;;11719:1;11716;11709:12;11671:52;11758:9;11745:23;11777:28;11799:5;11777:28;:::i;12230:127::-;12291:10;12286:3;12282:20;12279:1;12272:31;12322:4;12319:1;12312:15;12346:4;12343:1;12336:15;12362:135;12401:3;12422:17;;;12419:43;;12442:18;;:::i;:::-;-1:-1:-1;12489:1:29;12478:13;;12362:135::o;12882:251::-;12952:6;13005:2;12993:9;12984:7;12980:23;12976:32;12973:52;;;13021:1;13018;13011:12;12973:52;13053:9;13047:16;13072:31;13097:5;13072:31;:::i;13489:388::-;13646:2;13635:9;13628:21;13685:6;13680:2;13669:9;13665:18;13658:34;13742:6;13734;13729:2;13718:9;13714:18;13701:48;13798:1;13769:22;;;13793:2;13765:31;;;13758:42;;;;13861:2;13840:15;;;-1:-1:-1;;13836:29:29;13821:45;13817:54;;13489:388;-1:-1:-1;13489:388:29:o;13882:245::-;13949:6;14002:2;13990:9;13981:7;13977:23;13973:32;13970:52;;;14018:1;14015;14008:12;13970:52;14050:9;14044:16;14069:28;14091:5;14069:28;:::i;14411:331::-;14516:9;14527;14569:8;14557:10;14554:24;14551:44;;;14591:1;14588;14581:12;14551:44;14620:6;14610:8;14607:20;14604:40;;;14640:1;14637;14630:12;14604:40;-1:-1:-1;;14666:23:29;;;14711:25;;;;;-1:-1:-1;14411:331:29:o;14747:323::-;-1:-1:-1;;;;;;14867:19:29;;14943:11;;;;14974:1;14966:10;;14963:101;;;15051:2;15045;15038:3;15035:1;15031:11;15028:1;15024:19;15020:28;15016:2;15012:37;15008:46;14999:55;;14963:101;;;14747:323;;;;:::o;15075:125::-;15140:9;;;15161:10;;;15158:36;;;15174:18;;:::i;15205:381::-;15301:6;15309;15317;15370:2;15358:9;15349:7;15345:23;15341:32;15338:52;;;15386:1;15383;15376:12;15338:52;15415:9;15409:16;15399:26;;15468:2;15457:9;15453:18;15447:25;15481:31;15506:5;15481:31;:::i;:::-;15531:5;15521:15;;;15576:2;15565:9;15561:18;15555:25;15545:35;;15205:381;;;;;:::o;15591:271::-;15774:6;15766;15761:3;15748:33;15730:3;15800:16;;15825:13;;;15800:16;15591:271;-1:-1:-1;15591:271:29:o"},"gasEstimates":{"creation":{"codeDepositCost":"1057800","executionCost":"1100","totalCost":"1058900"},"external":{"breakCovalentBond(address,address,uint256,uint256)":"infinite","covalentBond(address,uint256,uint256)":"infinite","dischargeParticle(address,address,uint256)":"infinite","energizeParticle(address,uint256)":"infinite","executeCall(address,uint256,bytes)":"infinite","isAuthorized(address)":"infinite","isLocked()":"2381","lock(uint256)":"infinite","lockedUntil()":"2384","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"infinite","onERC1155Received(address,address,uint256,uint256,bytes)":"infinite","onERC721Received(address,address,uint256,bytes)":"infinite","owner()":"infinite","parseFirst4Bytes(bytes)":"787","permissions(address,address)":"infinite","setPermissions(address[],bool[])":"infinite","supportsInterface(bytes4)":"538","token()":"infinite"}},"methodIdentifiers":{"breakCovalentBond(address,address,uint256,uint256)":"6b764e1b","covalentBond(address,uint256,uint256)":"a737a299","dischargeParticle(address,address,uint256)":"ca1cc220","energizeParticle(address,uint256)":"a65e78f1","executeCall(address,uint256,bytes)":"9e5d4c49","isAuthorized(address)":"fe9fbb80","isLocked()":"a4e2d634","lock(uint256)":"dd467064","lockedUntil()":"ce0617ec","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","owner()":"8da5cb5b","parseFirst4Bytes(bytes)":"d0ad2535","permissions(address,address)":"1f9838b5","setPermissions(address[],bool[])":"039721b1","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccountLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedsMaxLockTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAuthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipCycle\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lockedUntil\",\"type\":\"uint256\"}],\"name\":\"LockUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"OverrideUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"hasPermission\",\"type\":\"bool\"}],\"name\":\"PermissionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"TransactionExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"nftTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenAmount\",\"type\":\"uint256\"}],\"name\":\"breakCovalentBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nftTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenAmount\",\"type\":\"uint256\"}],\"name\":\"covalentBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"}],\"name\":\"dischargeParticle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"}],\"name\":\"energizeParticle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isAuthorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_lockedUntil\",\"type\":\"uint256\"}],\"name\":\"lock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lockedUntil\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"receivedTokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"parseFirst4Bytes\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"permissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"callers\",\"type\":\"address[]\"},{\"internalType\":\"bool[]\",\"name\":\"_permissions\",\"type\":\"bool[]\"}],\"name\":\"setPermissions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":{\"kind\":\"dev\",\"methods\":{\"executeCall(address,uint256,bytes)\":{\"details\":\"executes a low-level call against an account if the caller is authorized to make calls\"},\"isAuthorized(address)\":{\"details\":\"Returns the authorization status for a given caller\"},\"isLocked()\":{\"details\":\"returns the current lock status of the account as a boolean\"},\"lock(uint256)\":{\"details\":\"locks the account until a certain timestamp\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"details\":\"Allows ERC-1155 token batches to be received. This function can be overriden.\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"details\":\"Allows ERC-1155 tokens to be received. This function can be overriden.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle. This function can be overriden.\"},\"owner()\":{\"details\":\"Returns the owner of the ERC-721 token which owns this account. By default, the owner of the token has full permissions on the account.\"},\"setPermissions(address[],bool[])\":{\"details\":\"grants a given caller execution permissions\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if a given interfaceId is supported by this account. This method can be extended by an override.\"},\"token()\":{\"details\":\"Returns the EIP-155 chain ID, token contract address, and token ID for the token that owns this account.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ChargedParticlesAccount.sol\":\"ChargedParticlesAccount\"},\"evmVersion\":\"london\",\"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 v4.4.1 (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n *\\n * _Available since v4.1._\\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 _data\\n */\\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev _Available since v3.1._\\n */\\ninterface IERC1155Receiver is IERC165 {\\n /**\\n * @dev Handles the receipt of a single ERC1155 token type. This function is\\n * called at the end of a `safeTransferFrom` after the balance has been updated.\\n *\\n * NOTE: To accept the transfer, this must return\\n * `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))`\\n * (i.e. 0xf23a6e61, or its own function selector).\\n *\\n * @param operator The address which initiated the transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param id The ID of the token being transferred\\n * @param value The amount of tokens being transferred\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155Received(address,address,uint256,uint256,bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155Received(\\n address operator,\\n address from,\\n uint256 id,\\n uint256 value,\\n bytes calldata data\\n ) external returns (bytes4);\\n\\n /**\\n * @dev Handles the receipt of a multiple ERC1155 token types. This function\\n * is called at the end of a `safeBatchTransferFrom` after the balances have\\n * been updated.\\n *\\n * NOTE: To accept the transfer(s), this must return\\n * `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))`\\n * (i.e. 0xbc197c81, or its own function selector).\\n *\\n * @param operator The address which initiated the batch transfer (i.e. msg.sender)\\n * @param from The address which previously owned the token\\n * @param ids An array containing ids of each token being transferred (order and length must match values array)\\n * @param values An array containing amounts of each token being transferred (order and length must match ids array)\\n * @param data Additional data with no specified format\\n * @return `bytes4(keccak256(\\\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\\\"))` if transfer is allowed\\n */\\n function onERC1155BatchReceived(\\n address operator,\\n address from,\\n uint256[] calldata ids,\\n uint256[] calldata values,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\nimport \\\"./interfaces/IERC6551Account.sol\\\";\\nimport \\\"./lib/ERC6551AccountLib.sol\\\";\\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/token/ERC1155/IERC1155Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/interfaces/IERC1271.sol\\\";\\n\\nerror NotAuthorized();\\nerror InvalidInput();\\nerror AccountLocked();\\nerror ExceedsMaxLockTime();\\nerror UntrustedImplementation();\\nerror OwnershipCycle();\\n\\n/**\\n * @title A smart contract account owned by a single ERC721 token\\n */\\ncontract Account is\\n IERC165,\\n IERC6551Account,\\n IERC721Receiver,\\n IERC1155Receiver\\n{\\n /// @dev timestamp at which this account will be unlocked\\n uint256 public lockedUntil;\\n\\n /// @dev mapping from owner => caller => has permissions\\n mapping(address => mapping(address => bool)) public permissions;\\n\\n event OverrideUpdated(\\n address owner,\\n bytes4 selector,\\n address implementation\\n );\\n\\n event PermissionUpdated(address owner, address caller, bool hasPermission);\\n\\n event LockUpdated(uint256 lockedUntil);\\n\\n /// @dev reverts if caller is not the owner of the account\\n modifier onlyOwner() {\\n if (msg.sender != owner()) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if caller is not authorized to execute on this account\\n modifier onlyAuthorized() {\\n if (!isAuthorized(msg.sender)) revert NotAuthorized();\\n _;\\n }\\n\\n /// @dev reverts if this account is currently locked\\n modifier onlyUnlocked() {\\n if (isLocked()) revert AccountLocked();\\n _;\\n }\\n\\n constructor() {}\\n\\n /// @dev allows eth transfers by default, but allows account owner to override\\n receive() external payable {\\n }\\n\\n /// @dev executes a low-level call against an account if the caller is authorized to make calls\\n function executeCall(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) external payable onlyAuthorized onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) {\\n emit TransactionExecuted(to, value, data);\\n\\n return _call(to, value, data);\\n }\\n\\n /// @dev grants a given caller execution permissions\\n function setPermissions(\\n address[] calldata callers,\\n bool[] calldata _permissions\\n ) external onlyUnlocked {\\n address _owner = owner();\\n if (msg.sender != _owner) revert NotAuthorized();\\n\\n uint256 length = callers.length;\\n\\n if (_permissions.length != length) revert InvalidInput();\\n\\n for (uint256 i = 0; i < length; i++) {\\n permissions[_owner][callers[i]] = _permissions[i];\\n emit PermissionUpdated(_owner, callers[i], _permissions[i]);\\n }\\n }\\n\\n /// @dev locks the account until a certain timestamp\\n function lock(uint256 _lockedUntil) external onlyOwner onlyUnlocked {\\n if (_lockedUntil > block.timestamp + 365 days)\\n revert ExceedsMaxLockTime();\\n\\n lockedUntil = _lockedUntil;\\n\\n emit LockUpdated(_lockedUntil);\\n }\\n\\n /// @dev returns the current lock status of the account as a boolean\\n function isLocked() public view returns (bool) {\\n return lockedUntil > block.timestamp;\\n }\\n\\n /// @dev Returns the EIP-155 chain ID, token contract address, and token ID for the token that\\n /// owns this account.\\n function token()\\n external\\n view\\n returns (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n )\\n {\\n return ERC6551AccountLib.token();\\n }\\n\\n /// @dev Returns the owner of the ERC-721 token which owns this account. By default, the owner\\n /// of the token has full permissions on the account.\\n function owner() public view returns (address) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (chainId != block.chainid) return address(0);\\n\\n return IERC721(tokenContract).ownerOf(tokenId);\\n }\\n\\n /// @dev Returns the authorization status for a given caller\\n function isAuthorized(address caller) public view returns (bool) {\\n (\\n ,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n address _owner = IERC721(tokenContract).ownerOf(tokenId);\\n\\n // authorize token owner\\n if (caller == _owner) return true;\\n\\n // authorize caller if owner has granted permissions\\n if (permissions[_owner][caller]) return true;\\n\\n return false;\\n }\\n\\n /// @dev Returns true if a given interfaceId is supported by this account. This method can be\\n /// extended by an override.\\n function supportsInterface(bytes4 interfaceId)\\n public\\n pure \\n override\\n returns (bool)\\n {\\n bool defaultSupport = interfaceId == type(IERC165).interfaceId ||\\n interfaceId == type(IERC1155Receiver).interfaceId ||\\n interfaceId == type(IERC6551Account).interfaceId;\\n\\n if (defaultSupport) return true;\\n\\n return false;\\n }\\n\\n /// @dev Allows ERC-721 tokens to be received so long as they do not cause an ownership cycle.\\n /// This function can be overriden.\\n function onERC721Received(\\n address,\\n address,\\n uint256 receivedTokenId,\\n bytes memory\\n ) public view override returns (bytes4) {\\n (\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId\\n ) = ERC6551AccountLib.token();\\n\\n if (\\n chainId == block.chainid &&\\n tokenContract == msg.sender &&\\n tokenId == receivedTokenId\\n ) revert OwnershipCycle();\\n\\n return this.onERC721Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 tokens to be received. This function can be overriden.\\n function onERC1155Received(\\n address,\\n address,\\n uint256,\\n uint256,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155Received.selector;\\n }\\n\\n /// @dev Allows ERC-1155 token batches to be received. This function can be overriden.\\n function onERC1155BatchReceived(\\n address,\\n address,\\n uint256[] memory,\\n uint256[] memory,\\n bytes memory\\n ) public pure override returns (bytes4) {\\n return this.onERC1155BatchReceived.selector;\\n }\\n\\n /// @dev Executes a low-level call\\n function _call(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) internal returns (bytes memory result) {\\n bool success;\\n (success, result) = to.call{value: value}(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n /// @dev Executes a low-level static call\\n function _callStatic(address to, bytes calldata data)\\n internal\\n view\\n returns (bytes memory result)\\n {\\n bool success;\\n (success, result) = to.staticcall(data);\\n\\n if (!success) {\\n assembly {\\n revert(add(result, 32), mload(result))\\n }\\n }\\n }\\n\\n function allowedMethod(bytes calldata _data) internal returns (bool) {\\n bytes4 signature = parseFirst4Bytes(_data);\\n // approve > 0x095ea7b3\\n\\n if (signature == 0x095ea7b3) {\\n return false;\\n }\\n\\n return true;\\n }\\n\\n function parseFirst4Bytes(bytes calldata _data) public pure returns (bytes4) {\\n return bytes4(_data[:4]);\\n }\\n\\n modifier onlyAllowedMethod(bytes calldata _data) {\\n require(allowedMethod(_data), \\\"Method all not allowed\\\");\\n _;\\n }\\n}\\n\",\"keccak256\":\"0xa19901bd1b773a41ab51f92c050bccf6139c492c846bf0d331772c2d80346ed5\",\"license\":\"UNLICENSED\"},\"contracts/ChargedParticlesAccount.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\nimport \\\"./Account.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ncontract ChargedParticlesAccount is Account {\\n function covalentBond(\\n address nftTokenAddress,\\n uint256 nftTokenId,\\n uint256 nftTokenAmount\\n ) external {\\n // Transfer to self\\n IERC721(nftTokenAddress).safeTransferFrom(\\n msg.sender,\\n address(this),\\n nftTokenId\\n );\\n }\\n\\n function breakCovalentBond(\\n address receiver,\\n address nftTokenAddress,\\n uint256 nftTokenId,\\n uint256 nftTokenAmount\\n ) external {\\n IERC721(nftTokenAddress).safeTransferFrom(address(this), receiver, nftTokenId);\\n }\\n\\n function energizeParticle(\\n address assetToken,\\n uint256 assetAmount\\n ) external {\\n IERC20(assetToken).transferFrom(msg.sender, address(this), assetAmount);\\n }\\n\\n function dischargeParticle(\\n address receiver,\\n address assetToken,\\n uint256 assetAmount\\n ) external {\\n IERC20(assetToken).transfer(receiver, assetAmount);\\n }\\n}\\n\",\"keccak256\":\"0x8992d3b7b0b6eca05ca0d0c125aa1c354fa2a9250a3d20a698a3e19f430a17bf\",\"license\":\"UNLICENSED\"},\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\ninterface IERC6551AccountProxy {\\n function implementation() external view returns (address);\\n}\\n\\n/// @dev the ERC-165 identifier for this interface is `0xeff4d378`\\ninterface IERC6551Account {\\n event TransactionExecuted(address indexed target, uint256 indexed value, bytes data);\\n\\n receive() external payable;\\n\\n function executeCall(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) external payable returns (bytes memory);\\n\\n function token()\\n external\\n view\\n returns (uint256 chainId, address tokenContract, uint256 tokenId);\\n\\n function owner() external view returns (address);\\n}\\n\",\"keccak256\":\"0x5fe2dca745f8e753d414778980a0846c1bbcbb26a09d7cd7fb712c7db7939582\",\"license\":\"UNLICENSED\"},\"contracts/lib/ERC6551AccountLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nlibrary ERC6551AccountLib {\\n function token()\\n internal\\n view\\n returns (\\n uint256,\\n address,\\n uint256\\n )\\n {\\n bytes memory footer = new bytes(0x60);\\n\\n assembly {\\n // copy 0x60 bytes from end of footer\\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\\n }\\n\\n return abi.decode(footer, (uint256, address, uint256));\\n }\\n\\n function salt() internal view returns (uint256) {\\n bytes memory footer = new bytes(0x20);\\n\\n assembly {\\n // copy 0x20 bytes from beginning of footer\\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\\n }\\n\\n return abi.decode(footer, (uint256));\\n }\\n}\\n\",\"keccak256\":\"0xf7a8eb3b4fb63068eb8ed2a1a129e4676af842541f43c1a1dc96a9f295060c45\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3566,"contract":"contracts/ChargedParticlesAccount.sol:ChargedParticlesAccount","label":"lockedUntil","offset":0,"slot":"0","type":"t_uint256"},{"astId":3573,"contract":"contracts/ChargedParticlesAccount.sol:ChargedParticlesAccount","label":"permissions","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/MinimalAccount.sol":{"MinimalAccount":{"abi":[],"devdoc":{"kind":"dev","methods":{},"title":"A smart contract account owned by a single ERC721 token","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220d93842a6c5b331a60d4d9c5fc6eba883e076dc8d7b137a331c9cc95652857b8764736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 CODESIZE TIMESTAMP 0xA6 0xC5 0xB3 BALANCE 0xA6 0xD 0x4D SWAP13 0x5F 0xC6 0xEB 0xA8 DUP4 0xE0 PUSH23 0xDC8D7B137A331C9CC95652857B8764736F6C6343000811 STOP CALLER ","sourceMap":"139:28:20:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea2646970667358221220d93842a6c5b331a60d4d9c5fc6eba883e076dc8d7b137a331c9cc95652857b8764736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 CODESIZE TIMESTAMP 0xA6 0xC5 0xB3 BALANCE 0xA6 0xD 0x4D SWAP13 0x5F 0xC6 0xEB 0xA8 DUP4 0xE0 PUSH23 0xDC8D7B137A331C9CC95652857B8764736F6C6343000811 STOP CALLER ","sourceMap":"139:28:20:-:0;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"12600","executionCost":"66","totalCost":"12666"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"A smart contract account owned by a single ERC721 token\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/MinimalAccount.sol\":\"MinimalAccount\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/MinimalAccount.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\n/**\\n * @title A smart contract account owned by a single ERC721 token\\n */\\ncontract MinimalAccount\\n{\\n\\n}\\n\",\"keccak256\":\"0xc6dc3ebda49483d6a34e541f756b9408d8e38da8f6d7c621cf0b410638200909\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IAccount.sol":{"IAccount":{"abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"executeCall(address,uint256,bytes)":"9e5d4c49","owner()":"8da5cb5b","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IAccount.sol\":\"IAccount\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IAccount.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\ninterface IAccount {\\n function owner() external view returns (address);\\n\\n function token()\\n external\\n view\\n returns (address tokenContract, uint256 tokenId);\\n\\n function executeCall(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) external payable returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x864eddea04e3865e2659848b1f7ac6190e118c26a86a96cf6e68df40896cfa45\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IChargedParticles.sol":{"IChargedParticles":{"abi":[{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"walletManagerId","type":"string"},{"internalType":"address","name":"assetToken","type":"address"}],"name":"baseParticleMass","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"basketManagerId","type":"string"},{"internalType":"address","name":"nftTokenAddress","type":"address"},{"internalType":"uint256","name":"nftTokenId","type":"uint256"},{"internalType":"uint256","name":"nftTokenAmount","type":"uint256"}],"name":"breakCovalentBond","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"basketManagerId","type":"string"},{"internalType":"address","name":"nftTokenAddress","type":"address"},{"internalType":"uint256","name":"nftTokenId","type":"uint256"},{"internalType":"uint256","name":"nftTokenAmount","type":"uint256"}],"name":"covalentBond","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"walletManagerId","type":"string"},{"internalType":"address","name":"assetToken","type":"address"}],"name":"currentParticleCharge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"basketManagerId","type":"string"}],"name":"currentParticleCovalentBonds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"walletManagerId","type":"string"},{"internalType":"address","name":"assetToken","type":"address"}],"name":"currentParticleKinetics","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"walletManagerId","type":"string"},{"internalType":"address","name":"assetToken","type":"address"}],"name":"dischargeParticle","outputs":[{"internalType":"uint256","name":"creatorAmount","type":"uint256"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"walletManagerId","type":"string"},{"internalType":"address","name":"assetToken","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"dischargeParticleAmount","outputs":[{"internalType":"uint256","name":"creatorAmount","type":"uint256"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"walletManagerId","type":"string"},{"internalType":"address","name":"assetToken","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"dischargeParticleForCreator","outputs":[{"internalType":"uint256","name":"receiverAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"walletManagerId","type":"string"},{"internalType":"address","name":"assetToken","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"},{"internalType":"address","name":"referrer","type":"address"}],"name":"energizeParticle","outputs":[{"internalType":"uint256","name":"yieldTokensAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"getFeesForDeposit","outputs":[{"internalType":"uint256","name":"protocolFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getManagersAddress","outputs":[{"internalType":"address","name":"managersAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSettingsAddress","outputs":[{"internalType":"address","name":"settingsAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStateAddress","outputs":[{"internalType":"address","name":"stateAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"walletManagerId","type":"string"},{"internalType":"address","name":"assetToken","type":"address"}],"name":"releaseParticle","outputs":[{"internalType":"uint256","name":"creatorAmount","type":"uint256"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"walletManagerId","type":"string"},{"internalType":"address","name":"assetToken","type":"address"},{"internalType":"uint256","name":"assetAmount","type":"uint256"}],"name":"releaseParticleAmount","outputs":[{"internalType":"uint256","name":"creatorAmount","type":"uint256"},{"internalType":"uint256","name":"receiverAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"baseParticleMass(address,uint256,string,address)":"e6ea6ce7","breakCovalentBond(address,address,uint256,string,address,uint256,uint256)":"fe02fb00","covalentBond(address,uint256,string,address,uint256,uint256)":"3ff956cc","currentParticleCharge(address,uint256,string,address)":"99fa4c73","currentParticleCovalentBonds(address,uint256,string)":"a13eafd5","currentParticleKinetics(address,uint256,string,address)":"ca92acd0","dischargeParticle(address,address,uint256,string,address)":"621a3b70","dischargeParticleAmount(address,address,uint256,string,address,uint256)":"6697b359","dischargeParticleForCreator(address,address,uint256,string,address,uint256)":"65d20ce2","energizeParticle(address,uint256,string,address,uint256,address)":"0bdde2ca","getFeesForDeposit(uint256)":"ee895623","getManagersAddress()":"8742f168","getSettingsAddress()":"d00999fe","getStateAddress()":"31969e57","releaseParticle(address,address,uint256,string,address)":"acab923c","releaseParticleAmount(address,address,uint256,string,address,uint256)":"a8abef47"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"}],\"name\":\"baseParticleMass\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"basketManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"nftTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenAmount\",\"type\":\"uint256\"}],\"name\":\"breakCovalentBond\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"basketManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"nftTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nftTokenAmount\",\"type\":\"uint256\"}],\"name\":\"covalentBond\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"}],\"name\":\"currentParticleCharge\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"basketManagerId\",\"type\":\"string\"}],\"name\":\"currentParticleCovalentBonds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"}],\"name\":\"currentParticleKinetics\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"}],\"name\":\"dischargeParticle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"creatorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"receiverAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"}],\"name\":\"dischargeParticleAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"creatorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"receiverAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"}],\"name\":\"dischargeParticleForCreator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"receiverAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"referrer\",\"type\":\"address\"}],\"name\":\"energizeParticle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"yieldTokensAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"}],\"name\":\"getFeesForDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getManagersAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"managersAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSettingsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"settingsAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"stateAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"}],\"name\":\"releaseParticle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"creatorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"receiverAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"walletManagerId\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"assetToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"assetAmount\",\"type\":\"uint256\"}],\"name\":\"releaseParticleAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"creatorAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"receiverAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface for Charged Particles\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IChargedParticles.sol\":\"IChargedParticles\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IChargedParticles.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\n// IChargedParticles.sol -- Part of the Charged Particles Protocol\\n// Copyright (c) 2021 Firma Lux, Inc. \\n//\\n// Permission is hereby granted, free of charge, to any person obtaining a copy\\n// of this software and associated documentation files (the \\\"Software\\\"), to deal\\n// in the Software without restriction, including without limitation the rights\\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\\n// copies of the Software, and to permit persons to whom the Software is\\n// furnished to do so, subject to the following conditions:\\n//\\n// The above copyright notice and this permission notice shall be included in all\\n// copies or substantial portions of the Software.\\n//\\n// THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\\n// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\\n// SOFTWARE.\\n\\npragma solidity >=0.6.0;\\n\\n/**\\n * @notice Interface for Charged Particles\\n */\\ninterface IChargedParticles {\\n\\n /***********************************|\\n | Public API |\\n |__________________________________*/\\n\\n function getStateAddress() external view returns (address stateAddress);\\n function getSettingsAddress() external view returns (address settingsAddress);\\n function getManagersAddress() external view returns (address managersAddress);\\n\\n function getFeesForDeposit(uint256 assetAmount) external view returns (uint256 protocolFee);\\n function baseParticleMass(address contractAddress, uint256 tokenId, string calldata walletManagerId, address assetToken) external returns (uint256);\\n function currentParticleCharge(address contractAddress, uint256 tokenId, string calldata walletManagerId, address assetToken) external returns (uint256);\\n function currentParticleKinetics(address contractAddress, uint256 tokenId, string calldata walletManagerId, address assetToken) external returns (uint256);\\n function currentParticleCovalentBonds(address contractAddress, uint256 tokenId, string calldata basketManagerId) external view returns (uint256);\\n\\n /***********************************|\\n | Particle Mechanics |\\n |__________________________________*/\\n\\n function energizeParticle(\\n address contractAddress,\\n uint256 tokenId,\\n string calldata walletManagerId,\\n address assetToken,\\n uint256 assetAmount,\\n address referrer\\n ) external returns (uint256 yieldTokensAmount);\\n\\n function dischargeParticle(\\n address receiver,\\n address contractAddress,\\n uint256 tokenId,\\n string calldata walletManagerId,\\n address assetToken\\n ) external returns (uint256 creatorAmount, uint256 receiverAmount);\\n\\n function dischargeParticleAmount(\\n address receiver,\\n address contractAddress,\\n uint256 tokenId,\\n string calldata walletManagerId,\\n address assetToken,\\n uint256 assetAmount\\n ) external returns (uint256 creatorAmount, uint256 receiverAmount);\\n\\n function dischargeParticleForCreator(\\n address receiver,\\n address contractAddress,\\n uint256 tokenId,\\n string calldata walletManagerId,\\n address assetToken,\\n uint256 assetAmount\\n ) external returns (uint256 receiverAmount);\\n\\n function releaseParticle(\\n address receiver,\\n address contractAddress,\\n uint256 tokenId,\\n string calldata walletManagerId,\\n address assetToken\\n ) external returns (uint256 creatorAmount, uint256 receiverAmount);\\n\\n function releaseParticleAmount(\\n address receiver,\\n address contractAddress,\\n uint256 tokenId,\\n string calldata walletManagerId,\\n address assetToken,\\n uint256 assetAmount\\n ) external returns (uint256 creatorAmount, uint256 receiverAmount);\\n\\n function covalentBond(\\n address contractAddress,\\n uint256 tokenId,\\n string calldata basketManagerId,\\n address nftTokenAddress,\\n uint256 nftTokenId,\\n uint256 nftTokenAmount\\n ) external returns (bool success);\\n\\n function breakCovalentBond(\\n address receiver,\\n address contractAddress,\\n uint256 tokenId,\\n string calldata basketManagerId,\\n address nftTokenAddress,\\n uint256 nftTokenId,\\n uint256 nftTokenAmount\\n ) external returns (bool success);\\n}\\n\",\"keccak256\":\"0xa825d020fbe598bb4b7a0e9dbc1fe1d3b17b161b4429a3f848eec27eab4f99d4\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"notice":"Interface for Charged Particles","version":1}}},"contracts/interfaces/IERC6551Account.sol":{"IERC6551Account":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"TransactionExecuted","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"executeCall","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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 `0xeff4d378`","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"executeCall(address,uint256,bytes)":"9e5d4c49","owner()":"8da5cb5b","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"TransactionExecuted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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 `0xeff4d378`\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC6551Account.sol\":\"IERC6551Account\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\ninterface IERC6551AccountProxy {\\n function implementation() external view returns (address);\\n}\\n\\n/// @dev the ERC-165 identifier for this interface is `0xeff4d378`\\ninterface IERC6551Account {\\n event TransactionExecuted(address indexed target, uint256 indexed value, bytes data);\\n\\n receive() external payable;\\n\\n function executeCall(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) external payable returns (bytes memory);\\n\\n function token()\\n external\\n view\\n returns (uint256 chainId, address tokenContract, uint256 tokenId);\\n\\n function owner() external view returns (address);\\n}\\n\",\"keccak256\":\"0x5fe2dca745f8e753d414778980a0846c1bbcbb26a09d7cd7fb712c7db7939582\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC6551AccountProxy":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC6551Account.sol\":\"IERC6551AccountProxy\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\ninterface IERC6551AccountProxy {\\n function implementation() external view returns (address);\\n}\\n\\n/// @dev the ERC-165 identifier for this interface is `0xeff4d378`\\ninterface IERC6551Account {\\n event TransactionExecuted(address indexed target, uint256 indexed value, bytes data);\\n\\n receive() external payable;\\n\\n function executeCall(\\n address to,\\n uint256 value,\\n bytes calldata data\\n ) external payable returns (bytes memory);\\n\\n function token()\\n external\\n view\\n returns (uint256 chainId, address tokenContract, uint256 tokenId);\\n\\n function owner() external view returns (address);\\n}\\n\",\"keccak256\":\"0x5fe2dca745f8e753d414778980a0846c1bbcbb26a09d7cd7fb712c7db7939582\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IRegistry.sol":{"IRegistry":{"abi":[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"}],"name":"account","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"createAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"account(address,uint256,address,uint256,uint256)":"5e9bc536","createAccount(address,uint256,address,uint256,uint256,bytes)":"da7323b3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"}],\"name\":\"account\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IRegistry.sol\":\"IRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.13;\\n\\ninterface IRegistry {\\n function createAccount(\\n address implementation,\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId,\\n uint256 salt,\\n bytes calldata initData\\n ) external returns (address);\\n\\n function account(\\n address implementation,\\n uint256 chainId,\\n address tokenContract,\\n uint256 tokenId,\\n uint256 salt\\n ) external view returns (address);\\n}\\n\",\"keccak256\":\"0xd24999d4d474bd349b1e2e5006eff215c5d9a64a481a9ebac3293f98603fbd27\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ERC6551AccountLib.sol":{"ERC6551AccountLib":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220507d1af45fff54535180cd2db9c0244503eb6a3f2538827633938e9a22f0be7564736f6c63430008110033","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 POP PUSH30 0x1AF45FFF54535180CD2DB9C0244503EB6A3F2538827633938E9A22F0BE75 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"58:747:25:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;58:747:25;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220507d1af45fff54535180cd2db9c0244503eb6a3f2538827633938e9a22f0be7564736f6c63430008110033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP PUSH30 0x1AF45FFF54535180CD2DB9C0244503EB6A3F2538827633938E9A22F0BE75 PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"58:747:25:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"salt()":"infinite","token()":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ERC6551AccountLib.sol\":\"ERC6551AccountLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/lib/ERC6551AccountLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nlibrary ERC6551AccountLib {\\n function token()\\n internal\\n view\\n returns (\\n uint256,\\n address,\\n uint256\\n )\\n {\\n bytes memory footer = new bytes(0x60);\\n\\n assembly {\\n // copy 0x60 bytes from end of footer\\n extcodecopy(address(), add(footer, 0x20), 0x4d, 0xad)\\n }\\n\\n return abi.decode(footer, (uint256, address, uint256));\\n }\\n\\n function salt() internal view returns (uint256) {\\n bytes memory footer = new bytes(0x20);\\n\\n assembly {\\n // copy 0x20 bytes from beginning of footer\\n extcodecopy(address(), add(footer, 0x20), 0x2d, 0x4d)\\n }\\n\\n return abi.decode(footer, (uint256));\\n }\\n}\\n\",\"keccak256\":\"0xf7a8eb3b4fb63068eb8ed2a1a129e4676af842541f43c1a1dc96a9f295060c45\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}. NOTE: The only changes made here are: - change scope of \"_owners\" from private to internal - change scope of \"_balances\" from private to internal - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\" - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_4722":{"entryPoint":null,"id":4722,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":287,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":453,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":536,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":393,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":90,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:29"},"nodeType":"YulFunctionCall","src":"66:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:29"},"nodeType":"YulFunctionCall","src":"56:31:29"},"nodeType":"YulExpressionStatement","src":"56:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:29","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:29"},"nodeType":"YulFunctionCall","src":"96:15:29"},"nodeType":"YulExpressionStatement","src":"96:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:29"},"nodeType":"YulFunctionCall","src":"120:15:29"},"nodeType":"YulExpressionStatement","src":"120:15:29"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:29"},{"body":{"nodeType":"YulBlock","src":"210:776:29","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:29"},"nodeType":"YulFunctionCall","src":"261:12:29"},"nodeType":"YulExpressionStatement","src":"261:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:29"},"nodeType":"YulFunctionCall","src":"234:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:29"},"nodeType":"YulFunctionCall","src":"230:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:29"},"nodeType":"YulFunctionCall","src":"223:35:29"},"nodeType":"YulIf","src":"220:55:29"},{"nodeType":"YulVariableDeclaration","src":"284:23:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:29"},"nodeType":"YulFunctionCall","src":"294:13:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:29"},"nodeType":"YulFunctionCall","src":"330:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:29"},"nodeType":"YulFunctionCall","src":"326:18:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:29"},"nodeType":"YulFunctionCall","src":"369:18:29"},"nodeType":"YulExpressionStatement","src":"369:18:29"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:29"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:29"},"nodeType":"YulFunctionCall","src":"356:10:29"},"nodeType":"YulIf","src":"353:36:29"},{"nodeType":"YulVariableDeclaration","src":"398:17:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:29"},"nodeType":"YulFunctionCall","src":"408:7:29"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:29","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:29"},"nodeType":"YulFunctionCall","src":"438:9:29"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:29","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:29"},"nodeType":"YulFunctionCall","src":"498:13:29"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:29"},"nodeType":"YulFunctionCall","src":"494:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:29","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:29"},"nodeType":"YulFunctionCall","src":"490:31:29"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:29"},"nodeType":"YulFunctionCall","src":"486:40:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:29"},"nodeType":"YulFunctionCall","src":"474:53:29"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:29"},"nodeType":"YulFunctionCall","src":"588:18:29"},"nodeType":"YulExpressionStatement","src":"588:18:29"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:29"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:29"},"nodeType":"YulFunctionCall","src":"542:18:29"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:29"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:29"},"nodeType":"YulFunctionCall","src":"562:22:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:29"},"nodeType":"YulFunctionCall","src":"539:46:29"},"nodeType":"YulIf","src":"536:72:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:29","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:29"},"nodeType":"YulFunctionCall","src":"617:22:29"},"nodeType":"YulExpressionStatement","src":"617:22:29"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:29"},"nodeType":"YulFunctionCall","src":"648:18:29"},"nodeType":"YulExpressionStatement","src":"648:18:29"},{"nodeType":"YulVariableDeclaration","src":"675:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:29","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:29"},"nodeType":"YulFunctionCall","src":"737:12:29"},"nodeType":"YulExpressionStatement","src":"737:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:29"},"nodeType":"YulFunctionCall","src":"708:15:29"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:29"},"nodeType":"YulFunctionCall","src":"704:24:29"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:29"},"nodeType":"YulFunctionCall","src":"701:33:29"},"nodeType":"YulIf","src":"698:53:29"},{"nodeType":"YulVariableDeclaration","src":"760:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:29"},"nodeType":"YulFunctionCall","src":"850:14:29"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:29"},"nodeType":"YulFunctionCall","src":"846:23:29"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:29"},"nodeType":"YulFunctionCall","src":"881:14:29"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:29"},"nodeType":"YulFunctionCall","src":"877:23:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:29"},"nodeType":"YulFunctionCall","src":"871:30:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:29"},"nodeType":"YulFunctionCall","src":"839:63:29"},"nodeType":"YulExpressionStatement","src":"839:63:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:29"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:29"},"nodeType":"YulFunctionCall","src":"787:9:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:29","statements":[{"nodeType":"YulAssignment","src":"799:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:29"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:29"},"nodeType":"YulFunctionCall","src":"804:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:29","statements":[]},"src":"779:133:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:29"},"nodeType":"YulFunctionCall","src":"932:15:29"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:29"},"nodeType":"YulFunctionCall","src":"928:24:29"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:29"},"nodeType":"YulFunctionCall","src":"921:35:29"},"nodeType":"YulExpressionStatement","src":"921:35:29"},{"nodeType":"YulAssignment","src":"965:15:29","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:29"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:29"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:29","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:29","type":""}],"src":"146:840:29"},{"body":{"nodeType":"YulBlock","src":"1109:444:29","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:29"},"nodeType":"YulFunctionCall","src":"1157:12:29"},"nodeType":"YulExpressionStatement","src":"1157:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:29"},"nodeType":"YulFunctionCall","src":"1126:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:29"},"nodeType":"YulFunctionCall","src":"1122:32:29"},"nodeType":"YulIf","src":"1119:52:29"},{"nodeType":"YulVariableDeclaration","src":"1180:30:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:29"},"nodeType":"YulFunctionCall","src":"1194:16:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:29"},"nodeType":"YulFunctionCall","src":"1233:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:29"},"nodeType":"YulFunctionCall","src":"1229:18:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:29"},"nodeType":"YulFunctionCall","src":"1276:12:29"},"nodeType":"YulExpressionStatement","src":"1276:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:29"},"nodeType":"YulFunctionCall","src":"1259:14:29"},"nodeType":"YulIf","src":"1256:34:29"},{"nodeType":"YulAssignment","src":"1299:71:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:29"},"nodeType":"YulFunctionCall","src":"1338:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:29"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:29"},"nodeType":"YulFunctionCall","src":"1309:61:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:29"},"nodeType":"YulFunctionCall","src":"1401:18:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:29"},"nodeType":"YulFunctionCall","src":"1395:25:29"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:29"},"nodeType":"YulFunctionCall","src":"1451:12:29"},"nodeType":"YulExpressionStatement","src":"1451:12:29"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:29"},"nodeType":"YulFunctionCall","src":"1432:16:29"},"nodeType":"YulIf","src":"1429:36:29"},{"nodeType":"YulAssignment","src":"1474:73:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:29"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:29"},"nodeType":"YulFunctionCall","src":"1513:24:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:29"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:29"},"nodeType":"YulFunctionCall","src":"1484:63:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:29"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:29","type":""}],"src":"991:562:29"},{"body":{"nodeType":"YulBlock","src":"1613:325:29","statements":[{"nodeType":"YulAssignment","src":"1623:22:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:29","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:29"},"nodeType":"YulFunctionCall","src":"1633:12:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:29","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:29"},"nodeType":"YulFunctionCall","src":"1680:12:29"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:29","statements":[{"nodeType":"YulAssignment","src":"1733:27:29","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:29","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:29"},"nodeType":"YulFunctionCall","src":"1743:17:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:29"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:29"},"nodeType":"YulFunctionCall","src":"1704:26:29"},"nodeType":"YulIf","src":"1701:61:29"},{"body":{"nodeType":"YulBlock","src":"1821:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:29"},"nodeType":"YulFunctionCall","src":"1845:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:29"},"nodeType":"YulFunctionCall","src":"1835:31:29"},"nodeType":"YulExpressionStatement","src":"1835:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:29","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:29"},"nodeType":"YulFunctionCall","src":"1879:15:29"},"nodeType":"YulExpressionStatement","src":"1879:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:29"},"nodeType":"YulFunctionCall","src":"1907:15:29"},"nodeType":"YulExpressionStatement","src":"1907:15:29"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:29"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:29","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:29"},"nodeType":"YulFunctionCall","src":"1797:14:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:29"},"nodeType":"YulFunctionCall","src":"1774:38:29"},"nodeType":"YulIf","src":"1771:161:29"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:29","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:29","type":""}],"src":"1558:380:29"},{"body":{"nodeType":"YulBlock","src":"1999:65:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:29","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:29"},"nodeType":"YulFunctionCall","src":"2009:14:29"},"nodeType":"YulExpressionStatement","src":"2009:14:29"},{"nodeType":"YulAssignment","src":"2032:26:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:29","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:29"},"nodeType":"YulFunctionCall","src":"2040:18:29"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:29"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:29","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:29","type":""}],"src":"1943:121:29"},{"body":{"nodeType":"YulBlock","src":"2150:464:29","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:29","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:29","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:29","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:29"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:29"},"nodeType":"YulFunctionCall","src":"2221:17:29"},"nodeType":"YulExpressionStatement","src":"2221:17:29"},{"nodeType":"YulVariableDeclaration","src":"2251:31:29","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:29","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:29"},"nodeType":"YulFunctionCall","src":"2263:19:29"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:29","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:29"},"nodeType":"YulFunctionCall","src":"2331:19:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:29"},"nodeType":"YulFunctionCall","src":"2324:27:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:29"},"nodeType":"YulFunctionCall","src":"2314:38:29"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:29","statements":[{"nodeType":"YulAssignment","src":"2391:19:29","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:29"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:29"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:29","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:29"},"nodeType":"YulFunctionCall","src":"2368:20:29"},"nodeType":"YulIf","src":"2365:47:29"},{"nodeType":"YulVariableDeclaration","src":"2425:41:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:29","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:29"},"nodeType":"YulFunctionCall","src":"2452:12:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:29"},"nodeType":"YulFunctionCall","src":"2445:20:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:29"},"nodeType":"YulFunctionCall","src":"2435:31:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:29","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:29"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:29","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:29"},"nodeType":"YulFunctionCall","src":"2579:17:29"},"nodeType":"YulExpressionStatement","src":"2579:17:29"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:29"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:29"},"nodeType":"YulFunctionCall","src":"2524:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:29","statements":[{"nodeType":"YulAssignment","src":"2540:22:29","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:29"},"nodeType":"YulFunctionCall","src":"2549:13:29"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:29"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:29","statements":[]},"src":"2516:82:29"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:29","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:29"},"nodeType":"YulFunctionCall","src":"2163:11:29"},"nodeType":"YulIf","src":"2160:448:29"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:29","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:29","type":""}],"src":"2069:545:29"},{"body":{"nodeType":"YulBlock","src":"2704:81:29","statements":[{"nodeType":"YulAssignment","src":"2714:65:29","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:29"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:29","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:29"},"nodeType":"YulFunctionCall","src":"2743:11:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:29"},"nodeType":"YulFunctionCall","src":"2756:6:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:29"},"nodeType":"YulFunctionCall","src":"2739:24:29"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:29"},"nodeType":"YulFunctionCall","src":"2735:29:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:29"},"nodeType":"YulFunctionCall","src":"2725:40:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:29","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:29"},"nodeType":"YulFunctionCall","src":"2767:11:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:29"},"nodeType":"YulFunctionCall","src":"2722:57:29"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:29"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:29","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:29","type":""}],"src":"2619:166:29"},{"body":{"nodeType":"YulBlock","src":"2886:1256:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:29","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:29"},"nodeType":"YulFunctionCall","src":"2910:10:29"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:29"},"nodeType":"YulFunctionCall","src":"2965:18:29"},"nodeType":"YulExpressionStatement","src":"2965:18:29"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:29"},"nodeType":"YulFunctionCall","src":"2947:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:29"},"nodeType":"YulFunctionCall","src":"2943:18:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:29"},"nodeType":"YulFunctionCall","src":"2932:30:29"},"nodeType":"YulIf","src":"2929:56:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:29"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:29"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:29"},"nodeType":"YulFunctionCall","src":"3070:11:29"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:29"},"nodeType":"YulFunctionCall","src":"3044:38:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:29"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:29"},"nodeType":"YulFunctionCall","src":"2994:97:29"},"nodeType":"YulExpressionStatement","src":"2994:97:29"},{"nodeType":"YulVariableDeclaration","src":"3100:18:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:29","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:29","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:29","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:29","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:29"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:29"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:29","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:29"},"nodeType":"YulFunctionCall","src":"3270:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:29"},"nodeType":"YulFunctionCall","src":"3258:20:29"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:29","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:29"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:29"},"nodeType":"YulFunctionCall","src":"3305:35:29"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:29","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:29"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:29"},"nodeType":"YulFunctionCall","src":"3479:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:29"},"nodeType":"YulFunctionCall","src":"3473:26:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:29"},"nodeType":"YulFunctionCall","src":"3458:42:29"},"nodeType":"YulExpressionStatement","src":"3458:42:29"},{"nodeType":"YulAssignment","src":"3517:24:29","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:29"},"nodeType":"YulFunctionCall","src":"3527:14:29"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:29"}]},{"nodeType":"YulAssignment","src":"3558:40:29","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:29"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:29"},"nodeType":"YulFunctionCall","src":"3571:27:29"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:29"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:29"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:29"},"nodeType":"YulFunctionCall","src":"3384:14:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:29","statements":[{"nodeType":"YulAssignment","src":"3401:24:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:29"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:29"},"nodeType":"YulFunctionCall","src":"3406:19:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:29","statements":[]},"src":"3376:236:29"},{"body":{"nodeType":"YulBlock","src":"3660:166:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:29","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:29"},"nodeType":"YulFunctionCall","src":"3701:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:29"},"nodeType":"YulFunctionCall","src":"3695:26:29"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:29","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:29"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:29","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:29"},"nodeType":"YulFunctionCall","src":"3780:14:29"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:29","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:29"},"nodeType":"YulFunctionCall","src":"3776:24:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:29"},"nodeType":"YulFunctionCall","src":"3802:6:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:29"},"nodeType":"YulFunctionCall","src":"3772:37:29"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:29"},"nodeType":"YulFunctionCall","src":"3768:42:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:29"},"nodeType":"YulFunctionCall","src":"3753:58:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:29"},"nodeType":"YulFunctionCall","src":"3738:74:29"},"nodeType":"YulExpressionStatement","src":"3738:74:29"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:29"},"nodeType":"YulFunctionCall","src":"3628:19:29"},"nodeType":"YulIf","src":"3625:201:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:29","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:29"},"nodeType":"YulFunctionCall","src":"3856:14:29"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:29"},"nodeType":"YulFunctionCall","src":"3852:22:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:29"},"nodeType":"YulFunctionCall","src":"3839:36:29"},"nodeType":"YulExpressionStatement","src":"3839:36:29"}]},"nodeType":"YulCase","src":"3222:663:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:29","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:29","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:29","statements":[{"nodeType":"YulAssignment","src":"3983:35:29","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:29"},"nodeType":"YulFunctionCall","src":"3998:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:29"},"nodeType":"YulFunctionCall","src":"3992:26:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:29"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:29"},"nodeType":"YulIf","src":"3943:89:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:29"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:29"},"nodeType":"YulFunctionCall","src":"4058:67:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:29"},"nodeType":"YulFunctionCall","src":"4045:81:29"},"nodeType":"YulExpressionStatement","src":"4045:81:29"}]},"nodeType":"YulCase","src":"3894:242:29","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:29","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:29"},"nodeType":"YulFunctionCall","src":"3199:14:29"},"nodeType":"YulSwitch","src":"3192:944:29"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:29","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:29","type":""}],"src":"2790:1352:29"}]},"contents":"{\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_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620013fc380380620013fc83398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61110880620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c9c565b6101ff565b60405190151581526020015b60405180910390f35b610104610251565b6040516100f39190610d09565b61012461011f366004610d1c565b6102e3565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d51565b61030a565b005b61014f61015f366004610d7b565b610424565b61014f610172366004610d7b565b610455565b610124610185366004610d1c565b610470565b61019d610198366004610db7565b6104d0565b6040519081526020016100f3565b610104610556565b61014f6101c1366004610dd2565b610565565b61014f6101d4366004610e24565b610574565b6101046101e7366004610d1c565b6105ac565b6100e76101fa366004610f00565b610620565b60006001600160e01b031982166380ac58cd60e01b148061023057506001600160e01b03198216635b5e139f60e01b145b8061024b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461026090610f33565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610f33565b80156102d95780601f106102ae576101008083540402835291602001916102d9565b820191906000526020600020905b8154815290600101906020018083116102bc57829003601f168201915b5050505050905090565b60006102ee8261064e565b506000908152600460205260409020546001600160a01b031690565b600061031582610470565b9050806001600160a01b0316836001600160a01b0316036103875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103a357506103a38133610620565b6104155760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161037e565b61041f83836106b0565b505050565b61042e338261071e565b61044a5760405162461bcd60e51b815260040161037e90610f6d565b61041f83838361077d565b61041f83838360405180602001604052806000815250610574565b6000818152600260205260408120546001600160a01b03168061024b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b60006001600160a01b03821661053a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161037e565b506001600160a01b031660009081526003602052604090205490565b60606001805461026090610f33565b610570338383610919565b5050565b61057e338361071e565b61059a5760405162461bcd60e51b815260040161037e90610f6d565b6105a6848484846109e7565b50505050565b60606105b78261064e565b60006105ce60408051602081019091526000815290565b905060008151116105ee5760405180602001604052806000815250610619565b806105f884610a1a565b604051602001610609929190610fbb565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260409020546001600160a01b03166106ad5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e582610470565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072a83610470565b9050806001600160a01b0316846001600160a01b0316148061075157506107518185610620565b806107755750836001600160a01b031661076a846102e3565b6001600160a01b0316145b949350505050565b826001600160a01b031661079082610470565b6001600160a01b0316146107f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161037e565b6001600160a01b0382166108565760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161037e565b6108616000826106b0565b6001600160a01b038316600090815260036020526040812080546001929061088a908490611000565b90915550506001600160a01b03821660009081526003602052604081208054600192906108b8908490611013565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361097a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161037e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109f284848461077d565b6109fe84848484610aad565b6105a65760405162461bcd60e51b815260040161037e90611026565b60606000610a2783610bae565b600101905060008167ffffffffffffffff811115610a4757610a47610e0e565b6040519080825280601f01601f191660200182016040528015610a71576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a7b57509392505050565b60006001600160a01b0384163b15610ba357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610af1903390899088908890600401611078565b6020604051808303816000875af1925050508015610b2c575060408051601f3d908101601f19168201909252610b29918101906110b5565b60015b610b89573d808015610b5a576040519150601f19603f3d011682016040523d82523d6000602084013e610b5f565b606091505b508051600003610b815760405162461bcd60e51b815260040161037e90611026565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610775565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bed5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c19576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c3757662386f26fc10000830492506010015b6305f5e1008310610c4f576305f5e100830492506008015b6127108310610c6357612710830492506004015b60648310610c75576064830492506002015b600a831061024b5760010192915050565b6001600160e01b0319811681146106ad57600080fd5b600060208284031215610cae57600080fd5b813561061981610c86565b60005b83811015610cd4578181015183820152602001610cbc565b50506000910152565b60008151808452610cf5816020860160208601610cb9565b601f01601f19169290920160200192915050565b6020815260006106196020830184610cdd565b600060208284031215610d2e57600080fd5b5035919050565b80356001600160a01b0381168114610d4c57600080fd5b919050565b60008060408385031215610d6457600080fd5b610d6d83610d35565b946020939093013593505050565b600080600060608486031215610d9057600080fd5b610d9984610d35565b9250610da760208501610d35565b9150604084013590509250925092565b600060208284031215610dc957600080fd5b61061982610d35565b60008060408385031215610de557600080fd5b610dee83610d35565b915060208301358015158114610e0357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e3a57600080fd5b610e4385610d35565b9350610e5160208601610d35565b925060408501359150606085013567ffffffffffffffff80821115610e7557600080fd5b818701915087601f830112610e8957600080fd5b813581811115610e9b57610e9b610e0e565b604051601f8201601f19908116603f01168101908382118183101715610ec357610ec3610e0e565b816040528281528a6020848701011115610edc57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610f1357600080fd5b610f1c83610d35565b9150610f2a60208401610d35565b90509250929050565b600181811c90821680610f4757607f821691505b602082108103610f6757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610fcd818460208801610cb9565b835190830190610fe1818360208801610cb9565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561024b5761024b610fea565b8082018082111561024b5761024b610fea565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110ab90830184610cdd565b9695505050505050565b6000602082840312156110c757600080fd5b815161061981610c8656fea26469706673582212200b74cd2d0211ec57287d84192bea6c92b3cd05c220be82520f20019659b546cd64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x13FC CODESIZE SUB DUP1 PUSH3 0x13FC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x42 DUP4 DUP3 PUSH3 0x218 JUMP JUMPDEST POP PUSH1 0x1 PUSH3 0x51 DUP3 DUP3 PUSH3 0x218 JUMP JUMPDEST POP POP POP PUSH3 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9F JUMPI PUSH3 0x9F PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCA JUMPI PUSH3 0xCA PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x159 DUP7 DUP4 DUP8 ADD PUSH3 0x70 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x17F DUP6 DUP3 DUP7 ADD PUSH3 0x70 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x19E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1EE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x20F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x234 JUMPI PUSH3 0x234 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x24C DUP2 PUSH3 0x245 DUP5 SLOAD PUSH3 0x189 JUMP JUMPDEST DUP5 PUSH3 0x1C5 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x284 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x20F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x294 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1108 DUP1 PUSH3 0x2F4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x164 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xC9C JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x251 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xD09 JUMP JUMPDEST PUSH2 0x124 PUSH2 0x11F CALLDATASIZE PUSH1 0x4 PUSH2 0xD1C JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xD51 JUMP JUMPDEST PUSH2 0x30A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xD7B JUMP JUMPDEST PUSH2 0x424 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0xD7B JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH2 0x124 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0xD1C JUMP JUMPDEST PUSH2 0x470 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0x4D0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x556 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDD2 JUMP JUMPDEST PUSH2 0x565 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0xE24 JUMP JUMPDEST PUSH2 0x574 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xD1C JUMP JUMPDEST PUSH2 0x5AC JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0xF00 JUMP JUMPDEST PUSH2 0x620 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x230 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x24B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x260 SWAP1 PUSH2 0xF33 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x28C SWAP1 PUSH2 0xF33 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2D9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2BC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EE DUP3 PUSH2 0x64E JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x315 DUP3 PUSH2 0x470 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x387 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3A3 JUMPI POP PUSH2 0x3A3 DUP2 CALLER PUSH2 0x620 JUMP JUMPDEST PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x37E JUMP JUMPDEST PUSH2 0x41F DUP4 DUP4 PUSH2 0x6B0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x42E CALLER DUP3 PUSH2 0x71E JUMP JUMPDEST PUSH2 0x44A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37E SWAP1 PUSH2 0xF6D JUMP JUMPDEST PUSH2 0x41F DUP4 DUP4 DUP4 PUSH2 0x77D JUMP JUMPDEST PUSH2 0x41F DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x574 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x37E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x53A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x37E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x260 SWAP1 PUSH2 0xF33 JUMP JUMPDEST PUSH2 0x570 CALLER DUP4 DUP4 PUSH2 0x919 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x57E CALLER DUP4 PUSH2 0x71E JUMP JUMPDEST PUSH2 0x59A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37E SWAP1 PUSH2 0xF6D JUMP JUMPDEST PUSH2 0x5A6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x9E7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5B7 DUP3 PUSH2 0x64E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5CE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x5EE JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x619 JUMP JUMPDEST DUP1 PUSH2 0x5F8 DUP5 PUSH2 0xA1A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x609 SWAP3 SWAP2 SWAP1 PUSH2 0xFBB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x37E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x6E5 DUP3 PUSH2 0x470 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x72A DUP4 PUSH2 0x470 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x751 JUMPI POP PUSH2 0x751 DUP2 DUP6 PUSH2 0x620 JUMP JUMPDEST DUP1 PUSH2 0x775 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x76A DUP5 PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x790 DUP3 PUSH2 0x470 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x37E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x856 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x37E JUMP JUMPDEST PUSH2 0x861 PUSH1 0x0 DUP3 PUSH2 0x6B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x88A SWAP1 DUP5 SWAP1 PUSH2 0x1000 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x8B8 SWAP1 DUP5 SWAP1 PUSH2 0x1013 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x97A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x37E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9F2 DUP5 DUP5 DUP5 PUSH2 0x77D JUMP JUMPDEST PUSH2 0x9FE DUP5 DUP5 DUP5 DUP5 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0x5A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37E SWAP1 PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xA27 DUP4 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA47 JUMPI PUSH2 0xA47 PUSH2 0xE0E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA71 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xA7B JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xAF1 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB2C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB29 SWAP2 DUP2 ADD SWAP1 PUSH2 0x10B5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB89 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xB5A 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 0xB5F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xB81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37E SWAP1 PUSH2 0x1026 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x775 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0xBED JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xC19 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xC37 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xC4F JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xC63 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xC75 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x24B JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x619 DUP2 PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCD4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCBC JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xCF5 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xCB9 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 0x619 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xCDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6D DUP4 PUSH2 0xD35 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD99 DUP5 PUSH2 0xD35 JUMP JUMPDEST SWAP3 POP PUSH2 0xDA7 PUSH1 0x20 DUP6 ADD PUSH2 0xD35 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x619 DUP3 PUSH2 0xD35 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDEE DUP4 PUSH2 0xD35 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 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 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE43 DUP6 PUSH2 0xD35 JUMP JUMPDEST SWAP4 POP PUSH2 0xE51 PUSH1 0x20 DUP7 ADD PUSH2 0xD35 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE9B JUMPI PUSH2 0xE9B PUSH2 0xE0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xEC3 JUMPI PUSH2 0xEC3 PUSH2 0xE0E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xEDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF1C DUP4 PUSH2 0xD35 JUMP JUMPDEST SWAP2 POP PUSH2 0xF2A PUSH1 0x20 DUP5 ADD PUSH2 0xD35 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF47 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xF67 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xFCD DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xCB9 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0xFE1 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xCB9 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x24B JUMPI PUSH2 0x24B PUSH2 0xFEA JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x24B JUMPI PUSH2 0x24B PUSH2 0xFEA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x10AB SWAP1 DUP4 ADD DUP5 PUSH2 0xCDD JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x619 DUP2 PUSH2 0xC86 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND PUSH21 0xCD2D0211EC57287D84192BEA6C92B3CD05C220BE82 MSTORE 0xF KECCAK256 ADD SWAP7 MSIZE 0xB5 CHAINID 0xCD PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"1382:13860:26:-:0;;;2237:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2303:5;:13;2311:5;2303;:13;:::i;:::-;-1:-1:-1;2326:7:26;:17;2336:7;2326;:17;:::i;:::-;;2237:113;;1382:13860;;14:127:29;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:29;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:29;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:29:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:29;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:29;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:29;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:29;;;3992:26;3943:89;-1:-1:-1;;2747:1:29;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:29;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:29;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:29;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:29:o;:::-;1382:13860:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_5523":{"entryPoint":null,"id":5523,"parameterSlots":3,"returnSlots":0},"@_approve_5391":{"entryPoint":1712,"id":5391,"parameterSlots":2,"returnSlots":0},"@_baseURI_4873":{"entryPoint":null,"id":4873,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_5512":{"entryPoint":null,"id":5512,"parameterSlots":3,"returnSlots":0},"@_checkOnERC721Received_5501":{"entryPoint":2733,"id":5501,"parameterSlots":4,"returnSlots":1},"@_exists_5091":{"entryPoint":null,"id":5091,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_5124":{"entryPoint":1822,"id":5124,"parameterSlots":2,"returnSlots":1},"@_msgSender_2287":{"entryPoint":null,"id":2287,"parameterSlots":0,"returnSlots":1},"@_requireMinted_5437":{"entryPoint":1614,"id":5437,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_5073":{"entryPoint":2535,"id":5073,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_5423":{"entryPoint":2329,"id":5423,"parameterSlots":3,"returnSlots":0},"@_transfer_5368":{"entryPoint":1917,"id":5368,"parameterSlots":3,"returnSlots":0},"@approve_4915":{"entryPoint":778,"id":4915,"parameterSlots":2,"returnSlots":0},"@balanceOf_4777":{"entryPoint":1232,"id":4777,"parameterSlots":1,"returnSlots":1},"@getApproved_4933":{"entryPoint":739,"id":4933,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_4968":{"entryPoint":1568,"id":4968,"parameterSlots":2,"returnSlots":1},"@log10_3265":{"entryPoint":2990,"id":3265,"parameterSlots":1,"returnSlots":1},"@name_4815":{"entryPoint":593,"id":4815,"parameterSlots":0,"returnSlots":1},"@ownerOf_4805":{"entryPoint":1136,"id":4805,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_5014":{"entryPoint":1109,"id":5014,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_5044":{"entryPoint":1396,"id":5044,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_4950":{"entryPoint":1381,"id":4950,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2549":{"entryPoint":null,"id":2549,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4753":{"entryPoint":511,"id":4753,"parameterSlots":1,"returnSlots":1},"@symbol_4825":{"entryPoint":1366,"id":4825,"parameterSlots":0,"returnSlots":1},"@toString_2356":{"entryPoint":2586,"id":2356,"parameterSlots":1,"returnSlots":1},"@tokenURI_4864":{"entryPoint":1452,"id":4864,"parameterSlots":1,"returnSlots":1},"@transferFrom_4995":{"entryPoint":1060,"id":4995,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":3381,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3511,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":3840,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":3451,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":3620,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3538,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3409,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":3228,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":4277,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":3356,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":3293,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4027,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4216,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3337,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4134,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3949,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":4115,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":4096,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3257,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":3891,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":4074,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3598,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":3206,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10529:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:87:29","statements":[{"body":{"nodeType":"YulBlock","src":"123:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"132:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"125:6:29"},"nodeType":"YulFunctionCall","src":"125:12:29"},"nodeType":"YulExpressionStatement","src":"125:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"108:10:29","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"99:3:29"},"nodeType":"YulFunctionCall","src":"99:20:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:29"},"nodeType":"YulFunctionCall","src":"88:32:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:29"},"nodeType":"YulFunctionCall","src":"78:43:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:29"},"nodeType":"YulFunctionCall","src":"71:51:29"},"nodeType":"YulIf","src":"68:71:29"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:29","type":""}],"src":"14:131:29"},{"body":{"nodeType":"YulBlock","src":"219:176:29","statements":[{"body":{"nodeType":"YulBlock","src":"265:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"274:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"277:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"267:6:29"},"nodeType":"YulFunctionCall","src":"267:12:29"},"nodeType":"YulExpressionStatement","src":"267:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"240:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"249:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"236:3:29"},"nodeType":"YulFunctionCall","src":"236:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"261:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"232:3:29"},"nodeType":"YulFunctionCall","src":"232:32:29"},"nodeType":"YulIf","src":"229:52:29"},{"nodeType":"YulVariableDeclaration","src":"290:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"316:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:29"},"nodeType":"YulFunctionCall","src":"303:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"294:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"359:5:29"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"335:23:29"},"nodeType":"YulFunctionCall","src":"335:30:29"},"nodeType":"YulExpressionStatement","src":"335:30:29"},{"nodeType":"YulAssignment","src":"374:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"384:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"374:6:29"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"185:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"196:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"208:6:29","type":""}],"src":"150:245:29"},{"body":{"nodeType":"YulBlock","src":"495:92:29","statements":[{"nodeType":"YulAssignment","src":"505:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"517:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"528:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"513:3:29"},"nodeType":"YulFunctionCall","src":"513:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"505:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"547:9:29"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"572:6:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"565:6:29"},"nodeType":"YulFunctionCall","src":"565:14:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"558:6:29"},"nodeType":"YulFunctionCall","src":"558:22:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"540:6:29"},"nodeType":"YulFunctionCall","src":"540:41:29"},"nodeType":"YulExpressionStatement","src":"540:41:29"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"464:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"475:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"486:4:29","type":""}],"src":"400:187:29"},{"body":{"nodeType":"YulBlock","src":"658:184:29","statements":[{"nodeType":"YulVariableDeclaration","src":"668:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"677:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"672:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"737:63:29","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"762:3:29"},{"name":"i","nodeType":"YulIdentifier","src":"767:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"758:3:29"},"nodeType":"YulFunctionCall","src":"758:11:29"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"781:3:29"},{"name":"i","nodeType":"YulIdentifier","src":"786:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:29"},"nodeType":"YulFunctionCall","src":"777:11:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"771:5:29"},"nodeType":"YulFunctionCall","src":"771:18:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"751:6:29"},"nodeType":"YulFunctionCall","src":"751:39:29"},"nodeType":"YulExpressionStatement","src":"751:39:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"698:1:29"},{"name":"length","nodeType":"YulIdentifier","src":"701:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"695:2:29"},"nodeType":"YulFunctionCall","src":"695:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"709:19:29","statements":[{"nodeType":"YulAssignment","src":"711:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"720:1:29"},{"kind":"number","nodeType":"YulLiteral","src":"723:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"716:3:29"},"nodeType":"YulFunctionCall","src":"716:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"711:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"691:3:29","statements":[]},"src":"687:113:29"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"820:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"825:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"816:3:29"},"nodeType":"YulFunctionCall","src":"816:16:29"},{"kind":"number","nodeType":"YulLiteral","src":"834:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:29"},"nodeType":"YulFunctionCall","src":"809:27:29"},"nodeType":"YulExpressionStatement","src":"809:27:29"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"636:3:29","type":""},{"name":"dst","nodeType":"YulTypedName","src":"641:3:29","type":""},{"name":"length","nodeType":"YulTypedName","src":"646:6:29","type":""}],"src":"592:250:29"},{"body":{"nodeType":"YulBlock","src":"897:221:29","statements":[{"nodeType":"YulVariableDeclaration","src":"907:26:29","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"927:5:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"921:5:29"},"nodeType":"YulFunctionCall","src":"921:12:29"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"911:6:29","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"949:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"954:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"942:6:29"},"nodeType":"YulFunctionCall","src":"942:19:29"},"nodeType":"YulExpressionStatement","src":"942:19:29"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1009:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"1016:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1005:3:29"},"nodeType":"YulFunctionCall","src":"1005:16:29"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1027:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"1032:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1023:3:29"},"nodeType":"YulFunctionCall","src":"1023:14:29"},{"name":"length","nodeType":"YulIdentifier","src":"1039:6:29"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"970:34:29"},"nodeType":"YulFunctionCall","src":"970:76:29"},"nodeType":"YulExpressionStatement","src":"970:76:29"},{"nodeType":"YulAssignment","src":"1055:57:29","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1070:3:29"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1083:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1091:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1079:3:29"},"nodeType":"YulFunctionCall","src":"1079:15:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1100:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1096:3:29"},"nodeType":"YulFunctionCall","src":"1096:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1075:3:29"},"nodeType":"YulFunctionCall","src":"1075:29:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1066:3:29"},"nodeType":"YulFunctionCall","src":"1066:39:29"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1062:3:29"},"nodeType":"YulFunctionCall","src":"1062:50:29"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1055:3:29"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"874:5:29","type":""},{"name":"pos","nodeType":"YulTypedName","src":"881:3:29","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"889:3:29","type":""}],"src":"847:271:29"},{"body":{"nodeType":"YulBlock","src":"1244:99:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1261:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1272:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1254:6:29"},"nodeType":"YulFunctionCall","src":"1254:21:29"},"nodeType":"YulExpressionStatement","src":"1254:21:29"},{"nodeType":"YulAssignment","src":"1284:53:29","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1310:6:29"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1322:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1333:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1318:3:29"},"nodeType":"YulFunctionCall","src":"1318:18:29"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1292:17:29"},"nodeType":"YulFunctionCall","src":"1292:45:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1284:4:29"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1213:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1224:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1235:4:29","type":""}],"src":"1123:220:29"},{"body":{"nodeType":"YulBlock","src":"1418:110:29","statements":[{"body":{"nodeType":"YulBlock","src":"1464:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1473:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1476:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1466:6:29"},"nodeType":"YulFunctionCall","src":"1466:12:29"},"nodeType":"YulExpressionStatement","src":"1466:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1439:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1448:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1435:3:29"},"nodeType":"YulFunctionCall","src":"1435:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1460:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1431:3:29"},"nodeType":"YulFunctionCall","src":"1431:32:29"},"nodeType":"YulIf","src":"1428:52:29"},{"nodeType":"YulAssignment","src":"1489:33:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1512:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1499:12:29"},"nodeType":"YulFunctionCall","src":"1499:23:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1489:6:29"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1384:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1395:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1407:6:29","type":""}],"src":"1348:180:29"},{"body":{"nodeType":"YulBlock","src":"1634:102:29","statements":[{"nodeType":"YulAssignment","src":"1644:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1656:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1667:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1652:3:29"},"nodeType":"YulFunctionCall","src":"1652:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1644:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1701:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1717:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1722:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1713:3:29"},"nodeType":"YulFunctionCall","src":"1713:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"1726:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1709:3:29"},"nodeType":"YulFunctionCall","src":"1709:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1697:3:29"},"nodeType":"YulFunctionCall","src":"1697:32:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1679:6:29"},"nodeType":"YulFunctionCall","src":"1679:51:29"},"nodeType":"YulExpressionStatement","src":"1679:51:29"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1603:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1614:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1625:4:29","type":""}],"src":"1533:203:29"},{"body":{"nodeType":"YulBlock","src":"1790:124:29","statements":[{"nodeType":"YulAssignment","src":"1800:29:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1822:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1809:12:29"},"nodeType":"YulFunctionCall","src":"1809:20:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1800:5:29"}]},{"body":{"nodeType":"YulBlock","src":"1892:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1901:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1904:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1894:6:29"},"nodeType":"YulFunctionCall","src":"1894:12:29"},"nodeType":"YulExpressionStatement","src":"1894:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1851:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1862:5:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1877:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1882:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1873:3:29"},"nodeType":"YulFunctionCall","src":"1873:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"1886:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1869:3:29"},"nodeType":"YulFunctionCall","src":"1869:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1858:3:29"},"nodeType":"YulFunctionCall","src":"1858:31:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1848:2:29"},"nodeType":"YulFunctionCall","src":"1848:42:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1841:6:29"},"nodeType":"YulFunctionCall","src":"1841:50:29"},"nodeType":"YulIf","src":"1838:70:29"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1769:6:29","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1780:5:29","type":""}],"src":"1741:173:29"},{"body":{"nodeType":"YulBlock","src":"2006:167:29","statements":[{"body":{"nodeType":"YulBlock","src":"2052:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2061:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2064:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2054:6:29"},"nodeType":"YulFunctionCall","src":"2054:12:29"},"nodeType":"YulExpressionStatement","src":"2054:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2036:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2023:3:29"},"nodeType":"YulFunctionCall","src":"2023:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2048:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2019:3:29"},"nodeType":"YulFunctionCall","src":"2019:32:29"},"nodeType":"YulIf","src":"2016:52:29"},{"nodeType":"YulAssignment","src":"2077:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2106:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2087:18:29"},"nodeType":"YulFunctionCall","src":"2087:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2077:6:29"}]},{"nodeType":"YulAssignment","src":"2125:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2152:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2163:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2148:3:29"},"nodeType":"YulFunctionCall","src":"2148:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2135:12:29"},"nodeType":"YulFunctionCall","src":"2135:32:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2125:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1964:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1975:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1987:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1995:6:29","type":""}],"src":"1919:254:29"},{"body":{"nodeType":"YulBlock","src":"2282:224:29","statements":[{"body":{"nodeType":"YulBlock","src":"2328:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2337:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2340:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2330:6:29"},"nodeType":"YulFunctionCall","src":"2330:12:29"},"nodeType":"YulExpressionStatement","src":"2330:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2303:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2312:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2299:3:29"},"nodeType":"YulFunctionCall","src":"2299:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2324:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2295:3:29"},"nodeType":"YulFunctionCall","src":"2295:32:29"},"nodeType":"YulIf","src":"2292:52:29"},{"nodeType":"YulAssignment","src":"2353:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2382:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2363:18:29"},"nodeType":"YulFunctionCall","src":"2363:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2353:6:29"}]},{"nodeType":"YulAssignment","src":"2401:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2434:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2445:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2430:3:29"},"nodeType":"YulFunctionCall","src":"2430:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2411:18:29"},"nodeType":"YulFunctionCall","src":"2411:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2401:6:29"}]},{"nodeType":"YulAssignment","src":"2458:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2485:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2496:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2481:3:29"},"nodeType":"YulFunctionCall","src":"2481:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2468:12:29"},"nodeType":"YulFunctionCall","src":"2468:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2458:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2232:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2243:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2255:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2263:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2271:6:29","type":""}],"src":"2178:328:29"},{"body":{"nodeType":"YulBlock","src":"2581:116:29","statements":[{"body":{"nodeType":"YulBlock","src":"2627:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2636:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2639:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2629:6:29"},"nodeType":"YulFunctionCall","src":"2629:12:29"},"nodeType":"YulExpressionStatement","src":"2629:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2602:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2611:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2598:3:29"},"nodeType":"YulFunctionCall","src":"2598:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2623:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2594:3:29"},"nodeType":"YulFunctionCall","src":"2594:32:29"},"nodeType":"YulIf","src":"2591:52:29"},{"nodeType":"YulAssignment","src":"2652:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2681:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2662:18:29"},"nodeType":"YulFunctionCall","src":"2662:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2652:6:29"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2547:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2558:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2570:6:29","type":""}],"src":"2511:186:29"},{"body":{"nodeType":"YulBlock","src":"2803:76:29","statements":[{"nodeType":"YulAssignment","src":"2813:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2825:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2836:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2821:3:29"},"nodeType":"YulFunctionCall","src":"2821:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2813:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2855:9:29"},{"name":"value0","nodeType":"YulIdentifier","src":"2866:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2848:6:29"},"nodeType":"YulFunctionCall","src":"2848:25:29"},"nodeType":"YulExpressionStatement","src":"2848:25:29"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2772:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2783:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2794:4:29","type":""}],"src":"2702:177:29"},{"body":{"nodeType":"YulBlock","src":"2968:263:29","statements":[{"body":{"nodeType":"YulBlock","src":"3014:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3023:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3026:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3016:6:29"},"nodeType":"YulFunctionCall","src":"3016:12:29"},"nodeType":"YulExpressionStatement","src":"3016:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2989:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2998:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2985:3:29"},"nodeType":"YulFunctionCall","src":"2985:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"3010:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2981:3:29"},"nodeType":"YulFunctionCall","src":"2981:32:29"},"nodeType":"YulIf","src":"2978:52:29"},{"nodeType":"YulAssignment","src":"3039:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3068:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3049:18:29"},"nodeType":"YulFunctionCall","src":"3049:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3039:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3087:45:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3117:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3128:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3113:3:29"},"nodeType":"YulFunctionCall","src":"3113:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3100:12:29"},"nodeType":"YulFunctionCall","src":"3100:32:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3091:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3185:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3194:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3197:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3187:6:29"},"nodeType":"YulFunctionCall","src":"3187:12:29"},"nodeType":"YulExpressionStatement","src":"3187:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3154:5:29"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3175:5:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3168:6:29"},"nodeType":"YulFunctionCall","src":"3168:13:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3161:6:29"},"nodeType":"YulFunctionCall","src":"3161:21:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3151:2:29"},"nodeType":"YulFunctionCall","src":"3151:32:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3144:6:29"},"nodeType":"YulFunctionCall","src":"3144:40:29"},"nodeType":"YulIf","src":"3141:60:29"},{"nodeType":"YulAssignment","src":"3210:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"3220:5:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3210:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2926:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2937:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2949:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2957:6:29","type":""}],"src":"2884:347:29"},{"body":{"nodeType":"YulBlock","src":"3268:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3285:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3292:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3297:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3288:3:29"},"nodeType":"YulFunctionCall","src":"3288:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3278:6:29"},"nodeType":"YulFunctionCall","src":"3278:31:29"},"nodeType":"YulExpressionStatement","src":"3278:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3325:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3328:4:29","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3318:6:29"},"nodeType":"YulFunctionCall","src":"3318:15:29"},"nodeType":"YulExpressionStatement","src":"3318:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3349:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3352:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3342:6:29"},"nodeType":"YulFunctionCall","src":"3342:15:29"},"nodeType":"YulExpressionStatement","src":"3342:15:29"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3236:127:29"},{"body":{"nodeType":"YulBlock","src":"3498:1008:29","statements":[{"body":{"nodeType":"YulBlock","src":"3545:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3554:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3557:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3547:6:29"},"nodeType":"YulFunctionCall","src":"3547:12:29"},"nodeType":"YulExpressionStatement","src":"3547:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3519:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"3528:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3515:3:29"},"nodeType":"YulFunctionCall","src":"3515:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"3540:3:29","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3511:3:29"},"nodeType":"YulFunctionCall","src":"3511:33:29"},"nodeType":"YulIf","src":"3508:53:29"},{"nodeType":"YulAssignment","src":"3570:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3599:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3580:18:29"},"nodeType":"YulFunctionCall","src":"3580:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3570:6:29"}]},{"nodeType":"YulAssignment","src":"3618:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3651:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3662:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3647:3:29"},"nodeType":"YulFunctionCall","src":"3647:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3628:18:29"},"nodeType":"YulFunctionCall","src":"3628:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3618:6:29"}]},{"nodeType":"YulAssignment","src":"3675:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3702:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3713:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3698:3:29"},"nodeType":"YulFunctionCall","src":"3698:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3685:12:29"},"nodeType":"YulFunctionCall","src":"3685:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3675:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3726:46:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3757:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3768:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3753:3:29"},"nodeType":"YulFunctionCall","src":"3753:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3740:12:29"},"nodeType":"YulFunctionCall","src":"3740:32:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3730:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3781:28:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3791:18:29","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3785:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3836:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3845:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3848:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3838:6:29"},"nodeType":"YulFunctionCall","src":"3838:12:29"},"nodeType":"YulExpressionStatement","src":"3838:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3824:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"3832:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3821:2:29"},"nodeType":"YulFunctionCall","src":"3821:14:29"},"nodeType":"YulIf","src":"3818:34:29"},{"nodeType":"YulVariableDeclaration","src":"3861:32:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3875:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"3886:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3871:3:29"},"nodeType":"YulFunctionCall","src":"3871:22:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3865:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3941:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3950:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3953:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3943:6:29"},"nodeType":"YulFunctionCall","src":"3943:12:29"},"nodeType":"YulExpressionStatement","src":"3943:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3920:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"3924:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3916:3:29"},"nodeType":"YulFunctionCall","src":"3916:13:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3931:7:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3912:3:29"},"nodeType":"YulFunctionCall","src":"3912:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3905:6:29"},"nodeType":"YulFunctionCall","src":"3905:35:29"},"nodeType":"YulIf","src":"3902:55:29"},{"nodeType":"YulVariableDeclaration","src":"3966:26:29","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3989:2:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3976:12:29"},"nodeType":"YulFunctionCall","src":"3976:16:29"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3970:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"4015:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4017:16:29"},"nodeType":"YulFunctionCall","src":"4017:18:29"},"nodeType":"YulExpressionStatement","src":"4017:18:29"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4007:2:29"},{"name":"_1","nodeType":"YulIdentifier","src":"4011:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4004:2:29"},"nodeType":"YulFunctionCall","src":"4004:10:29"},"nodeType":"YulIf","src":"4001:36:29"},{"nodeType":"YulVariableDeclaration","src":"4046:17:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4060:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4056:3:29"},"nodeType":"YulFunctionCall","src":"4056:7:29"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4050:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4072:23:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4092:2:29","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4086:5:29"},"nodeType":"YulFunctionCall","src":"4086:9:29"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4076:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4104:71:29","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4126:6:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4150:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"4154:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4146:3:29"},"nodeType":"YulFunctionCall","src":"4146:13:29"},{"name":"_4","nodeType":"YulIdentifier","src":"4161:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4142:3:29"},"nodeType":"YulFunctionCall","src":"4142:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"4166:2:29","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4138:3:29"},"nodeType":"YulFunctionCall","src":"4138:31:29"},{"name":"_4","nodeType":"YulIdentifier","src":"4171:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4134:3:29"},"nodeType":"YulFunctionCall","src":"4134:40:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4122:3:29"},"nodeType":"YulFunctionCall","src":"4122:53:29"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4108:10:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"4234:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4236:16:29"},"nodeType":"YulFunctionCall","src":"4236:18:29"},"nodeType":"YulExpressionStatement","src":"4236:18:29"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4193:10:29"},{"name":"_1","nodeType":"YulIdentifier","src":"4205:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4190:2:29"},"nodeType":"YulFunctionCall","src":"4190:18:29"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4213:10:29"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4225:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4210:2:29"},"nodeType":"YulFunctionCall","src":"4210:22:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4187:2:29"},"nodeType":"YulFunctionCall","src":"4187:46:29"},"nodeType":"YulIf","src":"4184:72:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4272:2:29","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4276:10:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4265:6:29"},"nodeType":"YulFunctionCall","src":"4265:22:29"},"nodeType":"YulExpressionStatement","src":"4265:22:29"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4303:6:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4311:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4296:6:29"},"nodeType":"YulFunctionCall","src":"4296:18:29"},"nodeType":"YulExpressionStatement","src":"4296:18:29"},{"body":{"nodeType":"YulBlock","src":"4360:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4369:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4372:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4362:6:29"},"nodeType":"YulFunctionCall","src":"4362:12:29"},"nodeType":"YulExpressionStatement","src":"4362:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4337:2:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4341:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4333:3:29"},"nodeType":"YulFunctionCall","src":"4333:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"4346:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4329:3:29"},"nodeType":"YulFunctionCall","src":"4329:20:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4351:7:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4326:2:29"},"nodeType":"YulFunctionCall","src":"4326:33:29"},"nodeType":"YulIf","src":"4323:53:29"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4402:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4410:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4398:3:29"},"nodeType":"YulFunctionCall","src":"4398:15:29"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4419:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"4423:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4415:3:29"},"nodeType":"YulFunctionCall","src":"4415:11:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4428:2:29"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4385:12:29"},"nodeType":"YulFunctionCall","src":"4385:46:29"},"nodeType":"YulExpressionStatement","src":"4385:46:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4455:6:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4463:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:29"},"nodeType":"YulFunctionCall","src":"4451:15:29"},{"kind":"number","nodeType":"YulLiteral","src":"4468:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4447:3:29"},"nodeType":"YulFunctionCall","src":"4447:24:29"},{"kind":"number","nodeType":"YulLiteral","src":"4473:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4440:6:29"},"nodeType":"YulFunctionCall","src":"4440:35:29"},"nodeType":"YulExpressionStatement","src":"4440:35:29"},{"nodeType":"YulAssignment","src":"4484:16:29","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4494:6:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4484:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3440:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3451:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3463:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3471:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3479:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3487:6:29","type":""}],"src":"3368:1138:29"},{"body":{"nodeType":"YulBlock","src":"4598:173:29","statements":[{"body":{"nodeType":"YulBlock","src":"4644:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4653:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4656:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4646:6:29"},"nodeType":"YulFunctionCall","src":"4646:12:29"},"nodeType":"YulExpressionStatement","src":"4646:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4619:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"4628:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4615:3:29"},"nodeType":"YulFunctionCall","src":"4615:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"4640:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4611:3:29"},"nodeType":"YulFunctionCall","src":"4611:32:29"},"nodeType":"YulIf","src":"4608:52:29"},{"nodeType":"YulAssignment","src":"4669:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4698:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4679:18:29"},"nodeType":"YulFunctionCall","src":"4679:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4669:6:29"}]},{"nodeType":"YulAssignment","src":"4717:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4750:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4761:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4746:3:29"},"nodeType":"YulFunctionCall","src":"4746:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4727:18:29"},"nodeType":"YulFunctionCall","src":"4727:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4717:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4556:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4567:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4579:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4587:6:29","type":""}],"src":"4511:260:29"},{"body":{"nodeType":"YulBlock","src":"4831:325:29","statements":[{"nodeType":"YulAssignment","src":"4841:22:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4855:1:29","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"4858:4:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4851:3:29"},"nodeType":"YulFunctionCall","src":"4851:12:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4841:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"4872:38:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"4902:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"4908:1:29","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4898:3:29"},"nodeType":"YulFunctionCall","src":"4898:12:29"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"4876:18:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"4949:31:29","statements":[{"nodeType":"YulAssignment","src":"4951:27:29","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4965:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4973:4:29","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4961:3:29"},"nodeType":"YulFunctionCall","src":"4961:17:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4951:6:29"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4929:18:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4922:6:29"},"nodeType":"YulFunctionCall","src":"4922:26:29"},"nodeType":"YulIf","src":"4919:61:29"},{"body":{"nodeType":"YulBlock","src":"5039:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5060:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5067:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"5072:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5063:3:29"},"nodeType":"YulFunctionCall","src":"5063:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5053:6:29"},"nodeType":"YulFunctionCall","src":"5053:31:29"},"nodeType":"YulExpressionStatement","src":"5053:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5104:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5107:4:29","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5097:6:29"},"nodeType":"YulFunctionCall","src":"5097:15:29"},"nodeType":"YulExpressionStatement","src":"5097:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5132:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5135:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5125:6:29"},"nodeType":"YulFunctionCall","src":"5125:15:29"},"nodeType":"YulExpressionStatement","src":"5125:15:29"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4995:18:29"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5018:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"5026:2:29","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5015:2:29"},"nodeType":"YulFunctionCall","src":"5015:14:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4992:2:29"},"nodeType":"YulFunctionCall","src":"4992:38:29"},"nodeType":"YulIf","src":"4989:161:29"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"4811:4:29","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4820:6:29","type":""}],"src":"4776:380:29"},{"body":{"nodeType":"YulBlock","src":"5335:223:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5352:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5363:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5345:6:29"},"nodeType":"YulFunctionCall","src":"5345:21:29"},"nodeType":"YulExpressionStatement","src":"5345:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5386:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5397:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5382:3:29"},"nodeType":"YulFunctionCall","src":"5382:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5402:2:29","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5375:6:29"},"nodeType":"YulFunctionCall","src":"5375:30:29"},"nodeType":"YulExpressionStatement","src":"5375:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5425:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5436:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5421:3:29"},"nodeType":"YulFunctionCall","src":"5421:18:29"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"5441:34:29","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5414:6:29"},"nodeType":"YulFunctionCall","src":"5414:62:29"},"nodeType":"YulExpressionStatement","src":"5414:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5496:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5507:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5492:3:29"},"nodeType":"YulFunctionCall","src":"5492:18:29"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"5512:3:29","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5485:6:29"},"nodeType":"YulFunctionCall","src":"5485:31:29"},"nodeType":"YulExpressionStatement","src":"5485:31:29"},{"nodeType":"YulAssignment","src":"5525:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5537:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5548:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5533:3:29"},"nodeType":"YulFunctionCall","src":"5533:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5525:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5312:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5326:4:29","type":""}],"src":"5161:397:29"},{"body":{"nodeType":"YulBlock","src":"5737:252:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5754:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5765:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5747:6:29"},"nodeType":"YulFunctionCall","src":"5747:21:29"},"nodeType":"YulExpressionStatement","src":"5747:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5788:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5799:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5784:3:29"},"nodeType":"YulFunctionCall","src":"5784:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5804:2:29","type":"","value":"62"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5777:6:29"},"nodeType":"YulFunctionCall","src":"5777:30:29"},"nodeType":"YulExpressionStatement","src":"5777:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5827:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5838:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5823:3:29"},"nodeType":"YulFunctionCall","src":"5823:18:29"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"5843:34:29","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5816:6:29"},"nodeType":"YulFunctionCall","src":"5816:62:29"},"nodeType":"YulExpressionStatement","src":"5816:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5898:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5909:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5894:3:29"},"nodeType":"YulFunctionCall","src":"5894:18:29"},{"hexValue":"6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"5914:32:29","type":"","value":"ken owner nor approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5887:6:29"},"nodeType":"YulFunctionCall","src":"5887:60:29"},"nodeType":"YulExpressionStatement","src":"5887:60:29"},{"nodeType":"YulAssignment","src":"5956:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5968:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5979:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5964:3:29"},"nodeType":"YulFunctionCall","src":"5964:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5956:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5714:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5728:4:29","type":""}],"src":"5563:426:29"},{"body":{"nodeType":"YulBlock","src":"6168:236:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6185:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6196:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6178:6:29"},"nodeType":"YulFunctionCall","src":"6178:21:29"},"nodeType":"YulExpressionStatement","src":"6178:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6219:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6230:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6215:3:29"},"nodeType":"YulFunctionCall","src":"6215:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"6235:2:29","type":"","value":"46"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6208:6:29"},"nodeType":"YulFunctionCall","src":"6208:30:29"},"nodeType":"YulExpressionStatement","src":"6208:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6258:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6269:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6254:3:29"},"nodeType":"YulFunctionCall","src":"6254:18:29"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"6274:34:29","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6247:6:29"},"nodeType":"YulFunctionCall","src":"6247:62:29"},"nodeType":"YulExpressionStatement","src":"6247:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6329:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6340:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6325:3:29"},"nodeType":"YulFunctionCall","src":"6325:18:29"},{"hexValue":"72206e6f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"6345:16:29","type":"","value":"r nor approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6318:6:29"},"nodeType":"YulFunctionCall","src":"6318:44:29"},"nodeType":"YulExpressionStatement","src":"6318:44:29"},{"nodeType":"YulAssignment","src":"6371:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6383:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6394:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6379:3:29"},"nodeType":"YulFunctionCall","src":"6379:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6371:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6145:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6159:4:29","type":""}],"src":"5994:410:29"},{"body":{"nodeType":"YulBlock","src":"6583:174:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6600:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6611:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6593:6:29"},"nodeType":"YulFunctionCall","src":"6593:21:29"},"nodeType":"YulExpressionStatement","src":"6593:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6634:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6645:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6630:3:29"},"nodeType":"YulFunctionCall","src":"6630:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"6650:2:29","type":"","value":"24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6623:6:29"},"nodeType":"YulFunctionCall","src":"6623:30:29"},"nodeType":"YulExpressionStatement","src":"6623:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6673:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6684:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6669:3:29"},"nodeType":"YulFunctionCall","src":"6669:18:29"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"6689:26:29","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6662:6:29"},"nodeType":"YulFunctionCall","src":"6662:54:29"},"nodeType":"YulExpressionStatement","src":"6662:54:29"},{"nodeType":"YulAssignment","src":"6725:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6737:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6748:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6733:3:29"},"nodeType":"YulFunctionCall","src":"6733:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6725:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6560:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6574:4:29","type":""}],"src":"6409:348:29"},{"body":{"nodeType":"YulBlock","src":"6936:231:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6953:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6964:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6946:6:29"},"nodeType":"YulFunctionCall","src":"6946:21:29"},"nodeType":"YulExpressionStatement","src":"6946:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6987:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6998:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6983:3:29"},"nodeType":"YulFunctionCall","src":"6983:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"7003:2:29","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6976:6:29"},"nodeType":"YulFunctionCall","src":"6976:30:29"},"nodeType":"YulExpressionStatement","src":"6976:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7026:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7037:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7022:3:29"},"nodeType":"YulFunctionCall","src":"7022:18:29"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"7042:34:29","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7015:6:29"},"nodeType":"YulFunctionCall","src":"7015:62:29"},"nodeType":"YulExpressionStatement","src":"7015:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7097:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7108:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7093:3:29"},"nodeType":"YulFunctionCall","src":"7093:18:29"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7113:11:29","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7086:6:29"},"nodeType":"YulFunctionCall","src":"7086:39:29"},"nodeType":"YulExpressionStatement","src":"7086:39:29"},{"nodeType":"YulAssignment","src":"7134:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7146:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7157:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7142:3:29"},"nodeType":"YulFunctionCall","src":"7142:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7134:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6913:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6927:4:29","type":""}],"src":"6762:405:29"},{"body":{"nodeType":"YulBlock","src":"7359:309:29","statements":[{"nodeType":"YulVariableDeclaration","src":"7369:27:29","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7389:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7383:5:29"},"nodeType":"YulFunctionCall","src":"7383:13:29"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7373:6:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7444:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"7452:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7440:3:29"},"nodeType":"YulFunctionCall","src":"7440:17:29"},{"name":"pos","nodeType":"YulIdentifier","src":"7459:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"7464:6:29"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7405:34:29"},"nodeType":"YulFunctionCall","src":"7405:66:29"},"nodeType":"YulExpressionStatement","src":"7405:66:29"},{"nodeType":"YulVariableDeclaration","src":"7480:29:29","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7497:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"7502:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7493:3:29"},"nodeType":"YulFunctionCall","src":"7493:16:29"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"7484:5:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7518:29:29","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7540:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7534:5:29"},"nodeType":"YulFunctionCall","src":"7534:13:29"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"7522:8:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7595:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"7603:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7591:3:29"},"nodeType":"YulFunctionCall","src":"7591:17:29"},{"name":"end_1","nodeType":"YulIdentifier","src":"7610:5:29"},{"name":"length_1","nodeType":"YulIdentifier","src":"7617:8:29"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7556:34:29"},"nodeType":"YulFunctionCall","src":"7556:70:29"},"nodeType":"YulExpressionStatement","src":"7556:70:29"},{"nodeType":"YulAssignment","src":"7635:27:29","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"7646:5:29"},{"name":"length_1","nodeType":"YulIdentifier","src":"7653:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7642:3:29"},"nodeType":"YulFunctionCall","src":"7642:20:29"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7635:3:29"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7327:3:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7332:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7340:6:29","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7351:3:29","type":""}],"src":"7172:496:29"},{"body":{"nodeType":"YulBlock","src":"7847:227:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7864:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7875:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7857:6:29"},"nodeType":"YulFunctionCall","src":"7857:21:29"},"nodeType":"YulExpressionStatement","src":"7857:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7898:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7909:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7894:3:29"},"nodeType":"YulFunctionCall","src":"7894:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"7914:2:29","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7887:6:29"},"nodeType":"YulFunctionCall","src":"7887:30:29"},"nodeType":"YulExpressionStatement","src":"7887:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7937:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7948:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7933:3:29"},"nodeType":"YulFunctionCall","src":"7933:18:29"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"7953:34:29","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7926:6:29"},"nodeType":"YulFunctionCall","src":"7926:62:29"},"nodeType":"YulExpressionStatement","src":"7926:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8008:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8019:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8004:3:29"},"nodeType":"YulFunctionCall","src":"8004:18:29"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"8024:7:29","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7997:6:29"},"nodeType":"YulFunctionCall","src":"7997:35:29"},"nodeType":"YulExpressionStatement","src":"7997:35:29"},{"nodeType":"YulAssignment","src":"8041:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8053:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8064:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8049:3:29"},"nodeType":"YulFunctionCall","src":"8049:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8041:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7824:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7838:4:29","type":""}],"src":"7673:401:29"},{"body":{"nodeType":"YulBlock","src":"8253:226:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8270:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8281:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8263:6:29"},"nodeType":"YulFunctionCall","src":"8263:21:29"},"nodeType":"YulExpressionStatement","src":"8263:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8304:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8315:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8300:3:29"},"nodeType":"YulFunctionCall","src":"8300:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"8320:2:29","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8293:6:29"},"nodeType":"YulFunctionCall","src":"8293:30:29"},"nodeType":"YulExpressionStatement","src":"8293:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8343:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8354:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8339:3:29"},"nodeType":"YulFunctionCall","src":"8339:18:29"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"8359:34:29","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8332:6:29"},"nodeType":"YulFunctionCall","src":"8332:62:29"},"nodeType":"YulExpressionStatement","src":"8332:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8414:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8425:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8410:3:29"},"nodeType":"YulFunctionCall","src":"8410:18:29"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"8430:6:29","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8403:6:29"},"nodeType":"YulFunctionCall","src":"8403:34:29"},"nodeType":"YulExpressionStatement","src":"8403:34:29"},{"nodeType":"YulAssignment","src":"8446:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8458:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8469:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8454:3:29"},"nodeType":"YulFunctionCall","src":"8454:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8446:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8230:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8244:4:29","type":""}],"src":"8079:400:29"},{"body":{"nodeType":"YulBlock","src":"8516:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8533:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8540:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"8545:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"8536:3:29"},"nodeType":"YulFunctionCall","src":"8536:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8526:6:29"},"nodeType":"YulFunctionCall","src":"8526:31:29"},"nodeType":"YulExpressionStatement","src":"8526:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8573:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8576:4:29","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8566:6:29"},"nodeType":"YulFunctionCall","src":"8566:15:29"},"nodeType":"YulExpressionStatement","src":"8566:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8597:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8600:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8590:6:29"},"nodeType":"YulFunctionCall","src":"8590:15:29"},"nodeType":"YulExpressionStatement","src":"8590:15:29"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8484:127:29"},{"body":{"nodeType":"YulBlock","src":"8665:79:29","statements":[{"nodeType":"YulAssignment","src":"8675:17:29","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8687:1:29"},{"name":"y","nodeType":"YulIdentifier","src":"8690:1:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8683:3:29"},"nodeType":"YulFunctionCall","src":"8683:9:29"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"8675:4:29"}]},{"body":{"nodeType":"YulBlock","src":"8716:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8718:16:29"},"nodeType":"YulFunctionCall","src":"8718:18:29"},"nodeType":"YulExpressionStatement","src":"8718:18:29"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"8707:4:29"},{"name":"x","nodeType":"YulIdentifier","src":"8713:1:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8704:2:29"},"nodeType":"YulFunctionCall","src":"8704:11:29"},"nodeType":"YulIf","src":"8701:37:29"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8647:1:29","type":""},{"name":"y","nodeType":"YulTypedName","src":"8650:1:29","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"8656:4:29","type":""}],"src":"8616:128:29"},{"body":{"nodeType":"YulBlock","src":"8797:77:29","statements":[{"nodeType":"YulAssignment","src":"8807:16:29","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8818:1:29"},{"name":"y","nodeType":"YulIdentifier","src":"8821:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8814:3:29"},"nodeType":"YulFunctionCall","src":"8814:9:29"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"8807:3:29"}]},{"body":{"nodeType":"YulBlock","src":"8846:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8848:16:29"},"nodeType":"YulFunctionCall","src":"8848:18:29"},"nodeType":"YulExpressionStatement","src":"8848:18:29"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8838:1:29"},{"name":"sum","nodeType":"YulIdentifier","src":"8841:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8835:2:29"},"nodeType":"YulFunctionCall","src":"8835:10:29"},"nodeType":"YulIf","src":"8832:36:29"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8780:1:29","type":""},{"name":"y","nodeType":"YulTypedName","src":"8783:1:29","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"8789:3:29","type":""}],"src":"8749:125:29"},{"body":{"nodeType":"YulBlock","src":"9053:175:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9070:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9081:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9063:6:29"},"nodeType":"YulFunctionCall","src":"9063:21:29"},"nodeType":"YulExpressionStatement","src":"9063:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9104:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9115:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9100:3:29"},"nodeType":"YulFunctionCall","src":"9100:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"9120:2:29","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9093:6:29"},"nodeType":"YulFunctionCall","src":"9093:30:29"},"nodeType":"YulExpressionStatement","src":"9093:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9143:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9154:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9139:3:29"},"nodeType":"YulFunctionCall","src":"9139:18:29"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"9159:27:29","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9132:6:29"},"nodeType":"YulFunctionCall","src":"9132:55:29"},"nodeType":"YulExpressionStatement","src":"9132:55:29"},{"nodeType":"YulAssignment","src":"9196:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9208:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9219:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9204:3:29"},"nodeType":"YulFunctionCall","src":"9204:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9196:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9030:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9044:4:29","type":""}],"src":"8879:349:29"},{"body":{"nodeType":"YulBlock","src":"9407:240:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9424:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9435:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9417:6:29"},"nodeType":"YulFunctionCall","src":"9417:21:29"},"nodeType":"YulExpressionStatement","src":"9417:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9458:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9469:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9454:3:29"},"nodeType":"YulFunctionCall","src":"9454:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"9474:2:29","type":"","value":"50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9447:6:29"},"nodeType":"YulFunctionCall","src":"9447:30:29"},"nodeType":"YulExpressionStatement","src":"9447:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9497:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9508:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9493:3:29"},"nodeType":"YulFunctionCall","src":"9493:18:29"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"9513:34:29","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9486:6:29"},"nodeType":"YulFunctionCall","src":"9486:62:29"},"nodeType":"YulExpressionStatement","src":"9486:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9568:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9579:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9564:3:29"},"nodeType":"YulFunctionCall","src":"9564:18:29"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"9584:20:29","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9557:6:29"},"nodeType":"YulFunctionCall","src":"9557:48:29"},"nodeType":"YulExpressionStatement","src":"9557:48:29"},{"nodeType":"YulAssignment","src":"9614:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9626:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9637:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9622:3:29"},"nodeType":"YulFunctionCall","src":"9622:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9614:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9384:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9398:4:29","type":""}],"src":"9233:414:29"},{"body":{"nodeType":"YulBlock","src":"9684:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9701:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9708:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9713:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9704:3:29"},"nodeType":"YulFunctionCall","src":"9704:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9694:6:29"},"nodeType":"YulFunctionCall","src":"9694:31:29"},"nodeType":"YulExpressionStatement","src":"9694:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9741:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9744:4:29","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9734:6:29"},"nodeType":"YulFunctionCall","src":"9734:15:29"},"nodeType":"YulExpressionStatement","src":"9734:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9765:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9768:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9758:6:29"},"nodeType":"YulFunctionCall","src":"9758:15:29"},"nodeType":"YulExpressionStatement","src":"9758:15:29"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"9652:127:29"},{"body":{"nodeType":"YulBlock","src":"9987:286:29","statements":[{"nodeType":"YulVariableDeclaration","src":"9997:29:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10015:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"10020:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10011:3:29"},"nodeType":"YulFunctionCall","src":"10011:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"10024:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10007:3:29"},"nodeType":"YulFunctionCall","src":"10007:19:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10001:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10042:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10057:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"10065:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10053:3:29"},"nodeType":"YulFunctionCall","src":"10053:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10035:6:29"},"nodeType":"YulFunctionCall","src":"10035:34:29"},"nodeType":"YulExpressionStatement","src":"10035:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10089:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10100:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10085:3:29"},"nodeType":"YulFunctionCall","src":"10085:18:29"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10109:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"10117:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10105:3:29"},"nodeType":"YulFunctionCall","src":"10105:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10078:6:29"},"nodeType":"YulFunctionCall","src":"10078:43:29"},"nodeType":"YulExpressionStatement","src":"10078:43:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10141:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10152:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10137:3:29"},"nodeType":"YulFunctionCall","src":"10137:18:29"},{"name":"value2","nodeType":"YulIdentifier","src":"10157:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10130:6:29"},"nodeType":"YulFunctionCall","src":"10130:34:29"},"nodeType":"YulExpressionStatement","src":"10130:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10184:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10195:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10180:3:29"},"nodeType":"YulFunctionCall","src":"10180:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"10200:3:29","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10173:6:29"},"nodeType":"YulFunctionCall","src":"10173:31:29"},"nodeType":"YulExpressionStatement","src":"10173:31:29"},{"nodeType":"YulAssignment","src":"10213:54:29","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"10239:6:29"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10251:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10262:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10247:3:29"},"nodeType":"YulFunctionCall","src":"10247:19:29"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"10221:17:29"},"nodeType":"YulFunctionCall","src":"10221:46:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10213:4:29"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9932:9:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9943:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9951:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9959:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9967:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9978:4:29","type":""}],"src":"9784:489:29"},{"body":{"nodeType":"YulBlock","src":"10358:169:29","statements":[{"body":{"nodeType":"YulBlock","src":"10404:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10413:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10416:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10406:6:29"},"nodeType":"YulFunctionCall","src":"10406:12:29"},"nodeType":"YulExpressionStatement","src":"10406:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10379:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"10388:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10375:3:29"},"nodeType":"YulFunctionCall","src":"10375:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"10400:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10371:3:29"},"nodeType":"YulFunctionCall","src":"10371:32:29"},"nodeType":"YulIf","src":"10368:52:29"},{"nodeType":"YulVariableDeclaration","src":"10429:29:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10448:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10442:5:29"},"nodeType":"YulFunctionCall","src":"10442:16:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10433:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10491:5:29"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"10467:23:29"},"nodeType":"YulFunctionCall","src":"10467:30:29"},"nodeType":"YulExpressionStatement","src":"10467:30:29"},{"nodeType":"YulAssignment","src":"10506:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"10516:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10506:6:29"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10324:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10335:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10347:6:29","type":""}],"src":"10278:249:29"}]},"contents":"{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function 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_string(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_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function 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_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\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_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n mstore(add(headStart, 96), \"r\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 62)\n mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n mstore(add(headStart, 96), \"ken owner nor approved for all\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 46)\n mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n mstore(add(headStart, 96), \"r nor approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n mstore(add(headStart, 96), \"lid owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n mstore(add(headStart, 96), \"owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"ERC721: approve to caller\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n mstore(add(headStart, 96), \"ceiver implementer\")\n tail := add(headStart, 128)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c9c565b6101ff565b60405190151581526020015b60405180910390f35b610104610251565b6040516100f39190610d09565b61012461011f366004610d1c565b6102e3565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d51565b61030a565b005b61014f61015f366004610d7b565b610424565b61014f610172366004610d7b565b610455565b610124610185366004610d1c565b610470565b61019d610198366004610db7565b6104d0565b6040519081526020016100f3565b610104610556565b61014f6101c1366004610dd2565b610565565b61014f6101d4366004610e24565b610574565b6101046101e7366004610d1c565b6105ac565b6100e76101fa366004610f00565b610620565b60006001600160e01b031982166380ac58cd60e01b148061023057506001600160e01b03198216635b5e139f60e01b145b8061024b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461026090610f33565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610f33565b80156102d95780601f106102ae576101008083540402835291602001916102d9565b820191906000526020600020905b8154815290600101906020018083116102bc57829003601f168201915b5050505050905090565b60006102ee8261064e565b506000908152600460205260409020546001600160a01b031690565b600061031582610470565b9050806001600160a01b0316836001600160a01b0316036103875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103a357506103a38133610620565b6104155760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161037e565b61041f83836106b0565b505050565b61042e338261071e565b61044a5760405162461bcd60e51b815260040161037e90610f6d565b61041f83838361077d565b61041f83838360405180602001604052806000815250610574565b6000818152600260205260408120546001600160a01b03168061024b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b60006001600160a01b03821661053a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161037e565b506001600160a01b031660009081526003602052604090205490565b60606001805461026090610f33565b610570338383610919565b5050565b61057e338361071e565b61059a5760405162461bcd60e51b815260040161037e90610f6d565b6105a6848484846109e7565b50505050565b60606105b78261064e565b60006105ce60408051602081019091526000815290565b905060008151116105ee5760405180602001604052806000815250610619565b806105f884610a1a565b604051602001610609929190610fbb565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260409020546001600160a01b03166106ad5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161037e565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e582610470565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072a83610470565b9050806001600160a01b0316846001600160a01b0316148061075157506107518185610620565b806107755750836001600160a01b031661076a846102e3565b6001600160a01b0316145b949350505050565b826001600160a01b031661079082610470565b6001600160a01b0316146107f45760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161037e565b6001600160a01b0382166108565760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161037e565b6108616000826106b0565b6001600160a01b038316600090815260036020526040812080546001929061088a908490611000565b90915550506001600160a01b03821660009081526003602052604081208054600192906108b8908490611013565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361097a5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161037e565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109f284848461077d565b6109fe84848484610aad565b6105a65760405162461bcd60e51b815260040161037e90611026565b60606000610a2783610bae565b600101905060008167ffffffffffffffff811115610a4757610a47610e0e565b6040519080825280601f01601f191660200182016040528015610a71576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a7b57509392505050565b60006001600160a01b0384163b15610ba357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610af1903390899088908890600401611078565b6020604051808303816000875af1925050508015610b2c575060408051601f3d908101601f19168201909252610b29918101906110b5565b60015b610b89573d808015610b5a576040519150601f19603f3d011682016040523d82523d6000602084013e610b5f565b606091505b508051600003610b815760405162461bcd60e51b815260040161037e90611026565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610775565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bed5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610c19576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c3757662386f26fc10000830492506010015b6305f5e1008310610c4f576305f5e100830492506008015b6127108310610c6357612710830492506004015b60648310610c75576064830492506002015b600a831061024b5760010192915050565b6001600160e01b0319811681146106ad57600080fd5b600060208284031215610cae57600080fd5b813561061981610c86565b60005b83811015610cd4578181015183820152602001610cbc565b50506000910152565b60008151808452610cf5816020860160208601610cb9565b601f01601f19169290920160200192915050565b6020815260006106196020830184610cdd565b600060208284031215610d2e57600080fd5b5035919050565b80356001600160a01b0381168114610d4c57600080fd5b919050565b60008060408385031215610d6457600080fd5b610d6d83610d35565b946020939093013593505050565b600080600060608486031215610d9057600080fd5b610d9984610d35565b9250610da760208501610d35565b9150604084013590509250925092565b600060208284031215610dc957600080fd5b61061982610d35565b60008060408385031215610de557600080fd5b610dee83610d35565b915060208301358015158114610e0357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e3a57600080fd5b610e4385610d35565b9350610e5160208601610d35565b925060408501359150606085013567ffffffffffffffff80821115610e7557600080fd5b818701915087601f830112610e8957600080fd5b813581811115610e9b57610e9b610e0e565b604051601f8201601f19908116603f01168101908382118183101715610ec357610ec3610e0e565b816040528281528a6020848701011115610edc57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610f1357600080fd5b610f1c83610d35565b9150610f2a60208401610d35565b90509250929050565b600181811c90821680610f4757607f821691505b602082108103610f6757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008351610fcd818460208801610cb9565b835190830190610fe1818360208801610cb9565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561024b5761024b610fea565b8082018082111561024b5761024b610fea565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110ab90830184610cdd565b9695505050505050565b6000602082840312156110c757600080fd5b815161061981610c8656fea26469706673582212200b74cd2d0211ec57287d84192bea6c92b3cd05c220be82520f20019659b546cd64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x164 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xC9C JUMP JUMPDEST PUSH2 0x1FF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x251 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xD09 JUMP JUMPDEST PUSH2 0x124 PUSH2 0x11F CALLDATASIZE PUSH1 0x4 PUSH2 0xD1C JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xD51 JUMP JUMPDEST PUSH2 0x30A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xD7B JUMP JUMPDEST PUSH2 0x424 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0xD7B JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST PUSH2 0x124 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0xD1C JUMP JUMPDEST PUSH2 0x470 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0x4D0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x556 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDD2 JUMP JUMPDEST PUSH2 0x565 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0xE24 JUMP JUMPDEST PUSH2 0x574 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xD1C JUMP JUMPDEST PUSH2 0x5AC JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0xF00 JUMP JUMPDEST PUSH2 0x620 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x230 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x24B JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x260 SWAP1 PUSH2 0xF33 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x28C SWAP1 PUSH2 0xF33 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2AE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2D9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2BC JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EE DUP3 PUSH2 0x64E JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x315 DUP3 PUSH2 0x470 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x387 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3A3 JUMPI POP PUSH2 0x3A3 DUP2 CALLER PUSH2 0x620 JUMP JUMPDEST PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x37E JUMP JUMPDEST PUSH2 0x41F DUP4 DUP4 PUSH2 0x6B0 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x42E CALLER DUP3 PUSH2 0x71E JUMP JUMPDEST PUSH2 0x44A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37E SWAP1 PUSH2 0xF6D JUMP JUMPDEST PUSH2 0x41F DUP4 DUP4 DUP4 PUSH2 0x77D JUMP JUMPDEST PUSH2 0x41F DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x574 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x24B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x37E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x53A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x37E JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x260 SWAP1 PUSH2 0xF33 JUMP JUMPDEST PUSH2 0x570 CALLER DUP4 DUP4 PUSH2 0x919 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x57E CALLER DUP4 PUSH2 0x71E JUMP JUMPDEST PUSH2 0x59A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37E SWAP1 PUSH2 0xF6D JUMP JUMPDEST PUSH2 0x5A6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x9E7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5B7 DUP3 PUSH2 0x64E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5CE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x5EE JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x619 JUMP JUMPDEST DUP1 PUSH2 0x5F8 DUP5 PUSH2 0xA1A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x609 SWAP3 SWAP2 SWAP1 PUSH2 0xFBB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x37E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x6E5 DUP3 PUSH2 0x470 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x72A DUP4 PUSH2 0x470 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x751 JUMPI POP PUSH2 0x751 DUP2 DUP6 PUSH2 0x620 JUMP JUMPDEST DUP1 PUSH2 0x775 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x76A DUP5 PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x790 DUP3 PUSH2 0x470 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x7F4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x37E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x856 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x37E JUMP JUMPDEST PUSH2 0x861 PUSH1 0x0 DUP3 PUSH2 0x6B0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x88A SWAP1 DUP5 SWAP1 PUSH2 0x1000 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x8B8 SWAP1 DUP5 SWAP1 PUSH2 0x1013 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x97A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x37E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9F2 DUP5 DUP5 DUP5 PUSH2 0x77D JUMP JUMPDEST PUSH2 0x9FE DUP5 DUP5 DUP5 DUP5 PUSH2 0xAAD JUMP JUMPDEST PUSH2 0x5A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37E SWAP1 PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xA27 DUP4 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA47 JUMPI PUSH2 0xA47 PUSH2 0xE0E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA71 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xA7B JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xBA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xAF1 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB2C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB29 SWAP2 DUP2 ADD SWAP1 PUSH2 0x10B5 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB89 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xB5A 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 0xB5F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xB81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37E SWAP1 PUSH2 0x1026 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x775 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0xBED JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xC19 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xC37 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xC4F JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xC63 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xC75 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x24B JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x619 DUP2 PUSH2 0xC86 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCD4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCBC JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xCF5 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xCB9 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 0x619 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xCDD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xD64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6D DUP4 PUSH2 0xD35 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD99 DUP5 PUSH2 0xD35 JUMP JUMPDEST SWAP3 POP PUSH2 0xDA7 PUSH1 0x20 DUP6 ADD PUSH2 0xD35 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x619 DUP3 PUSH2 0xD35 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDEE DUP4 PUSH2 0xD35 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 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 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE43 DUP6 PUSH2 0xD35 JUMP JUMPDEST SWAP4 POP PUSH2 0xE51 PUSH1 0x20 DUP7 ADD PUSH2 0xD35 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE9B JUMPI PUSH2 0xE9B PUSH2 0xE0E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xEC3 JUMPI PUSH2 0xEC3 PUSH2 0xE0E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xEDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF1C DUP4 PUSH2 0xD35 JUMP JUMPDEST SWAP2 POP PUSH2 0xF2A PUSH1 0x20 DUP5 ADD PUSH2 0xD35 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF47 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xF67 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xFCD DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xCB9 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0xFE1 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xCB9 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x24B JUMPI PUSH2 0x24B PUSH2 0xFEA JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x24B JUMPI PUSH2 0x24B PUSH2 0xFEA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x10AB SWAP1 DUP4 ADD DUP5 PUSH2 0xCDD JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x619 DUP2 PUSH2 0xC86 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND PUSH21 0xCD2D0211EC57287D84192BEA6C92B3CD05C220BE82 MSTORE 0xF KECCAK256 ADD SWAP7 MSIZE 0xB5 CHAINID 0xCD PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ","sourceMap":"1382:13860:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:300;;;;;;:::i;:::-;;:::i;:::-;;;565:14:29;;558:22;540:41;;528:2;513:18;2417:300:26;;;;;;;;3317:98;;;:::i;:::-;;;;;;;:::i;4775:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:29;;;1679:51;;1667:2;1652:18;4775:167:26;1533:203:29;4314:400:26;;;;;;:::i;:::-;;:::i;:::-;;5452:327;;;;;;:::i;:::-;;:::i;5845:179::-;;;;;;:::i;:::-;;:::i;3037:218::-;;;;;;:::i;:::-;;:::i;2776:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:29;;;2836:2;2821:18;2776:204:26;2702:177:29;3479:102:26;;;:::i;5009:153::-;;;;;;:::i;:::-;;:::i;6090:315::-;;;;;;:::i;:::-;;:::i;3647:276::-;;;;;;:::i;:::-;;:::i;5228:162::-;;;;;;:::i;:::-;;:::i;2417:300::-;2519:4;-1:-1:-1;;;;;;2554:40:26;;-1:-1:-1;;;2554:40:26;;:104;;-1:-1:-1;;;;;;;2610:48:26;;-1:-1:-1;;;2610:48:26;2554:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:13;;;2674:36:26;2535:175;2417:300;-1:-1:-1;;2417:300:26:o;3317:98::-;3371:13;3403:5;3396:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3317:98;:::o;4775:167::-;4851:7;4870:23;4885:7;4870:14;:23::i;:::-;-1:-1:-1;4911:24:26;;;;:15;:24;;;;;;-1:-1:-1;;;;;4911:24:26;;4775:167::o;4314:400::-;4394:13;4410:16;4418:7;4410;:16::i;:::-;4394:32;;4450:5;-1:-1:-1;;;;;4444:11:26;:2;-1:-1:-1;;;;;4444:11:26;;4436:57;;;;-1:-1:-1;;;4436:57:26;;5363:2:29;4436:57:26;;;5345:21:29;5402:2;5382:18;;;5375:30;5441:34;5421:18;;;5414:62;-1:-1:-1;;;5492:18:29;;;5485:31;5533:19;;4436:57:26;;;;;;;;;719:10:11;-1:-1:-1;;;;;4525:21:26;;;;:62;;-1:-1:-1;4550:37:26;4567:5;719:10:11;5228:162:26;:::i;4550:37::-;4504:171;;;;-1:-1:-1;;;4504:171:26;;5765:2:29;4504:171:26;;;5747:21:29;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;5914:32;5894:18;;;5887:60;5964:19;;4504:171:26;5563:426:29;4504:171:26;4686:21;4695:2;4699:7;4686:8;:21::i;:::-;4384:330;4314:400;;:::o;5452:327::-;5641:41;719:10:11;5674:7:26;5641:18;:41::i;:::-;5633:100;;;;-1:-1:-1;;;5633:100:26;;;;;;;:::i;:::-;5744:28;5754:4;5760:2;5764:7;5744:9;:28::i;5845:179::-;5978:39;5995:4;6001:2;6005:7;5978:39;;;;;;;;;;;;:16;:39::i;3037:218::-;3109:7;3144:16;;;:7;:16;;;;;;-1:-1:-1;;;;;3144:16:26;;3170:56;;;;-1:-1:-1;;;3170:56:26;;6611:2:29;3170:56:26;;;6593:21:29;6650:2;6630:18;;;6623:30;-1:-1:-1;;;6669:18:29;;;6662:54;6733:18;;3170:56:26;6409:348:29;2776:204:26;2848:7;-1:-1:-1;;;;;2875:19:26;;2867:73;;;;-1:-1:-1;;;2867:73:26;;6964:2:29;2867:73:26;;;6946:21:29;7003:2;6983:18;;;6976:30;7042:34;7022:18;;;7015:62;-1:-1:-1;;;7093:18:29;;;7086:39;7142:19;;2867:73:26;6762:405:29;2867:73:26;-1:-1:-1;;;;;;2957:16:26;;;;;:9;:16;;;;;;;2776:204::o;3479:102::-;3535:13;3567:7;3560:14;;;;;:::i;5009:153::-;5103:52;719:10:11;5136:8:26;5146;5103:18;:52::i;:::-;5009:153;;:::o;6090:315::-;6258:41;719:10:11;6291:7:26;6258:18;:41::i;:::-;6250:100;;;;-1:-1:-1;;;6250:100:26;;;;;;;:::i;:::-;6360:38;6374:4;6380:2;6384:7;6393:4;6360:13;:38::i;:::-;6090:315;;;;:::o;3647:276::-;3720:13;3745:23;3760:7;3745:14;:23::i;:::-;3779:21;3803:10;4241:9;;;;;;;;;-1:-1:-1;4241:9:26;;;4165:92;3803:10;3779:34;;3854:1;3836:7;3830:21;:25;:86;;;;;;;;;;;;;;;;;3882:7;3891:18;:7;:16;:18::i;:::-;3865:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3830:86;3823:93;3647:276;-1:-1:-1;;;3647:276:26:o;5228:162::-;-1:-1:-1;;;;;5348:25:26;;;5325:4;5348:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;5228:162::o;12550:133::-;7939:4;7962:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7962:16:26;12623:53;;;;-1:-1:-1;;;12623:53:26;;6611:2:29;12623:53:26;;;6593:21:29;6650:2;6630:18;;;6623:30;-1:-1:-1;;;6669:18:29;;;6662:54;6733:18;;12623:53:26;6409:348:29;12623:53:26;12550:133;:::o;11859:164::-;11933:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11933:29:26;-1:-1:-1;;;;;11933:29:26;;;;;;;;:24;;11986:16;11933:24;11986:7;:16::i;:::-;-1:-1:-1;;;;;11977:39:26;;;;;;;;;;;11859:164;;:::o;8157:254::-;8250:4;8266:13;8282:16;8290:7;8282;:16::i;:::-;8266:32;;8327:5;-1:-1:-1;;;;;8316:16:26;:7;-1:-1:-1;;;;;8316:16:26;;:52;;;;8336:32;8353:5;8360:7;8336:16;:32::i;:::-;8316:87;;;;8396:7;-1:-1:-1;;;;;8372:31:26;:20;8384:7;8372:11;:20::i;:::-;-1:-1:-1;;;;;8372:31:26;;8316:87;8308:96;8157:254;-1:-1:-1;;;;8157:254:26:o;11149:598::-;11296:4;-1:-1:-1;;;;;11276:24:26;:16;11284:7;11276;:16::i;:::-;-1:-1:-1;;;;;11276:24:26;;11268:74;;;;-1:-1:-1;;;11268:74:26;;7875:2:29;11268:74:26;;;7857:21:29;7914:2;7894:18;;;7887:30;7953:34;7933:18;;;7926:62;-1:-1:-1;;;8004:18:29;;;7997:35;8049:19;;11268:74:26;7673:401:29;11268:74:26;-1:-1:-1;;;;;11360:16:26;;11352:65;;;;-1:-1:-1;;;11352:65:26;;8281:2:29;11352:65:26;;;8263:21:29;8320:2;8300:18;;;8293:30;8359:34;8339:18;;;8332:62;-1:-1:-1;;;8410:18:29;;;8403:34;8454:19;;11352:65:26;8079:400:29;11352:65:26;11529:29;11546:1;11550:7;11529:8;:29::i;:::-;-1:-1:-1;;;;;11569:15:26;;;;;;:9;:15;;;;;:20;;11588:1;;11569:15;:20;;11588:1;;11569:20;:::i;:::-;;;;-1:-1:-1;;;;;;;11599:13:26;;;;;;:9;:13;;;;;:18;;11616:1;;11599:13;:18;;11616:1;;11599:18;:::i;:::-;;;;-1:-1:-1;;11627:16:26;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;11627:21:26;-1:-1:-1;;;;;11627:21:26;;;;;;;;;11664:27;;11627:16;;11664:27;;;;;;;4384:330;4314:400;;:::o;12159:307::-;12309:8;-1:-1:-1;;;;;12300:17:26;:5;-1:-1:-1;;;;;12300:17:26;;12292:55;;;;-1:-1:-1;;;12292:55:26;;9081:2:29;12292:55:26;;;9063:21:29;9120:2;9100:18;;;9093:30;9159:27;9139:18;;;9132:55;9204:18;;12292:55:26;8879:349:29;12292:55:26;-1:-1:-1;;;;;12357:25:26;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;12357:46:26;;;;;;;;;;12418:41;;540::29;;;12418::26;;513:18:29;12418:41:26;;;;;;;12159:307;;;:::o;7266:305::-;7416:28;7426:4;7432:2;7436:7;7416:9;:28::i;:::-;7462:47;7485:4;7491:2;7495:7;7504:4;7462:22;:47::i;:::-;7454:110;;;;-1:-1:-1;;;7454:110:26;;;;;;;:::i;447:696:12:-;503:13;552:14;569:17;580:5;569:10;:17::i;:::-;589:1;569:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;627:18:12;-1:-1:-1;604:41:12;-1:-1:-1;765:28:12;;;781:2;765:28;820:280;-1:-1:-1;;851:5:12;-1:-1:-1;;;985:2:12;974:14;;969:30;851:5;956:44;1044:2;1035:11;;;-1:-1:-1;1064:21:12;820:280;1064:21;-1:-1:-1;1120:6:12;447:696;-1:-1:-1;;;447:696:12:o;13235:834:26:-;13384:4;-1:-1:-1;;;;;13404:14:26;;;:18;13400:663;;13442:71;;-1:-1:-1;;;13442:71:26;;-1:-1:-1;;;;;13442:36:26;;;;;:71;;719:10:11;;13493:4:26;;13499:7;;13508:4;;13442:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13442:71:26;;;;;;;;-1:-1:-1;;13442:71:26;;;;;;;;;;;;:::i;:::-;;;13438:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13680:6;:13;13697:1;13680:18;13676:321;;13722:60;;-1:-1:-1;;;13722:60:26;;;;;;;:::i;13676:321::-;13949:6;13943:13;13934:6;13930:2;13926:15;13919:38;13438:573;-1:-1:-1;;;;;;13563:51:26;-1:-1:-1;;;13563:51:26;;-1:-1:-1;13556:58:26;;13400:663;-1:-1:-1;14048:4:26;13235:834;;;;;;:::o;10139:916:15:-;10192:7;;-1:-1:-1;;;10267:17:15;;10263:103;;-1:-1:-1;;;10304:17:15;;;-1:-1:-1;10349:2:15;10339:12;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;-1:-1:-1;10465:2:15;10455:12;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;-1:-1:-1;10581:2:15;10571:12;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;-1:-1:-1;10695:1:15;10685:11;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;-1:-1:-1;10808:1:15;10798:11;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;-1:-1:-1;10921:1:15;10911:11;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;11042:6;10139:916;-1:-1:-1;;10139:916:15:o;14:131:29:-;-1:-1:-1;;;;;;88:32:29;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:29;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:29;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:29:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:29;;1348:180;-1:-1:-1;1348:180:29:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:29;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:29:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:29;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;5994:410::-;6196:2;6178:21;;;6235:2;6215:18;;;6208:30;6274:34;6269:2;6254:18;;6247:62;-1:-1:-1;;;6340:2:29;6325:18;;6318:44;6394:3;6379:19;;5994:410::o;7172:496::-;7351:3;7389:6;7383:13;7405:66;7464:6;7459:3;7452:4;7444:6;7440:17;7405:66;:::i;:::-;7534:13;;7493:16;;;;7556:70;7534:13;7493:16;7603:4;7591:17;;7556:70;:::i;:::-;7642:20;;7172:496;-1:-1:-1;;;;7172:496:29:o;8484:127::-;8545:10;8540:3;8536:20;8533:1;8526:31;8576:4;8573:1;8566:15;8600:4;8597:1;8590:15;8616:128;8683:9;;;8704:11;;;8701:37;;;8718:18;;:::i;8749:125::-;8814:9;;;8835:10;;;8832:36;;;8848:18;;:::i;9233:414::-;9435:2;9417:21;;;9474:2;9454:18;;;9447:30;9513:34;9508:2;9493:18;;9486:62;-1:-1:-1;;;9579:2:29;9564:18;;9557:48;9637:3;9622:19;;9233:414::o;9784:489::-;-1:-1:-1;;;;;10053:15:29;;;10035:34;;10105:15;;10100:2;10085:18;;10078:43;10152:2;10137:18;;10130:34;;;10200:3;10195:2;10180:18;;10173:31;;;9978:4;;10221:46;;10247:19;;10239:6;10221:46;:::i;:::-;10213:54;9784:489;-1:-1:-1;;;;;;9784:489:29:o;10278:249::-;10347:6;10400:2;10388:9;10379:7;10375:23;10371:32;10368:52;;;10416:1;10413;10406:12;10368:52;10448:9;10442:16;10467:30;10491:5;10467:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"872000","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2634","getApproved(uint256)":"4769","isApprovedForAll(address,address)":"infinite","name()":"infinite","ownerOf(uint256)":"2561","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26705","supportsInterface(bytes4)":"511","symbol()":"infinite","tokenURI(uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,uint256)":"infinite","_approve(address,uint256)":"infinite","_baseURI()":"infinite","_beforeTokenTransfer(address,address,uint256)":"infinite","_burn(uint256)":"infinite","_checkOnERC721Received(address,address,uint256,bytes memory)":"infinite","_exists(uint256)":"infinite","_isApprovedOrOwner(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_requireMinted(uint256)":"infinite","_safeMint(address,uint256)":"infinite","_safeMint(address,uint256,bytes memory)":"infinite","_safeTransfer(address,address,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}. NOTE: The only changes made here are: - change scope of \\\"_owners\\\" from private to internal - change scope of \\\"_balances\\\" from private to internal - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\" - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"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 v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/lib/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n *\\n * NOTE:\\n * The only changes made here are:\\n * - change scope of \\\"_owners\\\" from private to internal\\n * - change scope of \\\"_balances\\\" from private to internal\\n * - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\"\\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) internal _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) internal _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _owners[tokenId];\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _owners[tokenId] != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId);\\n\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n // Clear approvals\\n _approve(address(0), tokenId);\\n\\n _balances[owner] -= 1;\\n // Prevent re-assigning the token back to the Pre-Mint Receiver\\n _owners[tokenId] = _NULL_ADDRESS;\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.code.length > 0) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n * transferred to `to`.\\n * - When `from` is zero, `tokenId` will be minted for `to`.\\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x726960336df673d5fd509dde21ba3bed24645291d201f74762b945fe4d5aa016\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":4685,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":4687,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":4691,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":4695,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":4699,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":4705,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/mock/ERC20Mock.sol":{"ERC20Mock":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_212":{"entryPoint":null,"id":212,"parameterSlots":2,"returnSlots":0},"@_23":{"entryPoint":null,"id":23,"parameterSlots":0,"returnSlots":0},"@_5542":{"entryPoint":null,"id":5542,"parameterSlots":0,"returnSlots":0},"@_msgSender_2287":{"entryPoint":145,"id":2287,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_111":{"entryPoint":149,"id":111,"parameterSlots":1,"returnSlots":0},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":313,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":396,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":253,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":231,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2732:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:29"},"nodeType":"YulFunctionCall","src":"66:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:29"},"nodeType":"YulFunctionCall","src":"56:31:29"},"nodeType":"YulExpressionStatement","src":"56:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:29","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:29"},"nodeType":"YulFunctionCall","src":"96:15:29"},"nodeType":"YulExpressionStatement","src":"96:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:29"},"nodeType":"YulFunctionCall","src":"120:15:29"},"nodeType":"YulExpressionStatement","src":"120:15:29"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:29"},{"body":{"nodeType":"YulBlock","src":"201:325:29","statements":[{"nodeType":"YulAssignment","src":"211:22:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"225:1:29","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"228:4:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"221:3:29"},"nodeType":"YulFunctionCall","src":"221:12:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"211:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"242:38:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"272:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"278:1:29","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"268:3:29"},"nodeType":"YulFunctionCall","src":"268:12:29"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"246:18:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"319:31:29","statements":[{"nodeType":"YulAssignment","src":"321:27:29","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"335:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"343:4:29","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"331:3:29"},"nodeType":"YulFunctionCall","src":"331:17:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"321:6:29"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"299:18:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"292:6:29"},"nodeType":"YulFunctionCall","src":"292:26:29"},"nodeType":"YulIf","src":"289:61:29"},{"body":{"nodeType":"YulBlock","src":"409:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"430:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"437:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"442:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"433:3:29"},"nodeType":"YulFunctionCall","src":"433:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"423:6:29"},"nodeType":"YulFunctionCall","src":"423:31:29"},"nodeType":"YulExpressionStatement","src":"423:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"474:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"477:4:29","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"467:6:29"},"nodeType":"YulFunctionCall","src":"467:15:29"},"nodeType":"YulExpressionStatement","src":"467:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"502:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"505:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"495:6:29"},"nodeType":"YulFunctionCall","src":"495:15:29"},"nodeType":"YulExpressionStatement","src":"495:15:29"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"365:18:29"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"388:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"396:2:29","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"385:2:29"},"nodeType":"YulFunctionCall","src":"385:14:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"362:2:29"},"nodeType":"YulFunctionCall","src":"362:38:29"},"nodeType":"YulIf","src":"359:161:29"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"181:4:29","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"190:6:29","type":""}],"src":"146:380:29"},{"body":{"nodeType":"YulBlock","src":"587:65:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"604:1:29","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"607:3:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"597:6:29"},"nodeType":"YulFunctionCall","src":"597:14:29"},"nodeType":"YulExpressionStatement","src":"597:14:29"},{"nodeType":"YulAssignment","src":"620:26:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"638:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"641:4:29","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"628:9:29"},"nodeType":"YulFunctionCall","src":"628:18:29"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"620:4:29"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"570:3:29","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"578:4:29","type":""}],"src":"531:121:29"},{"body":{"nodeType":"YulBlock","src":"738:464:29","statements":[{"body":{"nodeType":"YulBlock","src":"771:425:29","statements":[{"nodeType":"YulVariableDeclaration","src":"785:11:29","value":{"kind":"number","nodeType":"YulLiteral","src":"795:1:29","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"789:2:29","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"816:2:29"},{"name":"array","nodeType":"YulIdentifier","src":"820:5:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:29"},"nodeType":"YulFunctionCall","src":"809:17:29"},"nodeType":"YulExpressionStatement","src":"809:17:29"},{"nodeType":"YulVariableDeclaration","src":"839:31:29","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"861:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"865:4:29","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"851:9:29"},"nodeType":"YulFunctionCall","src":"851:19:29"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"843:4:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"883:57:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"906:4:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"916:1:29","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"923:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"935:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"919:3:29"},"nodeType":"YulFunctionCall","src":"919:19:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"912:3:29"},"nodeType":"YulFunctionCall","src":"912:27:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"902:3:29"},"nodeType":"YulFunctionCall","src":"902:38:29"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"887:11:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"977:23:29","statements":[{"nodeType":"YulAssignment","src":"979:19:29","value":{"name":"data","nodeType":"YulIdentifier","src":"994:4:29"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"979:11:29"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"959:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"971:4:29","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"956:2:29"},"nodeType":"YulFunctionCall","src":"956:20:29"},"nodeType":"YulIf","src":"953:47:29"},{"nodeType":"YulVariableDeclaration","src":"1013:41:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1027:4:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1037:1:29","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"1044:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"1049:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1040:3:29"},"nodeType":"YulFunctionCall","src":"1040:12:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1033:3:29"},"nodeType":"YulFunctionCall","src":"1033:20:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1023:3:29"},"nodeType":"YulFunctionCall","src":"1023:31:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1017:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1067:24:29","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"1080:11:29"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"1071:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1165:21:29","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"1174:5:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1181:2:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"1167:6:29"},"nodeType":"YulFunctionCall","src":"1167:17:29"},"nodeType":"YulExpressionStatement","src":"1167:17:29"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"1115:5:29"},{"name":"_2","nodeType":"YulIdentifier","src":"1122:2:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1112:2:29"},"nodeType":"YulFunctionCall","src":"1112:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1126:26:29","statements":[{"nodeType":"YulAssignment","src":"1128:22:29","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"1141:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"1148:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1137:3:29"},"nodeType":"YulFunctionCall","src":"1137:13:29"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"1128:5:29"}]}]},"pre":{"nodeType":"YulBlock","src":"1108:3:29","statements":[]},"src":"1104:82:29"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"754:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"759:2:29","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"751:2:29"},"nodeType":"YulFunctionCall","src":"751:11:29"},"nodeType":"YulIf","src":"748:448:29"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"710:5:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"717:3:29","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"722:10:29","type":""}],"src":"657:545:29"},{"body":{"nodeType":"YulBlock","src":"1292:81:29","statements":[{"nodeType":"YulAssignment","src":"1302:65:29","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1317:4:29"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1335:1:29","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"1338:3:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1331:3:29"},"nodeType":"YulFunctionCall","src":"1331:11:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1348:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1344:3:29"},"nodeType":"YulFunctionCall","src":"1344:6:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1327:3:29"},"nodeType":"YulFunctionCall","src":"1327:24:29"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1323:3:29"},"nodeType":"YulFunctionCall","src":"1323:29:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1313:3:29"},"nodeType":"YulFunctionCall","src":"1313:40:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1359:1:29","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"1362:3:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1355:3:29"},"nodeType":"YulFunctionCall","src":"1355:11:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1310:2:29"},"nodeType":"YulFunctionCall","src":"1310:57:29"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"1302:4:29"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1269:4:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"1275:3:29","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"1283:4:29","type":""}],"src":"1207:166:29"},{"body":{"nodeType":"YulBlock","src":"1474:1256:29","statements":[{"nodeType":"YulVariableDeclaration","src":"1484:24:29","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1504:3:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1498:5:29"},"nodeType":"YulFunctionCall","src":"1498:10:29"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"1488:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1551:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1553:16:29"},"nodeType":"YulFunctionCall","src":"1553:18:29"},"nodeType":"YulExpressionStatement","src":"1553:18:29"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"1523:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1539:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1543:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1535:3:29"},"nodeType":"YulFunctionCall","src":"1535:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"1547:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1531:3:29"},"nodeType":"YulFunctionCall","src":"1531:18:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1520:2:29"},"nodeType":"YulFunctionCall","src":"1520:30:29"},"nodeType":"YulIf","src":"1517:56:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"1626:4:29"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"1664:4:29"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"1658:5:29"},"nodeType":"YulFunctionCall","src":"1658:11:29"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"1632:25:29"},"nodeType":"YulFunctionCall","src":"1632:38:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"1672:6:29"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"1582:43:29"},"nodeType":"YulFunctionCall","src":"1582:97:29"},"nodeType":"YulExpressionStatement","src":"1582:97:29"},{"nodeType":"YulVariableDeclaration","src":"1688:18:29","value":{"kind":"number","nodeType":"YulLiteral","src":"1705:1:29","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"1692:9:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1715:23:29","value":{"kind":"number","nodeType":"YulLiteral","src":"1734:4:29","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"1719:11:29","type":""}]},{"nodeType":"YulAssignment","src":"1747:24:29","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"1760:11:29"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"1747:9:29"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"1817:656:29","statements":[{"nodeType":"YulVariableDeclaration","src":"1831:35:29","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"1850:6:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1862:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1858:3:29"},"nodeType":"YulFunctionCall","src":"1858:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1846:3:29"},"nodeType":"YulFunctionCall","src":"1846:20:29"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"1835:7:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1879:49:29","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"1923:4:29"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"1893:29:29"},"nodeType":"YulFunctionCall","src":"1893:35:29"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"1883:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1941:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"1950:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1945:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2028:172:29","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"2053:6:29"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2071:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"2076:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2067:3:29"},"nodeType":"YulFunctionCall","src":"2067:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2061:5:29"},"nodeType":"YulFunctionCall","src":"2061:26:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2046:6:29"},"nodeType":"YulFunctionCall","src":"2046:42:29"},"nodeType":"YulExpressionStatement","src":"2046:42:29"},{"nodeType":"YulAssignment","src":"2105:24:29","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"2119:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"2127:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2115:3:29"},"nodeType":"YulFunctionCall","src":"2115:14:29"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"2105:6:29"}]},{"nodeType":"YulAssignment","src":"2146:40:29","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"2163:9:29"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"2174:11:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2159:3:29"},"nodeType":"YulFunctionCall","src":"2159:27:29"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"2146:9:29"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1975:1:29"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"1978:7:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1972:2:29"},"nodeType":"YulFunctionCall","src":"1972:14:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1987:28:29","statements":[{"nodeType":"YulAssignment","src":"1989:24:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1998:1:29"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"2001:11:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1994:3:29"},"nodeType":"YulFunctionCall","src":"1994:19:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1989:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"1968:3:29","statements":[]},"src":"1964:236:29"},{"body":{"nodeType":"YulBlock","src":"2248:166:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2266:43:29","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2293:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"2298:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2289:3:29"},"nodeType":"YulFunctionCall","src":"2289:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2283:5:29"},"nodeType":"YulFunctionCall","src":"2283:26:29"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"2270:9:29","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"2333:6:29"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"2345:9:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2372:1:29","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"2375:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2368:3:29"},"nodeType":"YulFunctionCall","src":"2368:14:29"},{"kind":"number","nodeType":"YulLiteral","src":"2384:3:29","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2364:3:29"},"nodeType":"YulFunctionCall","src":"2364:24:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2394:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2390:3:29"},"nodeType":"YulFunctionCall","src":"2390:6:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2360:3:29"},"nodeType":"YulFunctionCall","src":"2360:37:29"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2356:3:29"},"nodeType":"YulFunctionCall","src":"2356:42:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2341:3:29"},"nodeType":"YulFunctionCall","src":"2341:58:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2326:6:29"},"nodeType":"YulFunctionCall","src":"2326:74:29"},"nodeType":"YulExpressionStatement","src":"2326:74:29"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"2219:7:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"2228:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2216:2:29"},"nodeType":"YulFunctionCall","src":"2216:19:29"},"nodeType":"YulIf","src":"2213:201:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2434:4:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2448:1:29","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"2451:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2444:3:29"},"nodeType":"YulFunctionCall","src":"2444:14:29"},{"kind":"number","nodeType":"YulLiteral","src":"2460:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2440:3:29"},"nodeType":"YulFunctionCall","src":"2440:22:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2427:6:29"},"nodeType":"YulFunctionCall","src":"2427:36:29"},"nodeType":"YulExpressionStatement","src":"2427:36:29"}]},"nodeType":"YulCase","src":"1810:663:29","value":{"kind":"number","nodeType":"YulLiteral","src":"1815:1:29","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"2490:234:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2504:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"2517:1:29","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2508:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2553:67:29","statements":[{"nodeType":"YulAssignment","src":"2571:35:29","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2590:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"2595:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2586:3:29"},"nodeType":"YulFunctionCall","src":"2586:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2580:5:29"},"nodeType":"YulFunctionCall","src":"2580:26:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2571:5:29"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"2534:6:29"},"nodeType":"YulIf","src":"2531:89:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"2640:4:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2699:5:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"2706:6:29"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"2646:52:29"},"nodeType":"YulFunctionCall","src":"2646:67:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2633:6:29"},"nodeType":"YulFunctionCall","src":"2633:81:29"},"nodeType":"YulExpressionStatement","src":"2633:81:29"}]},"nodeType":"YulCase","src":"2482:242:29","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"1790:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1798:2:29","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1787:2:29"},"nodeType":"YulFunctionCall","src":"1787:14:29"},"nodeType":"YulSwitch","src":"1780:944:29"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"1459:4:29","type":""},{"name":"src","nodeType":"YulTypedName","src":"1465:3:29","type":""}],"src":"1378:1352:29"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506040518060400160405280600781526020016626bcaa37b5b2b760c91b815250604051806040016040528060038152602001624d544b60e81b81525081600390816200005f91906200018c565b5060046200006e82826200018c565b5050506200008b620000856200009160201b60201c565b62000095565b62000258565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200011257607f821691505b6020821081036200013357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200018757600081815260208120601f850160051c81016020861015620001625750805b601f850160051c820191505b8181101562000183578281556001016200016e565b5050505b505050565b81516001600160401b03811115620001a857620001a8620000e7565b620001c081620001b98454620000fd565b8462000139565b602080601f831160018114620001f85760008415620001df5750858301515b600019600386901b1c1916600185901b17855562000183565b600085815260208120601f198616915b82811015620002295788860151825594840194600190910190840162000208565b5085821015620002485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610af780620002686000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146101eb578063a9059cbb146101fe578063dd62ed3e14610211578063f2fde38b1461022457600080fd5b806370a0823114610197578063715018a6146101c05780638da5cb5b146101c857806395d89b41146101e357600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610237565b60405161010f9190610941565b60405180910390f35b61012b6101263660046109ab565b6102c9565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046109d5565b6102e3565b6040516012815260200161010f565b61012b61017d3660046109ab565b610307565b6101956101903660046109ab565b610329565b005b61013f6101a5366004610a11565b6001600160a01b031660009081526020819052604090205490565b61019561033f565b6005546040516001600160a01b03909116815260200161010f565b610102610353565b61012b6101f93660046109ab565b610362565b61012b61020c3660046109ab565b6103e2565b61013f61021f366004610a33565b6103f0565b610195610232366004610a11565b61041b565b60606003805461024690610a66565b80601f016020809104026020016040519081016040528092919081815260200182805461027290610a66565b80156102bf5780601f10610294576101008083540402835291602001916102bf565b820191906000526020600020905b8154815290600101906020018083116102a257829003601f168201915b5050505050905090565b6000336102d7818585610494565b60019150505b92915050565b6000336102f18582856105b8565b6102fc858585610632565b506001949350505050565b6000336102d781858561031a83836103f0565b6103249190610aa0565b610494565b6103316107d6565b61033b8282610830565b5050565b6103476107d6565b61035160006108ef565b565b60606004805461024690610a66565b6000338161037082866103f0565b9050838110156103d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102fc8286868403610494565b6000336102d7818585610632565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6104236107d6565b6001600160a01b0381166104885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103cc565b610491816108ef565b50565b6001600160a01b0383166104f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103cc565b6001600160a01b0382166105575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103cc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105c484846103f0565b9050600019811461062c578181101561061f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103cc565b61062c8484848403610494565b50505050565b6001600160a01b0383166106965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103cc565b6001600160a01b0382166106f85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103cc565b6001600160a01b038316600090815260208190526040902054818110156107705760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103cc565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361062c565b6005546001600160a01b031633146103515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103cc565b6001600160a01b0382166108865760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103cc565b80600260008282546108989190610aa0565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b8181101561096e57858101830151858201604001528201610952565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109a657600080fd5b919050565b600080604083850312156109be57600080fd5b6109c78361098f565b946020939093013593505050565b6000806000606084860312156109ea57600080fd5b6109f38461098f565b9250610a016020850161098f565b9150604084013590509250925092565b600060208284031215610a2357600080fd5b610a2c8261098f565b9392505050565b60008060408385031215610a4657600080fd5b610a4f8361098f565b9150610a5d6020840161098f565b90509250929050565b600181811c90821680610a7a57607f821691505b602082108103610a9a57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102dd57634e487b7160e01b600052601160045260246000fdfea2646970667358221220889bb01021338347fbd014f1d8b8afd0061d23c24ee81250aabfa8831b7fa56264736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH7 0x26BCAA37B5B2B7 PUSH1 0xC9 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x4D544B PUSH1 0xE8 SHL DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0x5F SWAP2 SWAP1 PUSH3 0x18C JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x6E DUP3 DUP3 PUSH3 0x18C JUMP JUMPDEST POP POP POP PUSH3 0x8B PUSH3 0x85 PUSH3 0x91 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x95 JUMP JUMPDEST PUSH3 0x258 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x112 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x133 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x187 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x162 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x183 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x16E JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x1A8 JUMPI PUSH3 0x1A8 PUSH3 0xE7 JUMP JUMPDEST PUSH3 0x1C0 DUP2 PUSH3 0x1B9 DUP5 SLOAD PUSH3 0xFD JUMP JUMPDEST DUP5 PUSH3 0x139 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x1F8 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x1DF JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x183 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x229 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x208 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x248 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0xAF7 DUP1 PUSH3 0x268 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x13B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0x237 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x941 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x2C9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x12B PUSH2 0x15B CALLDATASIZE PUSH1 0x4 PUSH2 0x9D5 JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x12B PUSH2 0x17D CALLDATASIZE PUSH1 0x4 PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x307 JUMP JUMPDEST PUSH2 0x195 PUSH2 0x190 CALLDATASIZE PUSH1 0x4 PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x329 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0xA11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x195 PUSH2 0x33F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x102 PUSH2 0x353 JUMP JUMPDEST PUSH2 0x12B PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST PUSH2 0x12B PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x21F CALLDATASIZE PUSH1 0x4 PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x195 PUSH2 0x232 CALLDATASIZE PUSH1 0x4 PUSH2 0xA11 JUMP JUMPDEST PUSH2 0x41B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x246 SWAP1 PUSH2 0xA66 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x272 SWAP1 PUSH2 0xA66 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2BF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x294 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2BF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2A2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2D7 DUP2 DUP6 DUP6 PUSH2 0x494 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F1 DUP6 DUP3 DUP6 PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x2FC DUP6 DUP6 DUP6 PUSH2 0x632 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2D7 DUP2 DUP6 DUP6 PUSH2 0x31A DUP4 DUP4 PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x324 SWAP2 SWAP1 PUSH2 0xAA0 JUMP JUMPDEST PUSH2 0x494 JUMP JUMPDEST PUSH2 0x331 PUSH2 0x7D6 JUMP JUMPDEST PUSH2 0x33B DUP3 DUP3 PUSH2 0x830 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x347 PUSH2 0x7D6 JUMP JUMPDEST PUSH2 0x351 PUSH1 0x0 PUSH2 0x8EF JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x246 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x370 DUP3 DUP7 PUSH2 0x3F0 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2FC DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x494 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2D7 DUP2 DUP6 DUP6 PUSH2 0x632 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x488 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH2 0x491 DUP2 PUSH2 0x8EF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x4F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x557 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C4 DUP5 DUP5 PUSH2 0x3F0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 NOT DUP2 EQ PUSH2 0x62C JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH2 0x62C DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x494 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x696 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x6F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x770 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x62C JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x351 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x886 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CC JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x898 SWAP2 SWAP1 PUSH2 0xAA0 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x96E JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x952 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C7 DUP4 PUSH2 0x98F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F3 DUP5 PUSH2 0x98F JUMP JUMPDEST SWAP3 POP PUSH2 0xA01 PUSH1 0x20 DUP6 ADD PUSH2 0x98F JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA2C DUP3 PUSH2 0x98F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA4F DUP4 PUSH2 0x98F JUMP JUMPDEST SWAP2 POP PUSH2 0xA5D PUSH1 0x20 DUP5 ADD PUSH2 0x98F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xA7A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xA9A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2DD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 SWAP12 0xB0 LT 0x21 CALLER DUP4 SELFBALANCE 0xFB 0xD0 EQ CALL 0xD8 0xB8 0xAF 0xD0 MOD SAR 0x23 0xC2 0x4E 0xE8 SLT POP 0xAA 0xBF 0xA8 DUP4 SHL PUSH32 0xA56264736F6C6343000811003300000000000000000000000000000000000000 ","sourceMap":"168:214:27:-:0;;;211:70;;;;;;;;;;1980:113:3;;;;;;;;;;;;;-1:-1:-1;;;1980:113:3;;;;;;;;;;;;;;;;-1:-1:-1;;;1980:113:3;;;2054:5;2046;:13;;;;;;:::i;:::-;-1:-1:-1;2069:7:3;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;936:32:0;955:12;:10;;;:12;;:::i;:::-;936:18;:32::i;:::-;168:214:27;;640:96:11;719:10;;640:96::o;2426:187:0:-;2518:6;;;-1:-1:-1;;;;;2534:17:0;;;-1:-1:-1;;;;;;2534:17:0;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;14:127:29:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:29;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:29;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:29;;;2580:26;2531:89;-1:-1:-1;;1335:1:29;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:29;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:29;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:29;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:29:o;:::-;168:214:27;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_753":{"entryPoint":null,"id":753,"parameterSlots":3,"returnSlots":0},"@_approve_688":{"entryPoint":1172,"id":688,"parameterSlots":3,"returnSlots":0},"@_beforeTokenTransfer_742":{"entryPoint":null,"id":742,"parameterSlots":3,"returnSlots":0},"@_checkOwner_54":{"entryPoint":2006,"id":54,"parameterSlots":0,"returnSlots":0},"@_mint_571":{"entryPoint":2096,"id":571,"parameterSlots":2,"returnSlots":0},"@_msgSender_2287":{"entryPoint":null,"id":2287,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_731":{"entryPoint":1464,"id":731,"parameterSlots":3,"returnSlots":0},"@_transferOwnership_111":{"entryPoint":2287,"id":111,"parameterSlots":1,"returnSlots":0},"@_transfer_514":{"entryPoint":1586,"id":514,"parameterSlots":3,"returnSlots":0},"@allowance_309":{"entryPoint":1008,"id":309,"parameterSlots":2,"returnSlots":1},"@approve_334":{"entryPoint":713,"id":334,"parameterSlots":2,"returnSlots":1},"@balanceOf_266":{"entryPoint":null,"id":266,"parameterSlots":1,"returnSlots":1},"@decimals_242":{"entryPoint":null,"id":242,"parameterSlots":0,"returnSlots":1},"@decreaseAllowance_437":{"entryPoint":866,"id":437,"parameterSlots":2,"returnSlots":1},"@increaseAllowance_396":{"entryPoint":775,"id":396,"parameterSlots":2,"returnSlots":1},"@mint_5557":{"entryPoint":809,"id":5557,"parameterSlots":2,"returnSlots":0},"@name_222":{"entryPoint":567,"id":222,"parameterSlots":0,"returnSlots":1},"@owner_40":{"entryPoint":null,"id":40,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_68":{"entryPoint":831,"id":68,"parameterSlots":0,"returnSlots":0},"@symbol_232":{"entryPoint":851,"id":232,"parameterSlots":0,"returnSlots":1},"@totalSupply_252":{"entryPoint":null,"id":252,"parameterSlots":0,"returnSlots":1},"@transferFrom_367":{"entryPoint":739,"id":367,"parameterSlots":3,"returnSlots":1},"@transferOwnership_91":{"entryPoint":1051,"id":91,"parameterSlots":1,"returnSlots":0},"@transfer_291":{"entryPoint":994,"id":291,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":2447,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2577,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":2611,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":2517,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2475,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"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_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2369,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__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_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2720,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":2662,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7090:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"135:427:29","statements":[{"nodeType":"YulVariableDeclaration","src":"145:12:29","value":{"kind":"number","nodeType":"YulLiteral","src":"155:2:29","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"149:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"173:9:29"},{"name":"_1","nodeType":"YulIdentifier","src":"184:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"166:6:29"},"nodeType":"YulFunctionCall","src":"166:21:29"},"nodeType":"YulExpressionStatement","src":"166:21:29"},{"nodeType":"YulVariableDeclaration","src":"196:27:29","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"216:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"210:5:29"},"nodeType":"YulFunctionCall","src":"210:13:29"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"200:6:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"243:9:29"},{"name":"_1","nodeType":"YulIdentifier","src":"254:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"239:3:29"},"nodeType":"YulFunctionCall","src":"239:18:29"},{"name":"length","nodeType":"YulIdentifier","src":"259:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"232:6:29"},"nodeType":"YulFunctionCall","src":"232:34:29"},"nodeType":"YulExpressionStatement","src":"232:34:29"},{"nodeType":"YulVariableDeclaration","src":"275:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"284:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"279:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"344:90:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"373:9:29"},{"name":"i","nodeType":"YulIdentifier","src":"384:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"369:3:29"},"nodeType":"YulFunctionCall","src":"369:17:29"},{"kind":"number","nodeType":"YulLiteral","src":"388:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"365:3:29"},"nodeType":"YulFunctionCall","src":"365:26:29"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"407:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"415:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"403:3:29"},"nodeType":"YulFunctionCall","src":"403:14:29"},{"name":"_1","nodeType":"YulIdentifier","src":"419:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"399:3:29"},"nodeType":"YulFunctionCall","src":"399:23:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"393:5:29"},"nodeType":"YulFunctionCall","src":"393:30:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"358:6:29"},"nodeType":"YulFunctionCall","src":"358:66:29"},"nodeType":"YulExpressionStatement","src":"358:66:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"305:1:29"},{"name":"length","nodeType":"YulIdentifier","src":"308:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"302:2:29"},"nodeType":"YulFunctionCall","src":"302:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"316:19:29","statements":[{"nodeType":"YulAssignment","src":"318:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"327:1:29"},{"name":"_1","nodeType":"YulIdentifier","src":"330:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"323:3:29"},"nodeType":"YulFunctionCall","src":"323:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"318:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"298:3:29","statements":[]},"src":"294:140:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"458:9:29"},{"name":"length","nodeType":"YulIdentifier","src":"469:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"454:3:29"},"nodeType":"YulFunctionCall","src":"454:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"478:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"450:3:29"},"nodeType":"YulFunctionCall","src":"450:31:29"},{"kind":"number","nodeType":"YulLiteral","src":"483:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"443:6:29"},"nodeType":"YulFunctionCall","src":"443:42:29"},"nodeType":"YulExpressionStatement","src":"443:42:29"},{"nodeType":"YulAssignment","src":"494:62:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"510:9:29"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"529:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"537:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"525:3:29"},"nodeType":"YulFunctionCall","src":"525:15:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"546:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"542:3:29"},"nodeType":"YulFunctionCall","src":"542:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"521:3:29"},"nodeType":"YulFunctionCall","src":"521:29:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"506:3:29"},"nodeType":"YulFunctionCall","src":"506:45:29"},{"kind":"number","nodeType":"YulLiteral","src":"553:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"502:3:29"},"nodeType":"YulFunctionCall","src":"502:54:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"494:4:29"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"104:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"115:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"126:4:29","type":""}],"src":"14:548:29"},{"body":{"nodeType":"YulBlock","src":"616:124:29","statements":[{"nodeType":"YulAssignment","src":"626:29:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"648:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"635:12:29"},"nodeType":"YulFunctionCall","src":"635:20:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"626:5:29"}]},{"body":{"nodeType":"YulBlock","src":"718:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"727:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"730:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"720:6:29"},"nodeType":"YulFunctionCall","src":"720:12:29"},"nodeType":"YulExpressionStatement","src":"720:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"677:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"688:5:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"703:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"708:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"699:3:29"},"nodeType":"YulFunctionCall","src":"699:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"712:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"695:3:29"},"nodeType":"YulFunctionCall","src":"695:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"684:3:29"},"nodeType":"YulFunctionCall","src":"684:31:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"674:2:29"},"nodeType":"YulFunctionCall","src":"674:42:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"667:6:29"},"nodeType":"YulFunctionCall","src":"667:50:29"},"nodeType":"YulIf","src":"664:70:29"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"595:6:29","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"606:5:29","type":""}],"src":"567:173:29"},{"body":{"nodeType":"YulBlock","src":"832:167:29","statements":[{"body":{"nodeType":"YulBlock","src":"878:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"887:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"890:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"880:6:29"},"nodeType":"YulFunctionCall","src":"880:12:29"},"nodeType":"YulExpressionStatement","src":"880:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"853:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"862:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"849:3:29"},"nodeType":"YulFunctionCall","src":"849:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"874:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"845:3:29"},"nodeType":"YulFunctionCall","src":"845:32:29"},"nodeType":"YulIf","src":"842:52:29"},{"nodeType":"YulAssignment","src":"903:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"932:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"913:18:29"},"nodeType":"YulFunctionCall","src":"913:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"903:6:29"}]},{"nodeType":"YulAssignment","src":"951:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"978:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"989:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"974:3:29"},"nodeType":"YulFunctionCall","src":"974:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"961:12:29"},"nodeType":"YulFunctionCall","src":"961:32:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"951:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"790:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"801:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"813:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"821:6:29","type":""}],"src":"745:254:29"},{"body":{"nodeType":"YulBlock","src":"1099:92:29","statements":[{"nodeType":"YulAssignment","src":"1109:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1121:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1132:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1117:3:29"},"nodeType":"YulFunctionCall","src":"1117:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1109:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1151:9:29"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1176:6:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1169:6:29"},"nodeType":"YulFunctionCall","src":"1169:14:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1162:6:29"},"nodeType":"YulFunctionCall","src":"1162:22:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1144:6:29"},"nodeType":"YulFunctionCall","src":"1144:41:29"},"nodeType":"YulExpressionStatement","src":"1144:41:29"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1068:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1079:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1090:4:29","type":""}],"src":"1004:187:29"},{"body":{"nodeType":"YulBlock","src":"1297:76:29","statements":[{"nodeType":"YulAssignment","src":"1307:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1319:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1330:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1315:3:29"},"nodeType":"YulFunctionCall","src":"1315:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1307:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1349:9:29"},{"name":"value0","nodeType":"YulIdentifier","src":"1360:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1342:6:29"},"nodeType":"YulFunctionCall","src":"1342:25:29"},"nodeType":"YulExpressionStatement","src":"1342:25:29"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1266:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1277:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1288:4:29","type":""}],"src":"1196:177:29"},{"body":{"nodeType":"YulBlock","src":"1482:224:29","statements":[{"body":{"nodeType":"YulBlock","src":"1528:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1537:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1540:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1530:6:29"},"nodeType":"YulFunctionCall","src":"1530:12:29"},"nodeType":"YulExpressionStatement","src":"1530:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1503:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1512:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1499:3:29"},"nodeType":"YulFunctionCall","src":"1499:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1524:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1495:3:29"},"nodeType":"YulFunctionCall","src":"1495:32:29"},"nodeType":"YulIf","src":"1492:52:29"},{"nodeType":"YulAssignment","src":"1553:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1582:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1563:18:29"},"nodeType":"YulFunctionCall","src":"1563:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1553:6:29"}]},{"nodeType":"YulAssignment","src":"1601:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1634:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1645:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1630:3:29"},"nodeType":"YulFunctionCall","src":"1630:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1611:18:29"},"nodeType":"YulFunctionCall","src":"1611:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1601:6:29"}]},{"nodeType":"YulAssignment","src":"1658:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1685:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1696:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1681:3:29"},"nodeType":"YulFunctionCall","src":"1681:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1668:12:29"},"nodeType":"YulFunctionCall","src":"1668:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1658:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1432:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1443:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1455:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1463:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1471:6:29","type":""}],"src":"1378:328:29"},{"body":{"nodeType":"YulBlock","src":"1808:87:29","statements":[{"nodeType":"YulAssignment","src":"1818:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1830:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1841:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1826:3:29"},"nodeType":"YulFunctionCall","src":"1826:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1818:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1860:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1875:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1883:4:29","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1871:3:29"},"nodeType":"YulFunctionCall","src":"1871:17:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1853:6:29"},"nodeType":"YulFunctionCall","src":"1853:36:29"},"nodeType":"YulExpressionStatement","src":"1853:36:29"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1777:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1788:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1799:4:29","type":""}],"src":"1711:184:29"},{"body":{"nodeType":"YulBlock","src":"1970:116:29","statements":[{"body":{"nodeType":"YulBlock","src":"2016:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2025:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2028:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2018:6:29"},"nodeType":"YulFunctionCall","src":"2018:12:29"},"nodeType":"YulExpressionStatement","src":"2018:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1991:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2000:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1987:3:29"},"nodeType":"YulFunctionCall","src":"1987:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2012:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1983:3:29"},"nodeType":"YulFunctionCall","src":"1983:32:29"},"nodeType":"YulIf","src":"1980:52:29"},{"nodeType":"YulAssignment","src":"2041:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2070:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2051:18:29"},"nodeType":"YulFunctionCall","src":"2051:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2041:6:29"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1936:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1947:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1959:6:29","type":""}],"src":"1900:186:29"},{"body":{"nodeType":"YulBlock","src":"2192:102:29","statements":[{"nodeType":"YulAssignment","src":"2202:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2214:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2225:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2210:3:29"},"nodeType":"YulFunctionCall","src":"2210:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2202:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2244:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2259:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2275:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"2280:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2271:3:29"},"nodeType":"YulFunctionCall","src":"2271:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"2284:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2267:3:29"},"nodeType":"YulFunctionCall","src":"2267:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2255:3:29"},"nodeType":"YulFunctionCall","src":"2255:32:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2237:6:29"},"nodeType":"YulFunctionCall","src":"2237:51:29"},"nodeType":"YulExpressionStatement","src":"2237:51:29"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2161:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2172:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2183:4:29","type":""}],"src":"2091:203:29"},{"body":{"nodeType":"YulBlock","src":"2386:173:29","statements":[{"body":{"nodeType":"YulBlock","src":"2432:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2441:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2444:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2434:6:29"},"nodeType":"YulFunctionCall","src":"2434:12:29"},"nodeType":"YulExpressionStatement","src":"2434:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2407:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2416:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2403:3:29"},"nodeType":"YulFunctionCall","src":"2403:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2428:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2399:3:29"},"nodeType":"YulFunctionCall","src":"2399:32:29"},"nodeType":"YulIf","src":"2396:52:29"},{"nodeType":"YulAssignment","src":"2457:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2486:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2467:18:29"},"nodeType":"YulFunctionCall","src":"2467:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2457:6:29"}]},{"nodeType":"YulAssignment","src":"2505:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2538:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2549:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2534:3:29"},"nodeType":"YulFunctionCall","src":"2534:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2515:18:29"},"nodeType":"YulFunctionCall","src":"2515:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2505:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2344:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2355:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2367:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2375:6:29","type":""}],"src":"2299:260:29"},{"body":{"nodeType":"YulBlock","src":"2619:325:29","statements":[{"nodeType":"YulAssignment","src":"2629:22:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2643:1:29","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"2646:4:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2639:3:29"},"nodeType":"YulFunctionCall","src":"2639:12:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2629:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"2660:38:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2690:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"2696:1:29","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2686:3:29"},"nodeType":"YulFunctionCall","src":"2686:12:29"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"2664:18:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2737:31:29","statements":[{"nodeType":"YulAssignment","src":"2739:27:29","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2753:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"2761:4:29","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2749:3:29"},"nodeType":"YulFunctionCall","src":"2749:17:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2739:6:29"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2717:18:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2710:6:29"},"nodeType":"YulFunctionCall","src":"2710:26:29"},"nodeType":"YulIf","src":"2707:61:29"},{"body":{"nodeType":"YulBlock","src":"2827:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2848:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2855:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2860:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2851:3:29"},"nodeType":"YulFunctionCall","src":"2851:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2841:6:29"},"nodeType":"YulFunctionCall","src":"2841:31:29"},"nodeType":"YulExpressionStatement","src":"2841:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2892:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2895:4:29","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2885:6:29"},"nodeType":"YulFunctionCall","src":"2885:15:29"},"nodeType":"YulExpressionStatement","src":"2885:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2920:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2923:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2913:6:29"},"nodeType":"YulFunctionCall","src":"2913:15:29"},"nodeType":"YulExpressionStatement","src":"2913:15:29"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"2783:18:29"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2806:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"2814:2:29","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2803:2:29"},"nodeType":"YulFunctionCall","src":"2803:14:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2780:2:29"},"nodeType":"YulFunctionCall","src":"2780:38:29"},"nodeType":"YulIf","src":"2777:161:29"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2599:4:29","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"2608:6:29","type":""}],"src":"2564:380:29"},{"body":{"nodeType":"YulBlock","src":"2997:174:29","statements":[{"nodeType":"YulAssignment","src":"3007:16:29","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3018:1:29"},{"name":"y","nodeType":"YulIdentifier","src":"3021:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3014:3:29"},"nodeType":"YulFunctionCall","src":"3014:9:29"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"3007:3:29"}]},{"body":{"nodeType":"YulBlock","src":"3054:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3075:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3082:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3087:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3078:3:29"},"nodeType":"YulFunctionCall","src":"3078:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3068:6:29"},"nodeType":"YulFunctionCall","src":"3068:31:29"},"nodeType":"YulExpressionStatement","src":"3068:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3119:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3122:4:29","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3112:6:29"},"nodeType":"YulFunctionCall","src":"3112:15:29"},"nodeType":"YulExpressionStatement","src":"3112:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3147:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3150:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3140:6:29"},"nodeType":"YulFunctionCall","src":"3140:15:29"},"nodeType":"YulExpressionStatement","src":"3140:15:29"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3038:1:29"},{"name":"sum","nodeType":"YulIdentifier","src":"3041:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3035:2:29"},"nodeType":"YulFunctionCall","src":"3035:10:29"},"nodeType":"YulIf","src":"3032:133:29"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2980:1:29","type":""},{"name":"y","nodeType":"YulTypedName","src":"2983:1:29","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"2989:3:29","type":""}],"src":"2949:222:29"},{"body":{"nodeType":"YulBlock","src":"3350:227:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3367:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3378:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3360:6:29"},"nodeType":"YulFunctionCall","src":"3360:21:29"},"nodeType":"YulExpressionStatement","src":"3360:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3401:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3412:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3397:3:29"},"nodeType":"YulFunctionCall","src":"3397:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"3417:2:29","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3390:6:29"},"nodeType":"YulFunctionCall","src":"3390:30:29"},"nodeType":"YulExpressionStatement","src":"3390:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3440:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3451:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3436:3:29"},"nodeType":"YulFunctionCall","src":"3436:18:29"},{"hexValue":"45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77","kind":"string","nodeType":"YulLiteral","src":"3456:34:29","type":"","value":"ERC20: decreased allowance below"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3429:6:29"},"nodeType":"YulFunctionCall","src":"3429:62:29"},"nodeType":"YulExpressionStatement","src":"3429:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3511:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3522:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3507:3:29"},"nodeType":"YulFunctionCall","src":"3507:18:29"},{"hexValue":"207a65726f","kind":"string","nodeType":"YulLiteral","src":"3527:7:29","type":"","value":" zero"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3500:6:29"},"nodeType":"YulFunctionCall","src":"3500:35:29"},"nodeType":"YulExpressionStatement","src":"3500:35:29"},{"nodeType":"YulAssignment","src":"3544:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3556:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3567:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3552:3:29"},"nodeType":"YulFunctionCall","src":"3552:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3544:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3327:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3341:4:29","type":""}],"src":"3176:401:29"},{"body":{"nodeType":"YulBlock","src":"3756:228:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3773:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3784:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3766:6:29"},"nodeType":"YulFunctionCall","src":"3766:21:29"},"nodeType":"YulExpressionStatement","src":"3766:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3807:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3818:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3803:3:29"},"nodeType":"YulFunctionCall","src":"3803:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"3823:2:29","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3796:6:29"},"nodeType":"YulFunctionCall","src":"3796:30:29"},"nodeType":"YulExpressionStatement","src":"3796:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3846:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3857:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3842:3:29"},"nodeType":"YulFunctionCall","src":"3842:18:29"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"3862:34:29","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3835:6:29"},"nodeType":"YulFunctionCall","src":"3835:62:29"},"nodeType":"YulExpressionStatement","src":"3835:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3917:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3928:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3913:3:29"},"nodeType":"YulFunctionCall","src":"3913:18:29"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"3933:8:29","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3906:6:29"},"nodeType":"YulFunctionCall","src":"3906:36:29"},"nodeType":"YulExpressionStatement","src":"3906:36:29"},{"nodeType":"YulAssignment","src":"3951:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3963:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3974:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3959:3:29"},"nodeType":"YulFunctionCall","src":"3959:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3951:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3733:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3747:4:29","type":""}],"src":"3582:402:29"},{"body":{"nodeType":"YulBlock","src":"4163:226:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4180:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4191:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4173:6:29"},"nodeType":"YulFunctionCall","src":"4173:21:29"},"nodeType":"YulExpressionStatement","src":"4173:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4214:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4225:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4210:3:29"},"nodeType":"YulFunctionCall","src":"4210:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"4230:2:29","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4203:6:29"},"nodeType":"YulFunctionCall","src":"4203:30:29"},"nodeType":"YulExpressionStatement","src":"4203:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4253:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4264:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4249:3:29"},"nodeType":"YulFunctionCall","src":"4249:18:29"},{"hexValue":"45524332303a20617070726f76652066726f6d20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"4269:34:29","type":"","value":"ERC20: approve from the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4242:6:29"},"nodeType":"YulFunctionCall","src":"4242:62:29"},"nodeType":"YulExpressionStatement","src":"4242:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4324:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4335:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4320:3:29"},"nodeType":"YulFunctionCall","src":"4320:18:29"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"4340:6:29","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4313:6:29"},"nodeType":"YulFunctionCall","src":"4313:34:29"},"nodeType":"YulExpressionStatement","src":"4313:34:29"},{"nodeType":"YulAssignment","src":"4356:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4368:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4379:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4364:3:29"},"nodeType":"YulFunctionCall","src":"4364:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4356:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4140:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4154:4:29","type":""}],"src":"3989:400:29"},{"body":{"nodeType":"YulBlock","src":"4568:224:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4585:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4596:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4578:6:29"},"nodeType":"YulFunctionCall","src":"4578:21:29"},"nodeType":"YulExpressionStatement","src":"4578:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4619:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4630:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4615:3:29"},"nodeType":"YulFunctionCall","src":"4615:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"4635:2:29","type":"","value":"34"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4608:6:29"},"nodeType":"YulFunctionCall","src":"4608:30:29"},"nodeType":"YulExpressionStatement","src":"4608:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4658:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4669:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4654:3:29"},"nodeType":"YulFunctionCall","src":"4654:18:29"},{"hexValue":"45524332303a20617070726f766520746f20746865207a65726f206164647265","kind":"string","nodeType":"YulLiteral","src":"4674:34:29","type":"","value":"ERC20: approve to the zero addre"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4647:6:29"},"nodeType":"YulFunctionCall","src":"4647:62:29"},"nodeType":"YulExpressionStatement","src":"4647:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4729:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4740:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4725:3:29"},"nodeType":"YulFunctionCall","src":"4725:18:29"},{"hexValue":"7373","kind":"string","nodeType":"YulLiteral","src":"4745:4:29","type":"","value":"ss"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4718:6:29"},"nodeType":"YulFunctionCall","src":"4718:32:29"},"nodeType":"YulExpressionStatement","src":"4718:32:29"},{"nodeType":"YulAssignment","src":"4759:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4771:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4782:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4767:3:29"},"nodeType":"YulFunctionCall","src":"4767:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4759:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4545:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4559:4:29","type":""}],"src":"4394:398:29"},{"body":{"nodeType":"YulBlock","src":"4971:179:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4988:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4999:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4981:6:29"},"nodeType":"YulFunctionCall","src":"4981:21:29"},"nodeType":"YulExpressionStatement","src":"4981:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5022:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5033:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5018:3:29"},"nodeType":"YulFunctionCall","src":"5018:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5038:2:29","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5011:6:29"},"nodeType":"YulFunctionCall","src":"5011:30:29"},"nodeType":"YulExpressionStatement","src":"5011:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5061:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5072:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5057:3:29"},"nodeType":"YulFunctionCall","src":"5057:18:29"},{"hexValue":"45524332303a20696e73756666696369656e7420616c6c6f77616e6365","kind":"string","nodeType":"YulLiteral","src":"5077:31:29","type":"","value":"ERC20: insufficient allowance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5050:6:29"},"nodeType":"YulFunctionCall","src":"5050:59:29"},"nodeType":"YulExpressionStatement","src":"5050:59:29"},{"nodeType":"YulAssignment","src":"5118:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5130:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5141:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5126:3:29"},"nodeType":"YulFunctionCall","src":"5126:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5118:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4948:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4962:4:29","type":""}],"src":"4797:353:29"},{"body":{"nodeType":"YulBlock","src":"5329:227:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5346:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5357:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5339:6:29"},"nodeType":"YulFunctionCall","src":"5339:21:29"},"nodeType":"YulExpressionStatement","src":"5339:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5380:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5391:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5376:3:29"},"nodeType":"YulFunctionCall","src":"5376:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5396:2:29","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5369:6:29"},"nodeType":"YulFunctionCall","src":"5369:30:29"},"nodeType":"YulExpressionStatement","src":"5369:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5419:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5430:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5415:3:29"},"nodeType":"YulFunctionCall","src":"5415:18:29"},{"hexValue":"45524332303a207472616e736665722066726f6d20746865207a65726f206164","kind":"string","nodeType":"YulLiteral","src":"5435:34:29","type":"","value":"ERC20: transfer from the zero ad"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5408:6:29"},"nodeType":"YulFunctionCall","src":"5408:62:29"},"nodeType":"YulExpressionStatement","src":"5408:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5490:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5501:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5486:3:29"},"nodeType":"YulFunctionCall","src":"5486:18:29"},{"hexValue":"6472657373","kind":"string","nodeType":"YulLiteral","src":"5506:7:29","type":"","value":"dress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5479:6:29"},"nodeType":"YulFunctionCall","src":"5479:35:29"},"nodeType":"YulExpressionStatement","src":"5479:35:29"},{"nodeType":"YulAssignment","src":"5523:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5535:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5546:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5531:3:29"},"nodeType":"YulFunctionCall","src":"5531:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5523:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5306:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5320:4:29","type":""}],"src":"5155:401:29"},{"body":{"nodeType":"YulBlock","src":"5735:225:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5752:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5763:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5745:6:29"},"nodeType":"YulFunctionCall","src":"5745:21:29"},"nodeType":"YulExpressionStatement","src":"5745:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5786:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5797:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5782:3:29"},"nodeType":"YulFunctionCall","src":"5782:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5802:2:29","type":"","value":"35"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5775:6:29"},"nodeType":"YulFunctionCall","src":"5775:30:29"},"nodeType":"YulExpressionStatement","src":"5775:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5825:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5836:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5821:3:29"},"nodeType":"YulFunctionCall","src":"5821:18:29"},{"hexValue":"45524332303a207472616e7366657220746f20746865207a65726f2061646472","kind":"string","nodeType":"YulLiteral","src":"5841:34:29","type":"","value":"ERC20: transfer to the zero addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5814:6:29"},"nodeType":"YulFunctionCall","src":"5814:62:29"},"nodeType":"YulExpressionStatement","src":"5814:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5896:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5907:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5892:3:29"},"nodeType":"YulFunctionCall","src":"5892:18:29"},{"hexValue":"657373","kind":"string","nodeType":"YulLiteral","src":"5912:5:29","type":"","value":"ess"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5885:6:29"},"nodeType":"YulFunctionCall","src":"5885:33:29"},"nodeType":"YulExpressionStatement","src":"5885:33:29"},{"nodeType":"YulAssignment","src":"5927:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5939:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5950:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5935:3:29"},"nodeType":"YulFunctionCall","src":"5935:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5927:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5712:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5726:4:29","type":""}],"src":"5561:399:29"},{"body":{"nodeType":"YulBlock","src":"6139:228:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6156:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6167:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6149:6:29"},"nodeType":"YulFunctionCall","src":"6149:21:29"},"nodeType":"YulExpressionStatement","src":"6149:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6190:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6201:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6186:3:29"},"nodeType":"YulFunctionCall","src":"6186:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"6206:2:29","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6179:6:29"},"nodeType":"YulFunctionCall","src":"6179:30:29"},"nodeType":"YulExpressionStatement","src":"6179:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6229:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6240:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6225:3:29"},"nodeType":"YulFunctionCall","src":"6225:18:29"},{"hexValue":"45524332303a207472616e7366657220616d6f756e7420657863656564732062","kind":"string","nodeType":"YulLiteral","src":"6245:34:29","type":"","value":"ERC20: transfer amount exceeds b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6218:6:29"},"nodeType":"YulFunctionCall","src":"6218:62:29"},"nodeType":"YulExpressionStatement","src":"6218:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6300:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6311:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6296:3:29"},"nodeType":"YulFunctionCall","src":"6296:18:29"},{"hexValue":"616c616e6365","kind":"string","nodeType":"YulLiteral","src":"6316:8:29","type":"","value":"alance"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6289:6:29"},"nodeType":"YulFunctionCall","src":"6289:36:29"},"nodeType":"YulExpressionStatement","src":"6289:36:29"},{"nodeType":"YulAssignment","src":"6334:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6346:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6357:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6342:3:29"},"nodeType":"YulFunctionCall","src":"6342:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6334:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6116:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6130:4:29","type":""}],"src":"5965:402:29"},{"body":{"nodeType":"YulBlock","src":"6546:182:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6563:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6574:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6556:6:29"},"nodeType":"YulFunctionCall","src":"6556:21:29"},"nodeType":"YulExpressionStatement","src":"6556:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6597:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6608:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6593:3:29"},"nodeType":"YulFunctionCall","src":"6593:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"6613:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6586:6:29"},"nodeType":"YulFunctionCall","src":"6586:30:29"},"nodeType":"YulExpressionStatement","src":"6586:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6636:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6647:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6632:3:29"},"nodeType":"YulFunctionCall","src":"6632:18:29"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"6652:34:29","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6625:6:29"},"nodeType":"YulFunctionCall","src":"6625:62:29"},"nodeType":"YulExpressionStatement","src":"6625:62:29"},{"nodeType":"YulAssignment","src":"6696:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6708:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6719:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6704:3:29"},"nodeType":"YulFunctionCall","src":"6704:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6696:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6523:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6537:4:29","type":""}],"src":"6372:356:29"},{"body":{"nodeType":"YulBlock","src":"6907:181:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6924:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6935:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6917:6:29"},"nodeType":"YulFunctionCall","src":"6917:21:29"},"nodeType":"YulExpressionStatement","src":"6917:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6958:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6969:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6954:3:29"},"nodeType":"YulFunctionCall","src":"6954:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"6974:2:29","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6947:6:29"},"nodeType":"YulFunctionCall","src":"6947:30:29"},"nodeType":"YulExpressionStatement","src":"6947:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6997:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7008:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6993:3:29"},"nodeType":"YulFunctionCall","src":"6993:18:29"},{"hexValue":"45524332303a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"7013:33:29","type":"","value":"ERC20: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6986:6:29"},"nodeType":"YulFunctionCall","src":"6986:61:29"},"nodeType":"YulExpressionStatement","src":"6986:61:29"},{"nodeType":"YulAssignment","src":"7056:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7068:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7079:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7064:3:29"},"nodeType":"YulFunctionCall","src":"7064:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7056:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6884:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6898:4:29","type":""}],"src":"6733:355:29"}]},"contents":"{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, _1)\n let length := mload(value0)\n mstore(add(headStart, _1), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_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_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n mstore(add(headStart, 96), \" zero\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n mstore(add(headStart, 96), \"ddress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 34)\n mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n mstore(add(headStart, 96), \"ss\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_3b6607e091cba9325f958656d2b5e0622ab7dc0eac71a26ac788cb25bc19f4fe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 29)\n mstore(add(headStart, 64), \"ERC20: insufficient allowance\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n mstore(add(headStart, 96), \"dress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 35)\n mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n mstore(add(headStart, 96), \"ess\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n mstore(add(headStart, 96), \"alance\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 31)\n mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n tail := add(headStart, 96)\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146101eb578063a9059cbb146101fe578063dd62ed3e14610211578063f2fde38b1461022457600080fd5b806370a0823114610197578063715018a6146101c05780638da5cb5b146101c857806395d89b41146101e357600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610237565b60405161010f9190610941565b60405180910390f35b61012b6101263660046109ab565b6102c9565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046109d5565b6102e3565b6040516012815260200161010f565b61012b61017d3660046109ab565b610307565b6101956101903660046109ab565b610329565b005b61013f6101a5366004610a11565b6001600160a01b031660009081526020819052604090205490565b61019561033f565b6005546040516001600160a01b03909116815260200161010f565b610102610353565b61012b6101f93660046109ab565b610362565b61012b61020c3660046109ab565b6103e2565b61013f61021f366004610a33565b6103f0565b610195610232366004610a11565b61041b565b60606003805461024690610a66565b80601f016020809104026020016040519081016040528092919081815260200182805461027290610a66565b80156102bf5780601f10610294576101008083540402835291602001916102bf565b820191906000526020600020905b8154815290600101906020018083116102a257829003601f168201915b5050505050905090565b6000336102d7818585610494565b60019150505b92915050565b6000336102f18582856105b8565b6102fc858585610632565b506001949350505050565b6000336102d781858561031a83836103f0565b6103249190610aa0565b610494565b6103316107d6565b61033b8282610830565b5050565b6103476107d6565b61035160006108ef565b565b60606004805461024690610a66565b6000338161037082866103f0565b9050838110156103d55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102fc8286868403610494565b6000336102d7818585610632565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6104236107d6565b6001600160a01b0381166104885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103cc565b610491816108ef565b50565b6001600160a01b0383166104f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103cc565b6001600160a01b0382166105575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103cc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105c484846103f0565b9050600019811461062c578181101561061f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103cc565b61062c8484848403610494565b50505050565b6001600160a01b0383166106965760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103cc565b6001600160a01b0382166106f85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103cc565b6001600160a01b038316600090815260208190526040902054818110156107705760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103cc565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361062c565b6005546001600160a01b031633146103515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103cc565b6001600160a01b0382166108865760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103cc565b80600260008282546108989190610aa0565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b8181101561096e57858101830151858201604001528201610952565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109a657600080fd5b919050565b600080604083850312156109be57600080fd5b6109c78361098f565b946020939093013593505050565b6000806000606084860312156109ea57600080fd5b6109f38461098f565b9250610a016020850161098f565b9150604084013590509250925092565b600060208284031215610a2357600080fd5b610a2c8261098f565b9392505050565b60008060408385031215610a4657600080fd5b610a4f8361098f565b9150610a5d6020840161098f565b90509250929050565b600181811c90821680610a7a57607f821691505b602082108103610a9a57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102dd57634e487b7160e01b600052601160045260246000fdfea2646970667358221220889bb01021338347fbd014f1d8b8afd0061d23c24ee81250aabfa8831b7fa56264736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x211 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x160 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x13B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0x237 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x941 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x2C9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x12B PUSH2 0x15B CALLDATASIZE PUSH1 0x4 PUSH2 0x9D5 JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x12B PUSH2 0x17D CALLDATASIZE PUSH1 0x4 PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x307 JUMP JUMPDEST PUSH2 0x195 PUSH2 0x190 CALLDATASIZE PUSH1 0x4 PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x329 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13F PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0xA11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x195 PUSH2 0x33F JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x102 PUSH2 0x353 JUMP JUMPDEST PUSH2 0x12B PUSH2 0x1F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x362 JUMP JUMPDEST PUSH2 0x12B PUSH2 0x20C CALLDATASIZE PUSH1 0x4 PUSH2 0x9AB JUMP JUMPDEST PUSH2 0x3E2 JUMP JUMPDEST PUSH2 0x13F PUSH2 0x21F CALLDATASIZE PUSH1 0x4 PUSH2 0xA33 JUMP JUMPDEST PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x195 PUSH2 0x232 CALLDATASIZE PUSH1 0x4 PUSH2 0xA11 JUMP JUMPDEST PUSH2 0x41B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x246 SWAP1 PUSH2 0xA66 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x272 SWAP1 PUSH2 0xA66 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2BF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x294 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2BF JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2A2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2D7 DUP2 DUP6 DUP6 PUSH2 0x494 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2F1 DUP6 DUP3 DUP6 PUSH2 0x5B8 JUMP JUMPDEST PUSH2 0x2FC DUP6 DUP6 DUP6 PUSH2 0x632 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2D7 DUP2 DUP6 DUP6 PUSH2 0x31A DUP4 DUP4 PUSH2 0x3F0 JUMP JUMPDEST PUSH2 0x324 SWAP2 SWAP1 PUSH2 0xAA0 JUMP JUMPDEST PUSH2 0x494 JUMP JUMPDEST PUSH2 0x331 PUSH2 0x7D6 JUMP JUMPDEST PUSH2 0x33B DUP3 DUP3 PUSH2 0x830 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x347 PUSH2 0x7D6 JUMP JUMPDEST PUSH2 0x351 PUSH1 0x0 PUSH2 0x8EF JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x246 SWAP1 PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x0 CALLER DUP2 PUSH2 0x370 DUP3 DUP7 PUSH2 0x3F0 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x3D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2FC DUP3 DUP7 DUP7 DUP5 SUB PUSH2 0x494 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x2D7 DUP2 DUP6 DUP6 PUSH2 0x632 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x423 PUSH2 0x7D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x488 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH2 0x491 DUP2 PUSH2 0x8EF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x4F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x557 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C4 DUP5 DUP5 PUSH2 0x3F0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 NOT DUP2 EQ PUSH2 0x62C JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20696E73756666696369656E7420616C6C6F77616E6365000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH2 0x62C DUP5 DUP5 DUP5 DUP5 SUB PUSH2 0x494 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x696 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x6F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x770 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP8 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE SWAP3 MLOAD DUP6 DUP2 MSTORE SWAP1 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0x62C JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x351 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x886 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3CC JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x898 SWAP2 SWAP1 PUSH2 0xAA0 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x96E JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x952 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C7 DUP4 PUSH2 0x98F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F3 DUP5 PUSH2 0x98F JUMP JUMPDEST SWAP3 POP PUSH2 0xA01 PUSH1 0x20 DUP6 ADD PUSH2 0x98F JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA2C DUP3 PUSH2 0x98F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA4F DUP4 PUSH2 0x98F JUMP JUMPDEST SWAP2 POP PUSH2 0xA5D PUSH1 0x20 DUP5 ADD PUSH2 0x98F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xA7A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xA9A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2DD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP9 SWAP12 0xB0 LT 0x21 CALLER DUP4 SELFBALANCE 0xFB 0xD0 EQ CALL 0xD8 0xB8 0xAF 0xD0 MOD SAR 0x23 0xC2 0x4E 0xE8 SLT POP 0xAA 0xBF 0xA8 DUP4 SHL PUSH32 0xA56264736F6C6343000811003300000000000000000000000000000000000000 ","sourceMap":"168:214:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:3;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:29;;1162:22;1144:41;;1132:2;1117:18;4444:197:3;1004:187:29;3255:106:3;3342:12;;3255:106;;;1342:25:29;;;1330:2;1315:18;3255:106:3;1196:177:29;5203:256:3;;;;;;:::i;:::-;;:::i;3104:91::-;;;3186:2;1853:36:29;;1841:2;1826:18;3104:91:3;1711:184:29;5854:234:3;;;;;;:::i;:::-;;:::i;287:93:27:-;;;;;;:::i;:::-;;:::i;:::-;;3419:125:3;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:3;3493:7;3519:18;;;;;;;;;;;;3419:125;1824:101:0;;;:::i;1201:85::-;1273:6;;1201:85;;-1:-1:-1;;;;;1273:6:0;;;2237:51:29;;2225:2;2210:18;1201:85:0;2091:203:29;2369:102:3;;;:::i;6575:427::-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;;:::i;2074:198:0:-;;;;;;:::i;:::-;;:::i;2158:98:3:-;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;719:10:11;4581:32:3;719:10:11;4597:7:3;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;719:10:11;5356:38:3;5372:4;719:10:11;5387:6:3;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:3;;5203:256;-1:-1:-1;;;;5203:256:3:o;5854:234::-;5942:4;719:10:11;5996:64:3;719:10:11;6012:7:3;6049:10;6021:25;719:10:11;6012:7:3;6021:9;:25::i;:::-;:38;;;;:::i;:::-;5996:8;:64::i;287:93:27:-;1094:13:0;:11;:13::i;:::-;356:17:27::1;362:2;366:6;356:5;:17::i;:::-;287:93:::0;;:::o;1824:101:0:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;2369:102:3:-;2425:13;2457:7;2450:14;;;;;:::i;6575:427::-;6668:4;719:10:11;6668:4:3;6749:25;719:10:11;6766:7:3;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:3;;3378:2:29;6784:85:3;;;3360:21:29;3417:2;3397:18;;;3390:30;3456:34;3436:18;;;3429:62;-1:-1:-1;;;3507:18:29;;;3500:35;3552:19;;6784:85:3;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;719:10:11;3873:28:3;719:10:11;3890:2:3;3894:6;3873:9;:28::i;3987:149::-;-1:-1:-1;;;;;4102:18:3;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149::o;2074:198:0:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:0;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:0;;3784:2:29;2154:73:0::1;::::0;::::1;3766:21:29::0;3823:2;3803:18;;;3796:30;3862:34;3842:18;;;3835:62;-1:-1:-1;;;3913:18:29;;;3906:36;3959:19;;2154:73:0::1;3582:402:29::0;2154:73:0::1;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;10457:340:3:-;-1:-1:-1;;;;;10558:19:3;;10550:68;;;;-1:-1:-1;;;10550:68:3;;4191:2:29;10550:68:3;;;4173:21:29;4230:2;4210:18;;;4203:30;4269:34;4249:18;;;4242:62;-1:-1:-1;;;4320:18:29;;;4313:34;4364:19;;10550:68:3;3989:400:29;10550:68:3;-1:-1:-1;;;;;10636:21:3;;10628:68;;;;-1:-1:-1;;;10628:68:3;;4596:2:29;10628:68:3;;;4578:21:29;4635:2;4615:18;;;4608:30;4674:34;4654:18;;;4647:62;-1:-1:-1;;;4725:18:29;;;4718:32;4767:19;;10628:68:3;4394:398:29;10628:68:3;-1:-1:-1;;;;;10707:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1342:25:29;;;10758:32:3;;1315:18:29;10758:32:3;;;;;;;10457:340;;;:::o;11078:411::-;11178:24;11205:25;11215:5;11222:7;11205:9;:25::i;:::-;11178:52;;-1:-1:-1;;11244:16:3;:37;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:3;;4999:2:29;11297:68:3;;;4981:21:29;5038:2;5018:18;;;5011:30;5077:31;5057:18;;;5050:59;5126:18;;11297:68:3;4797:353:29;11297:68:3;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:3;;7544:68;;;;-1:-1:-1;;;7544:68:3;;5357:2:29;7544:68:3;;;5339:21:29;5396:2;5376:18;;;5369:30;5435:34;5415:18;;;5408:62;-1:-1:-1;;;5486:18:29;;;5479:35;5531:19;;7544:68:3;5155:401:29;7544:68:3;-1:-1:-1;;;;;7630:16:3;;7622:64;;;;-1:-1:-1;;;7622:64:3;;5763:2:29;7622:64:3;;;5745:21:29;5802:2;5782:18;;;5775:30;5841:34;5821:18;;;5814:62;-1:-1:-1;;;5892:18:29;;;5885:33;5935:19;;7622:64:3;5561:399:29;7622:64:3;-1:-1:-1;;;;;7768:15:3;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:3;;6167:2:29;7793:72:3;;;6149:21:29;6206:2;6186:18;;;6179:30;6245:34;6225:18;;;6218:62;-1:-1:-1;;;6296:18:29;;;6289:36;6342:19;;7793:72:3;5965:402:29;7793:72:3;-1:-1:-1;;;;;7899:15:3;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1342:25:29;;;8114:13:3;;8163:26;;1315:18:29;8163:26:3;;;;;;;8200:37;12073:91;1359:130:0;1273:6;;-1:-1:-1;;;;;1273:6:0;719:10:11;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;6574:2:29;1414:68:0;;;6556:21:29;;;6593:18;;;6586:30;6652:34;6632:18;;;6625:62;6704:18;;1414:68:0;6372:356:29;8520:535:3;-1:-1:-1;;;;;8603:21:3;;8595:65;;;;-1:-1:-1;;;8595:65:3;;6935:2:29;8595:65:3;;;6917:21:29;6974:2;6954:18;;;6947:30;7013:33;6993:18;;;6986:61;7064:18;;8595:65:3;6733:355:29;8595:65:3;8747:6;8731:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8899:18:3;;:9;:18;;;;;;;;;;;:28;;;;;;8952:37;1342:25:29;;;8952:37:3;;1315:18:29;8952:37:3;;;;;;;287:93:27;;:::o;2426:187:0:-;2518:6;;;-1:-1:-1;;;;;2534:17:0;;;-1:-1:-1;;;;;;2534:17:0;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;14:548:29:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:29;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:29:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:186::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2051:29;2070:9;2051:29;:::i;:::-;2041:39;1900:186;-1:-1:-1;;;1900:186:29:o;2299:260::-;2367:6;2375;2428:2;2416:9;2407:7;2403:23;2399:32;2396:52;;;2444:1;2441;2434:12;2396:52;2467:29;2486:9;2467:29;:::i;:::-;2457:39;;2515:38;2549:2;2538:9;2534:18;2515:38;:::i;:::-;2505:48;;2299:260;;;;;:::o;2564:380::-;2643:1;2639:12;;;;2686;;;2707:61;;2761:4;2753:6;2749:17;2739:27;;2707:61;2814:2;2806:6;2803:14;2783:18;2780:38;2777:161;;2860:10;2855:3;2851:20;2848:1;2841:31;2895:4;2892:1;2885:15;2923:4;2920:1;2913:15;2777:161;;2564:380;;;:::o;2949:222::-;3014:9;;;3035:10;;;3032:133;;;3087:10;3082:3;3078:20;3075:1;3068:31;3122:4;3119:1;3112:15;3150:4;3147:1;3140:15"},"gasEstimates":{"creation":{"codeDepositCost":"561400","executionCost":"infinite","totalCost":"infinite"},"external":{"allowance(address,address)":"infinite","approve(address,uint256)":"24651","balanceOf(address)":"2563","decimals()":"222","decreaseAllowance(address,uint256)":"26972","increaseAllowance(address,uint256)":"infinite","mint(address,uint256)":"53058","name()":"infinite","owner()":"2368","renounceOwnership()":"infinite","symbol()":"infinite","totalSupply()":"2349","transfer(address,uint256)":"51094","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"28424"}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","owner()":"8da5cb5b","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/ERC20Mock.sol\":\"ERC20Mock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n mapping(address => uint256) private _balances;\\n\\n mapping(address => mapping(address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n string private _name;\\n string private _symbol;\\n\\n /**\\n * @dev Sets the values for {name} and {symbol}.\\n *\\n * All two of these values are immutable: they can only be set once during\\n * construction.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev Returns the symbol of the token, usually a shorter version of the\\n * name.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev Returns the number of decimals used to get its user representation.\\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n *\\n * Tokens usually opt for a value of 18, imitating the relationship between\\n * Ether and Wei. This is the default value returned by this function, unless\\n * it's overridden.\\n *\\n * NOTE: This information is only used for _display_ purposes: it in\\n * no way affects any of the arithmetic of the contract, including\\n * {IERC20-balanceOf} and {IERC20-transfer}.\\n */\\n function decimals() public view virtual override returns (uint8) {\\n return 18;\\n }\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view virtual override returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view virtual override returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address to, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _transfer(owner, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on\\n * `transferFrom`. This is semantically equivalent to an infinite approval.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20}.\\n *\\n * NOTE: Does not update the allowance if the current allowance\\n * is the maximum `uint256`.\\n *\\n * Requirements:\\n *\\n * - `from` and `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n * - the caller must have allowance for ``from``'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {\\n address spender = _msgSender();\\n _spendAllowance(from, spender, amount);\\n _transfer(from, to, amount);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n _approve(owner, spender, allowance(owner, spender) + addedValue);\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n address owner = _msgSender();\\n uint256 currentAllowance = allowance(owner, spender);\\n require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - subtractedValue);\\n }\\n\\n return true;\\n }\\n\\n /**\\n * @dev Moves `amount` of tokens from `from` to `to`.\\n *\\n * This internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `from` must have a balance of at least `amount`.\\n */\\n function _transfer(address from, address to, uint256 amount) internal virtual {\\n require(from != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(to != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, amount);\\n\\n uint256 fromBalance = _balances[from];\\n require(fromBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n unchecked {\\n _balances[from] = fromBalance - amount;\\n // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by\\n // decrementing then incrementing.\\n _balances[to] += amount;\\n }\\n\\n emit Transfer(from, to, amount);\\n\\n _afterTokenTransfer(from, to, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _beforeTokenTransfer(address(0), account, amount);\\n\\n _totalSupply += amount;\\n unchecked {\\n // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.\\n _balances[account] += amount;\\n }\\n emit Transfer(address(0), account, amount);\\n\\n _afterTokenTransfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements:\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal virtual {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _beforeTokenTransfer(account, address(0), amount);\\n\\n uint256 accountBalance = _balances[account];\\n require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n unchecked {\\n _balances[account] = accountBalance - amount;\\n // Overflow not possible: amount <= accountBalance <= totalSupply.\\n _totalSupply -= amount;\\n }\\n\\n emit Transfer(account, address(0), amount);\\n\\n _afterTokenTransfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n *\\n * This internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal virtual {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Updates `owner` s allowance for `spender` based on spent `amount`.\\n *\\n * Does not update the allowance amount in case of infinite allowance.\\n * Revert if not enough allowance is available.\\n *\\n * Might emit an {Approval} event.\\n */\\n function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\\n uint256 currentAllowance = allowance(owner, spender);\\n if (currentAllowance != type(uint256).max) {\\n require(currentAllowance >= amount, \\\"ERC20: insufficient allowance\\\");\\n unchecked {\\n _approve(owner, spender, currentAllowance - amount);\\n }\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * will be transferred to `to`.\\n * - when `from` is zero, `amount` tokens will be minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n * has been transferred to `to`.\\n * - when `from` is zero, `amount` tokens have been minted for `to`.\\n * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\\n}\\n\",\"keccak256\":\"0xa56ca923f70c1748830700250b19c61b70db9a683516dc5e216694a50445d99c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n /**\\n * @dev Returns the name of the token.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the symbol of the token.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the decimals places of the token.\\n */\\n function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"contracts/mock/ERC20Mock.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.8;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract ERC20Mock is ERC20, Ownable {\\n constructor()\\n ERC20(\\\"MyToken\\\", \\\"MTK\\\")\\n Ownable()\\n {}\\n\\n function mint(address to, uint256 amount) public onlyOwner {\\n _mint(to, amount);\\n }\\n}\",\"keccak256\":\"0x8599fa32ae97690da8801e74912a058d07f752973a8c11ac5f7b14a742df6544\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":183,"contract":"contracts/mock/ERC20Mock.sol:ERC20Mock","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":189,"contract":"contracts/mock/ERC20Mock.sol:ERC20Mock","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":191,"contract":"contracts/mock/ERC20Mock.sol:ERC20Mock","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":193,"contract":"contracts/mock/ERC20Mock.sol:ERC20Mock","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":195,"contract":"contracts/mock/ERC20Mock.sol:ERC20Mock","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":7,"contract":"contracts/mock/ERC20Mock.sol:ERC20Mock","label":"_owner","offset":0,"slot":"5","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/mock/NFTMock.sol":{"NFTMock":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_5575":{"entryPoint":null,"id":5575,"parameterSlots":2,"returnSlots":0},"@_920":{"entryPoint":null,"id":920,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":116,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":291,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":457,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":540,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":397,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":94,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:29"},"nodeType":"YulFunctionCall","src":"66:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:29"},"nodeType":"YulFunctionCall","src":"56:31:29"},"nodeType":"YulExpressionStatement","src":"56:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:29","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:29"},"nodeType":"YulFunctionCall","src":"96:15:29"},"nodeType":"YulExpressionStatement","src":"96:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:29"},"nodeType":"YulFunctionCall","src":"120:15:29"},"nodeType":"YulExpressionStatement","src":"120:15:29"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:29"},{"body":{"nodeType":"YulBlock","src":"210:776:29","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:29"},"nodeType":"YulFunctionCall","src":"261:12:29"},"nodeType":"YulExpressionStatement","src":"261:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:29"},"nodeType":"YulFunctionCall","src":"234:17:29"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:29"},"nodeType":"YulFunctionCall","src":"230:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:29"},"nodeType":"YulFunctionCall","src":"223:35:29"},"nodeType":"YulIf","src":"220:55:29"},{"nodeType":"YulVariableDeclaration","src":"284:23:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:29"},"nodeType":"YulFunctionCall","src":"294:13:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:29"},"nodeType":"YulFunctionCall","src":"330:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:29"},"nodeType":"YulFunctionCall","src":"326:18:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:29"},"nodeType":"YulFunctionCall","src":"369:18:29"},"nodeType":"YulExpressionStatement","src":"369:18:29"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:29"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:29"},"nodeType":"YulFunctionCall","src":"356:10:29"},"nodeType":"YulIf","src":"353:36:29"},{"nodeType":"YulVariableDeclaration","src":"398:17:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:29"},"nodeType":"YulFunctionCall","src":"408:7:29"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:29","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:29"},"nodeType":"YulFunctionCall","src":"438:9:29"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:29","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:29"},"nodeType":"YulFunctionCall","src":"498:13:29"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:29"},"nodeType":"YulFunctionCall","src":"494:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:29","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:29"},"nodeType":"YulFunctionCall","src":"490:31:29"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:29"},"nodeType":"YulFunctionCall","src":"486:40:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:29"},"nodeType":"YulFunctionCall","src":"474:53:29"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:29"},"nodeType":"YulFunctionCall","src":"588:18:29"},"nodeType":"YulExpressionStatement","src":"588:18:29"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:29"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:29"},"nodeType":"YulFunctionCall","src":"542:18:29"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:29"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:29"},"nodeType":"YulFunctionCall","src":"562:22:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:29"},"nodeType":"YulFunctionCall","src":"539:46:29"},"nodeType":"YulIf","src":"536:72:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:29","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:29"},"nodeType":"YulFunctionCall","src":"617:22:29"},"nodeType":"YulExpressionStatement","src":"617:22:29"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:29"},"nodeType":"YulFunctionCall","src":"648:18:29"},"nodeType":"YulExpressionStatement","src":"648:18:29"},{"nodeType":"YulVariableDeclaration","src":"675:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:29","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:29"},"nodeType":"YulFunctionCall","src":"737:12:29"},"nodeType":"YulExpressionStatement","src":"737:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:29"},"nodeType":"YulFunctionCall","src":"708:15:29"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:29"},"nodeType":"YulFunctionCall","src":"704:24:29"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:29"},"nodeType":"YulFunctionCall","src":"701:33:29"},"nodeType":"YulIf","src":"698:53:29"},{"nodeType":"YulVariableDeclaration","src":"760:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:29","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:29"},"nodeType":"YulFunctionCall","src":"850:14:29"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:29"},"nodeType":"YulFunctionCall","src":"846:23:29"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:29"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:29"},"nodeType":"YulFunctionCall","src":"881:14:29"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:29"},"nodeType":"YulFunctionCall","src":"877:23:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:29"},"nodeType":"YulFunctionCall","src":"871:30:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:29"},"nodeType":"YulFunctionCall","src":"839:63:29"},"nodeType":"YulExpressionStatement","src":"839:63:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:29"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:29"},"nodeType":"YulFunctionCall","src":"787:9:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:29","statements":[{"nodeType":"YulAssignment","src":"799:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:29"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:29"},"nodeType":"YulFunctionCall","src":"804:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:29","statements":[]},"src":"779:133:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:29"},"nodeType":"YulFunctionCall","src":"932:15:29"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:29"},"nodeType":"YulFunctionCall","src":"928:24:29"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:29"},"nodeType":"YulFunctionCall","src":"921:35:29"},"nodeType":"YulExpressionStatement","src":"921:35:29"},{"nodeType":"YulAssignment","src":"965:15:29","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:29"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:29"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:29","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:29","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:29","type":""}],"src":"146:840:29"},{"body":{"nodeType":"YulBlock","src":"1109:444:29","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:29"},"nodeType":"YulFunctionCall","src":"1157:12:29"},"nodeType":"YulExpressionStatement","src":"1157:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:29"},"nodeType":"YulFunctionCall","src":"1126:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:29"},"nodeType":"YulFunctionCall","src":"1122:32:29"},"nodeType":"YulIf","src":"1119:52:29"},{"nodeType":"YulVariableDeclaration","src":"1180:30:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:29"},"nodeType":"YulFunctionCall","src":"1194:16:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:29"},"nodeType":"YulFunctionCall","src":"1233:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:29"},"nodeType":"YulFunctionCall","src":"1229:18:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:29"},"nodeType":"YulFunctionCall","src":"1276:12:29"},"nodeType":"YulExpressionStatement","src":"1276:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:29"},"nodeType":"YulFunctionCall","src":"1259:14:29"},"nodeType":"YulIf","src":"1256:34:29"},{"nodeType":"YulAssignment","src":"1299:71:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:29"},"nodeType":"YulFunctionCall","src":"1338:22:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:29"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:29"},"nodeType":"YulFunctionCall","src":"1309:61:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:29"},"nodeType":"YulFunctionCall","src":"1401:18:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:29"},"nodeType":"YulFunctionCall","src":"1395:25:29"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:29"},"nodeType":"YulFunctionCall","src":"1451:12:29"},"nodeType":"YulExpressionStatement","src":"1451:12:29"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:29"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:29"},"nodeType":"YulFunctionCall","src":"1432:16:29"},"nodeType":"YulIf","src":"1429:36:29"},{"nodeType":"YulAssignment","src":"1474:73:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:29"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:29"},"nodeType":"YulFunctionCall","src":"1513:24:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:29"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:29"},"nodeType":"YulFunctionCall","src":"1484:63:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:29"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:29","type":""}],"src":"991:562:29"},{"body":{"nodeType":"YulBlock","src":"1613:325:29","statements":[{"nodeType":"YulAssignment","src":"1623:22:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:29","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:29"},"nodeType":"YulFunctionCall","src":"1633:12:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:29","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:29"},"nodeType":"YulFunctionCall","src":"1680:12:29"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:29","statements":[{"nodeType":"YulAssignment","src":"1733:27:29","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:29","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:29"},"nodeType":"YulFunctionCall","src":"1743:17:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:29"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:29"},"nodeType":"YulFunctionCall","src":"1704:26:29"},"nodeType":"YulIf","src":"1701:61:29"},{"body":{"nodeType":"YulBlock","src":"1821:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:29"},"nodeType":"YulFunctionCall","src":"1845:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:29"},"nodeType":"YulFunctionCall","src":"1835:31:29"},"nodeType":"YulExpressionStatement","src":"1835:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:29","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:29"},"nodeType":"YulFunctionCall","src":"1879:15:29"},"nodeType":"YulExpressionStatement","src":"1879:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:29"},"nodeType":"YulFunctionCall","src":"1907:15:29"},"nodeType":"YulExpressionStatement","src":"1907:15:29"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:29"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:29","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:29"},"nodeType":"YulFunctionCall","src":"1797:14:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:29"},"nodeType":"YulFunctionCall","src":"1774:38:29"},"nodeType":"YulIf","src":"1771:161:29"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:29","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:29","type":""}],"src":"1558:380:29"},{"body":{"nodeType":"YulBlock","src":"1999:65:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:29","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:29"},"nodeType":"YulFunctionCall","src":"2009:14:29"},"nodeType":"YulExpressionStatement","src":"2009:14:29"},{"nodeType":"YulAssignment","src":"2032:26:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:29","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:29"},"nodeType":"YulFunctionCall","src":"2040:18:29"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:29"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:29","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:29","type":""}],"src":"1943:121:29"},{"body":{"nodeType":"YulBlock","src":"2150:464:29","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:29","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:29","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:29","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:29"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:29"},"nodeType":"YulFunctionCall","src":"2221:17:29"},"nodeType":"YulExpressionStatement","src":"2221:17:29"},{"nodeType":"YulVariableDeclaration","src":"2251:31:29","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:29","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:29"},"nodeType":"YulFunctionCall","src":"2263:19:29"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:29","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:29"},"nodeType":"YulFunctionCall","src":"2331:19:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:29"},"nodeType":"YulFunctionCall","src":"2324:27:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:29"},"nodeType":"YulFunctionCall","src":"2314:38:29"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:29","statements":[{"nodeType":"YulAssignment","src":"2391:19:29","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:29"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:29"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:29","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:29"},"nodeType":"YulFunctionCall","src":"2368:20:29"},"nodeType":"YulIf","src":"2365:47:29"},{"nodeType":"YulVariableDeclaration","src":"2425:41:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:29","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:29"},"nodeType":"YulFunctionCall","src":"2452:12:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:29"},"nodeType":"YulFunctionCall","src":"2445:20:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:29"},"nodeType":"YulFunctionCall","src":"2435:31:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:29","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:29"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:29","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:29"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:29"},"nodeType":"YulFunctionCall","src":"2579:17:29"},"nodeType":"YulExpressionStatement","src":"2579:17:29"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:29"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:29"},"nodeType":"YulFunctionCall","src":"2524:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:29","statements":[{"nodeType":"YulAssignment","src":"2540:22:29","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:29"},"nodeType":"YulFunctionCall","src":"2549:13:29"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:29"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:29","statements":[]},"src":"2516:82:29"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:29","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:29"},"nodeType":"YulFunctionCall","src":"2163:11:29"},"nodeType":"YulIf","src":"2160:448:29"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:29","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:29","type":""}],"src":"2069:545:29"},{"body":{"nodeType":"YulBlock","src":"2704:81:29","statements":[{"nodeType":"YulAssignment","src":"2714:65:29","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:29"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:29","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:29"},"nodeType":"YulFunctionCall","src":"2743:11:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:29"},"nodeType":"YulFunctionCall","src":"2756:6:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:29"},"nodeType":"YulFunctionCall","src":"2739:24:29"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:29"},"nodeType":"YulFunctionCall","src":"2735:29:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:29"},"nodeType":"YulFunctionCall","src":"2725:40:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:29","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:29"},"nodeType":"YulFunctionCall","src":"2767:11:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:29"},"nodeType":"YulFunctionCall","src":"2722:57:29"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:29"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:29","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:29","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:29","type":""}],"src":"2619:166:29"},{"body":{"nodeType":"YulBlock","src":"2886:1256:29","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:29","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:29"},"nodeType":"YulFunctionCall","src":"2910:10:29"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:29"},"nodeType":"YulFunctionCall","src":"2965:18:29"},"nodeType":"YulExpressionStatement","src":"2965:18:29"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:29","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:29"},"nodeType":"YulFunctionCall","src":"2947:10:29"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:29"},"nodeType":"YulFunctionCall","src":"2943:18:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:29"},"nodeType":"YulFunctionCall","src":"2932:30:29"},"nodeType":"YulIf","src":"2929:56:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:29"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:29"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:29"},"nodeType":"YulFunctionCall","src":"3070:11:29"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:29"},"nodeType":"YulFunctionCall","src":"3044:38:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:29"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:29"},"nodeType":"YulFunctionCall","src":"2994:97:29"},"nodeType":"YulExpressionStatement","src":"2994:97:29"},{"nodeType":"YulVariableDeclaration","src":"3100:18:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:29","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:29","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:29","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:29","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:29"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:29"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:29","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:29"},"nodeType":"YulFunctionCall","src":"3270:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:29"},"nodeType":"YulFunctionCall","src":"3258:20:29"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:29","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:29"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:29"},"nodeType":"YulFunctionCall","src":"3305:35:29"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:29","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:29"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:29"},"nodeType":"YulFunctionCall","src":"3479:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:29"},"nodeType":"YulFunctionCall","src":"3473:26:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:29"},"nodeType":"YulFunctionCall","src":"3458:42:29"},"nodeType":"YulExpressionStatement","src":"3458:42:29"},{"nodeType":"YulAssignment","src":"3517:24:29","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:29"},"nodeType":"YulFunctionCall","src":"3527:14:29"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:29"}]},{"nodeType":"YulAssignment","src":"3558:40:29","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:29"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:29"},"nodeType":"YulFunctionCall","src":"3571:27:29"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:29"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:29"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:29"},"nodeType":"YulFunctionCall","src":"3384:14:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:29","statements":[{"nodeType":"YulAssignment","src":"3401:24:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:29"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:29"},"nodeType":"YulFunctionCall","src":"3406:19:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:29","statements":[]},"src":"3376:236:29"},{"body":{"nodeType":"YulBlock","src":"3660:166:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:29","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:29"},"nodeType":"YulFunctionCall","src":"3701:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:29"},"nodeType":"YulFunctionCall","src":"3695:26:29"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:29","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:29"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:29","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:29"},"nodeType":"YulFunctionCall","src":"3780:14:29"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:29","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:29"},"nodeType":"YulFunctionCall","src":"3776:24:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:29","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:29"},"nodeType":"YulFunctionCall","src":"3802:6:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:29"},"nodeType":"YulFunctionCall","src":"3772:37:29"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:29"},"nodeType":"YulFunctionCall","src":"3768:42:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:29"},"nodeType":"YulFunctionCall","src":"3753:58:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:29"},"nodeType":"YulFunctionCall","src":"3738:74:29"},"nodeType":"YulExpressionStatement","src":"3738:74:29"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:29"},"nodeType":"YulFunctionCall","src":"3628:19:29"},"nodeType":"YulIf","src":"3625:201:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:29","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:29"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:29"},"nodeType":"YulFunctionCall","src":"3856:14:29"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:29","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:29"},"nodeType":"YulFunctionCall","src":"3852:22:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:29"},"nodeType":"YulFunctionCall","src":"3839:36:29"},"nodeType":"YulExpressionStatement","src":"3839:36:29"}]},"nodeType":"YulCase","src":"3222:663:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:29","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:29","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:29","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:29","statements":[{"nodeType":"YulAssignment","src":"3983:35:29","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:29"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:29"},"nodeType":"YulFunctionCall","src":"3998:19:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:29"},"nodeType":"YulFunctionCall","src":"3992:26:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:29"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:29"},"nodeType":"YulIf","src":"3943:89:29"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:29"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:29"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:29"},"nodeType":"YulFunctionCall","src":"4058:67:29"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:29"},"nodeType":"YulFunctionCall","src":"4045:81:29"},"nodeType":"YulExpressionStatement","src":"4045:81:29"}]},"nodeType":"YulCase","src":"3894:242:29","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:29","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:29"},"nodeType":"YulFunctionCall","src":"3199:14:29"},"nodeType":"YulSwitch","src":"3192:944:29"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:29","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:29","type":""}],"src":"2790:1352:29"}]},"contents":"{\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_string_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := mload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n let _4 := 0x20\n if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n let i := 0\n for { } lt(i, _1) { i := add(i, _4) }\n {\n mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n }\n mstore(add(add(memPtr, _1), _4), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := mload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n let offset_1 := mload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620015ae380380620015ae833981016040819052620000349162000123565b818160006200004483826200021c565b5060016200005382826200021c565b5050505050620002e8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008657600080fd5b81516001600160401b0380821115620000a357620000a36200005e565b604051601f8301601f19908116603f01168101908282118183101715620000ce57620000ce6200005e565b81604052838152602092508683858801011115620000eb57600080fd5b600091505b838210156200010f5785820183015181830184015290820190620000f0565b600093810190920192909252949350505050565b600080604083850312156200013757600080fd5b82516001600160401b03808211156200014f57600080fd5b6200015d8683870162000074565b935060208501519150808211156200017457600080fd5b50620001838582860162000074565b9150509250929050565b600181811c90821680620001a257607f821691505b602082108103620001c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021757600081815260208120601f850160051c81016020861015620001f25750805b601f850160051c820191505b818110156200021357828155600101620001fe565b5050505b505050565b81516001600160401b038111156200023857620002386200005e565b62000250816200024984546200018d565b84620001c9565b602080601f8311600181146200028857600084156200026f5750858301515b600019600386901b1c1916600185901b17855562000213565b600085815260208120601f198616915b82811015620002b95788860151825594840194600190910190840162000298565b5085821015620002d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6112b680620002f86000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101e1578063b88d4fde146101f4578063c87b56dd14610207578063e985e9c51461021a57600080fd5b80636352211e146101a557806370a08231146101b857806395d89b41146101d957600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806340c10f191461017f57806342842e0e1461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004610e42565b610256565b60405190151581526020015b60405180910390f35b61011f6102a8565b60405161010e9190610eaf565b61013f61013a366004610ec2565b61033a565b6040516001600160a01b03909116815260200161010e565b61016a610165366004610ef7565b610361565b005b61016a61017a366004610f21565b61047b565b61016a61018d366004610ef7565b6104ac565b61016a6101a0366004610f21565b6104ba565b61013f6101b3366004610ec2565b6104d5565b6101cb6101c6366004610f5d565b610535565b60405190815260200161010e565b61011f6105bb565b61016a6101ef366004610f78565b6105ca565b61016a610202366004610fca565b6105d5565b61011f610215366004610ec2565b61060d565b6101026102283660046110a6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061028757506001600160e01b03198216635b5e139f60e01b145b806102a257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102b7906110d9565b80601f01602080910402602001604051908101604052809291908181526020018280546102e3906110d9565b80156103305780601f1061030557610100808354040283529160200191610330565b820191906000526020600020905b81548152906001019060200180831161031357829003601f168201915b5050505050905090565b600061034582610681565b506000908152600460205260409020546001600160a01b031690565b600061036c826104d5565b9050806001600160a01b0316836001600160a01b0316036103de5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103fa57506103fa8133610228565b61046c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103d5565b61047683836106e3565b505050565b6104853382610751565b6104a15760405162461bcd60e51b81526004016103d590611113565b6104768383836107d0565b6104b68282610934565b5050565b610476838383604051806020016040528060008152506105d5565b6000818152600260205260408120546001600160a01b0316806102a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b60006001600160a01b03821661059f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103d5565b506001600160a01b031660009081526003602052604090205490565b6060600180546102b7906110d9565b6104b6338383610abf565b6105df3383610751565b6105fb5760405162461bcd60e51b81526004016103d590611113565b61060784848484610b8d565b50505050565b606061061882610681565b600061062f60408051602081019091526000815290565b9050600081511161064f576040518060200160405280600081525061067a565b8061065984610bc0565b60405160200161066a929190611160565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106e05760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610718826104d5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061075d836104d5565b9050806001600160a01b0316846001600160a01b031614806107a457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107c85750836001600160a01b03166107bd8461033a565b6001600160a01b0316145b949350505050565b826001600160a01b03166107e3826104d5565b6001600160a01b0316146108095760405162461bcd60e51b81526004016103d59061118f565b6001600160a01b03821661086b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103d5565b826001600160a01b031661087e826104d5565b6001600160a01b0316146108a45760405162461bcd60e51b81526004016103d59061118f565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03821661098a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103d5565b6000818152600260205260409020546001600160a01b0316156109ef5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6000818152600260205260409020546001600160a01b031615610a545760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b031603610b205760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103d5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b988484846107d0565b610ba484848484610c53565b6106075760405162461bcd60e51b81526004016103d5906111d4565b60606000610bcd83610d54565b600101905060008167ffffffffffffffff811115610bed57610bed610fb4565b6040519080825280601f01601f191660200182016040528015610c17576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610c2157509392505050565b60006001600160a01b0384163b15610d4957604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c97903390899088908890600401611226565b6020604051808303816000875af1925050508015610cd2575060408051601f3d908101601f19168201909252610ccf91810190611263565b60015b610d2f573d808015610d00576040519150601f19603f3d011682016040523d82523d6000602084013e610d05565b606091505b508051600003610d275760405162461bcd60e51b81526004016103d5906111d4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506107c8565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610d935772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610dbf576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610ddd57662386f26fc10000830492506010015b6305f5e1008310610df5576305f5e100830492506008015b6127108310610e0957612710830492506004015b60648310610e1b576064830492506002015b600a83106102a25760010192915050565b6001600160e01b0319811681146106e057600080fd5b600060208284031215610e5457600080fd5b813561067a81610e2c565b60005b83811015610e7a578181015183820152602001610e62565b50506000910152565b60008151808452610e9b816020860160208601610e5f565b601f01601f19169290920160200192915050565b60208152600061067a6020830184610e83565b600060208284031215610ed457600080fd5b5035919050565b80356001600160a01b0381168114610ef257600080fd5b919050565b60008060408385031215610f0a57600080fd5b610f1383610edb565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610edb565b9250610f4d60208501610edb565b9150604084013590509250925092565b600060208284031215610f6f57600080fd5b61067a82610edb565b60008060408385031215610f8b57600080fd5b610f9483610edb565b915060208301358015158114610fa957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610fe057600080fd5b610fe985610edb565b9350610ff760208601610edb565b925060408501359150606085013567ffffffffffffffff8082111561101b57600080fd5b818701915087601f83011261102f57600080fd5b81358181111561104157611041610fb4565b604051601f8201601f19908116603f0116810190838211818310171561106957611069610fb4565b816040528281528a602084870101111561108257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110b957600080fd5b6110c283610edb565b91506110d060208401610edb565b90509250929050565b600181811c908216806110ed57607f821691505b60208210810361110d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351611172818460208801610e5f565b835190830190611186818360208801610e5f565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061125990830184610e83565b9695505050505050565b60006020828403121561127557600080fd5b815161067a81610e2c56fea26469706673582212203e5c29bc0c6611a8b7a6b12c19a302bc12fee5e380672b063f2b72a4f2ffcd6b64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x15AE CODESIZE SUB DUP1 PUSH3 0x15AE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x123 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x0 PUSH3 0x44 DUP4 DUP3 PUSH3 0x21C JUMP JUMPDEST POP PUSH1 0x1 PUSH3 0x53 DUP3 DUP3 PUSH3 0x21C JUMP JUMPDEST POP POP POP POP POP PUSH3 0x2E8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0xA3 JUMPI PUSH3 0xA3 PUSH3 0x5E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCE JUMPI PUSH3 0xCE PUSH3 0x5E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10F JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xF0 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x15D DUP7 DUP4 DUP8 ADD PUSH3 0x74 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x183 DUP6 DUP3 DUP7 ADD PUSH3 0x74 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x1A2 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1C3 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x217 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1F2 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x213 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FE JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x238 JUMPI PUSH3 0x238 PUSH3 0x5E JUMP JUMPDEST PUSH3 0x250 DUP2 PUSH3 0x249 DUP5 SLOAD PUSH3 0x18D JUMP JUMPDEST DUP5 PUSH3 0x1C9 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x288 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26F JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x213 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B9 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x298 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D8 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x12B6 DUP1 PUSH3 0x2F8 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xE42 JUMP JUMPDEST PUSH2 0x256 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11F PUSH2 0x2A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xEAF JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xEC2 JUMP JUMPDEST PUSH2 0x33A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0xEF7 JUMP JUMPDEST PUSH2 0x361 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16A PUSH2 0x17A CALLDATASIZE PUSH1 0x4 PUSH2 0xF21 JUMP JUMPDEST PUSH2 0x47B JUMP JUMPDEST PUSH2 0x16A PUSH2 0x18D CALLDATASIZE PUSH1 0x4 PUSH2 0xEF7 JUMP JUMPDEST PUSH2 0x4AC JUMP JUMPDEST PUSH2 0x16A PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0xF21 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST PUSH2 0x13F PUSH2 0x1B3 CALLDATASIZE PUSH1 0x4 PUSH2 0xEC2 JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x1C6 CALLDATASIZE PUSH1 0x4 PUSH2 0xF5D JUMP JUMPDEST PUSH2 0x535 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x11F PUSH2 0x5BB JUMP JUMPDEST PUSH2 0x16A PUSH2 0x1EF CALLDATASIZE PUSH1 0x4 PUSH2 0xF78 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST PUSH2 0x16A PUSH2 0x202 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCA JUMP JUMPDEST PUSH2 0x5D5 JUMP JUMPDEST PUSH2 0x11F PUSH2 0x215 CALLDATASIZE PUSH1 0x4 PUSH2 0xEC2 JUMP JUMPDEST PUSH2 0x60D JUMP JUMPDEST PUSH2 0x102 PUSH2 0x228 CALLDATASIZE PUSH1 0x4 PUSH2 0x10A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x287 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A2 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x2B7 SWAP1 PUSH2 0x10D9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2E3 SWAP1 PUSH2 0x10D9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x330 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x305 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x330 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x313 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x345 DUP3 PUSH2 0x681 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36C DUP3 PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3FA JUMPI POP PUSH2 0x3FA DUP2 CALLER PUSH2 0x228 JUMP JUMPDEST PUSH2 0x46C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH2 0x476 DUP4 DUP4 PUSH2 0x6E3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x485 CALLER DUP3 PUSH2 0x751 JUMP JUMPDEST PUSH2 0x4A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0x476 DUP4 DUP4 DUP4 PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x4B6 DUP3 DUP3 PUSH2 0x934 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x476 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x5D5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x2A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x59F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3D5 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x2B7 SWAP1 PUSH2 0x10D9 JUMP JUMPDEST PUSH2 0x4B6 CALLER DUP4 DUP4 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x5DF CALLER DUP4 PUSH2 0x751 JUMP JUMPDEST PUSH2 0x5FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0x607 DUP5 DUP5 DUP5 DUP5 PUSH2 0xB8D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x618 DUP3 PUSH2 0x681 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x62F PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x64F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x67A JUMP JUMPDEST DUP1 PUSH2 0x659 DUP5 PUSH2 0xBC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x66A SWAP3 SWAP2 SWAP1 PUSH2 0x1160 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x718 DUP3 PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x75D DUP4 PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x7A4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x7C8 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7BD DUP5 PUSH2 0x33A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E3 DUP3 PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x118F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x86B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3D5 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x87E DUP3 PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x118F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x98A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x9EF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xA54 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB20 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB98 DUP5 DUP5 DUP5 PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0xBA4 DUP5 DUP5 DUP5 DUP5 PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x607 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x11D4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xBCD DUP4 PUSH2 0xD54 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBED JUMPI PUSH2 0xBED PUSH2 0xFB4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC17 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xC21 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xD49 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xC97 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1226 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xCD2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xCCF SWAP2 DUP2 ADD SWAP1 PUSH2 0x1263 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD2F JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xD00 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 0xD05 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xD27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x11D4 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x7C8 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0xD93 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xDBF JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xDDD JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xDF5 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xE09 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xE1B JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x2A2 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x67A DUP2 PUSH2 0xE2C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE7A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE62 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xE9B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xE5F 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 0x67A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE83 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xED4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xEF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF13 DUP4 PUSH2 0xEDB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF3F DUP5 PUSH2 0xEDB JUMP JUMPDEST SWAP3 POP PUSH2 0xF4D PUSH1 0x20 DUP6 ADD PUSH2 0xEDB JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x67A DUP3 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF94 DUP4 PUSH2 0xEDB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 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 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xFE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFE9 DUP6 PUSH2 0xEDB JUMP JUMPDEST SWAP4 POP PUSH2 0xFF7 PUSH1 0x20 DUP7 ADD PUSH2 0xEDB JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x101B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x102F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1041 JUMPI PUSH2 0x1041 PUSH2 0xFB4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1069 JUMPI PUSH2 0x1069 PUSH2 0xFB4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1082 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10C2 DUP4 PUSH2 0xEDB JUMP JUMPDEST SWAP2 POP PUSH2 0x10D0 PUSH1 0x20 DUP5 ADD PUSH2 0xEDB JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x10ED JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x110D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1172 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xE5F JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1186 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xE5F JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1259 SWAP1 DUP4 ADD DUP5 PUSH2 0xE83 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x67A DUP2 PUSH2 0xE2C JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY 0x5C 0x29 0xBC 0xC PUSH7 0x11A8B7A6B12C19 LOG3 MUL 0xBC SLT INVALID 0xE5 0xE3 DUP1 PUSH8 0x2B063F2B72A4F2FF 0xCD PUSH12 0x64736F6C6343000811003300 ","sourceMap":"117:263:28:-:0;;;199:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;262:5;269:7;1456:5:6;:13;262:5:28;1456::6;:13;:::i;:::-;-1:-1:-1;1479:7:6;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;199:86:28;;117:263;;14:127:29;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:29;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:29;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:29:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:29;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:29;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:29;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:29;;;3992:26;3943:89;-1:-1:-1;;2747:1:29;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:29;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:29;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:29;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:29:o;:::-;117:263:28;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_1768":{"entryPoint":null,"id":1768,"parameterSlots":4,"returnSlots":0},"@_approve_1634":{"entryPoint":1763,"id":1634,"parameterSlots":2,"returnSlots":0},"@_baseURI_1071":{"entryPoint":null,"id":1071,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_1755":{"entryPoint":null,"id":1755,"parameterSlots":4,"returnSlots":0},"@_checkOnERC721Received_1742":{"entryPoint":3155,"id":1742,"parameterSlots":4,"returnSlots":1},"@_exists_1303":{"entryPoint":null,"id":1303,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_1337":{"entryPoint":1873,"id":1337,"parameterSlots":2,"returnSlots":1},"@_mint_1458":{"entryPoint":2356,"id":1458,"parameterSlots":2,"returnSlots":0},"@_msgSender_2287":{"entryPoint":null,"id":2287,"parameterSlots":0,"returnSlots":1},"@_ownerOf_1285":{"entryPoint":null,"id":1285,"parameterSlots":1,"returnSlots":1},"@_requireMinted_1680":{"entryPoint":1665,"id":1680,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_1272":{"entryPoint":2957,"id":1272,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_1666":{"entryPoint":2751,"id":1666,"parameterSlots":3,"returnSlots":0},"@_transfer_1610":{"entryPoint":2000,"id":1610,"parameterSlots":3,"returnSlots":0},"@approve_1114":{"entryPoint":865,"id":1114,"parameterSlots":2,"returnSlots":0},"@balanceOf_975":{"entryPoint":1333,"id":975,"parameterSlots":1,"returnSlots":1},"@getApproved_1132":{"entryPoint":826,"id":1132,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_1167":{"entryPoint":null,"id":1167,"parameterSlots":2,"returnSlots":1},"@isContract_1963":{"entryPoint":null,"id":1963,"parameterSlots":1,"returnSlots":1},"@log10_3265":{"entryPoint":3412,"id":3265,"parameterSlots":1,"returnSlots":1},"@mint_5588":{"entryPoint":1196,"id":5588,"parameterSlots":2,"returnSlots":0},"@name_1013":{"entryPoint":680,"id":1013,"parameterSlots":0,"returnSlots":1},"@ownerOf_1003":{"entryPoint":1237,"id":1003,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_1213":{"entryPoint":1210,"id":1213,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_1243":{"entryPoint":1493,"id":1243,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_1149":{"entryPoint":1482,"id":1149,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2549":{"entryPoint":null,"id":2549,"parameterSlots":1,"returnSlots":1},"@supportsInterface_951":{"entryPoint":598,"id":951,"parameterSlots":1,"returnSlots":1},"@symbol_1023":{"entryPoint":1467,"id":1023,"parameterSlots":0,"returnSlots":1},"@toString_2356":{"entryPoint":3008,"id":2356,"parameterSlots":1,"returnSlots":1},"@tokenURI_1062":{"entryPoint":1549,"id":1062,"parameterSlots":1,"returnSlots":1},"@transferFrom_1194":{"entryPoint":1147,"id":1194,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":3803,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":3933,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4262,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":3873,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":4042,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3960,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":3831,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":3650,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":4707,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":3778,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":3715,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4448,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":4646,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3759,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4371,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4564,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4495,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__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},"copy_memory_to_memory_with_cleanup":{"entryPoint":3679,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4313,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4020,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":3628,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10850:29","statements":[{"nodeType":"YulBlock","src":"6:3:29","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:87:29","statements":[{"body":{"nodeType":"YulBlock","src":"123:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"132:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"135:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"125:6:29"},"nodeType":"YulFunctionCall","src":"125:12:29"},"nodeType":"YulExpressionStatement","src":"125:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"108:10:29","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"99:3:29"},"nodeType":"YulFunctionCall","src":"99:20:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:29"},"nodeType":"YulFunctionCall","src":"88:32:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:29"},"nodeType":"YulFunctionCall","src":"78:43:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:29"},"nodeType":"YulFunctionCall","src":"71:51:29"},"nodeType":"YulIf","src":"68:71:29"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:29","type":""}],"src":"14:131:29"},{"body":{"nodeType":"YulBlock","src":"219:176:29","statements":[{"body":{"nodeType":"YulBlock","src":"265:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"274:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"277:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"267:6:29"},"nodeType":"YulFunctionCall","src":"267:12:29"},"nodeType":"YulExpressionStatement","src":"267:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"240:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"249:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"236:3:29"},"nodeType":"YulFunctionCall","src":"236:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"261:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"232:3:29"},"nodeType":"YulFunctionCall","src":"232:32:29"},"nodeType":"YulIf","src":"229:52:29"},{"nodeType":"YulVariableDeclaration","src":"290:36:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"316:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"303:12:29"},"nodeType":"YulFunctionCall","src":"303:23:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"294:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"359:5:29"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"335:23:29"},"nodeType":"YulFunctionCall","src":"335:30:29"},"nodeType":"YulExpressionStatement","src":"335:30:29"},{"nodeType":"YulAssignment","src":"374:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"384:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"374:6:29"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"185:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"196:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"208:6:29","type":""}],"src":"150:245:29"},{"body":{"nodeType":"YulBlock","src":"495:92:29","statements":[{"nodeType":"YulAssignment","src":"505:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"517:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"528:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"513:3:29"},"nodeType":"YulFunctionCall","src":"513:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"505:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"547:9:29"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"572:6:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"565:6:29"},"nodeType":"YulFunctionCall","src":"565:14:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"558:6:29"},"nodeType":"YulFunctionCall","src":"558:22:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"540:6:29"},"nodeType":"YulFunctionCall","src":"540:41:29"},"nodeType":"YulExpressionStatement","src":"540:41:29"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"464:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"475:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"486:4:29","type":""}],"src":"400:187:29"},{"body":{"nodeType":"YulBlock","src":"658:184:29","statements":[{"nodeType":"YulVariableDeclaration","src":"668:10:29","value":{"kind":"number","nodeType":"YulLiteral","src":"677:1:29","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"672:1:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"737:63:29","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"762:3:29"},{"name":"i","nodeType":"YulIdentifier","src":"767:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"758:3:29"},"nodeType":"YulFunctionCall","src":"758:11:29"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"781:3:29"},{"name":"i","nodeType":"YulIdentifier","src":"786:1:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:29"},"nodeType":"YulFunctionCall","src":"777:11:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"771:5:29"},"nodeType":"YulFunctionCall","src":"771:18:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"751:6:29"},"nodeType":"YulFunctionCall","src":"751:39:29"},"nodeType":"YulExpressionStatement","src":"751:39:29"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"698:1:29"},{"name":"length","nodeType":"YulIdentifier","src":"701:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"695:2:29"},"nodeType":"YulFunctionCall","src":"695:13:29"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"709:19:29","statements":[{"nodeType":"YulAssignment","src":"711:15:29","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"720:1:29"},{"kind":"number","nodeType":"YulLiteral","src":"723:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"716:3:29"},"nodeType":"YulFunctionCall","src":"716:10:29"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"711:1:29"}]}]},"pre":{"nodeType":"YulBlock","src":"691:3:29","statements":[]},"src":"687:113:29"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"820:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"825:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"816:3:29"},"nodeType":"YulFunctionCall","src":"816:16:29"},{"kind":"number","nodeType":"YulLiteral","src":"834:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"809:6:29"},"nodeType":"YulFunctionCall","src":"809:27:29"},"nodeType":"YulExpressionStatement","src":"809:27:29"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"636:3:29","type":""},{"name":"dst","nodeType":"YulTypedName","src":"641:3:29","type":""},{"name":"length","nodeType":"YulTypedName","src":"646:6:29","type":""}],"src":"592:250:29"},{"body":{"nodeType":"YulBlock","src":"897:221:29","statements":[{"nodeType":"YulVariableDeclaration","src":"907:26:29","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"927:5:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"921:5:29"},"nodeType":"YulFunctionCall","src":"921:12:29"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"911:6:29","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"949:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"954:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"942:6:29"},"nodeType":"YulFunctionCall","src":"942:19:29"},"nodeType":"YulExpressionStatement","src":"942:19:29"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1009:5:29"},{"kind":"number","nodeType":"YulLiteral","src":"1016:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1005:3:29"},"nodeType":"YulFunctionCall","src":"1005:16:29"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1027:3:29"},{"kind":"number","nodeType":"YulLiteral","src":"1032:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1023:3:29"},"nodeType":"YulFunctionCall","src":"1023:14:29"},{"name":"length","nodeType":"YulIdentifier","src":"1039:6:29"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"970:34:29"},"nodeType":"YulFunctionCall","src":"970:76:29"},"nodeType":"YulExpressionStatement","src":"970:76:29"},{"nodeType":"YulAssignment","src":"1055:57:29","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1070:3:29"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1083:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"1091:2:29","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1079:3:29"},"nodeType":"YulFunctionCall","src":"1079:15:29"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1100:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1096:3:29"},"nodeType":"YulFunctionCall","src":"1096:7:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1075:3:29"},"nodeType":"YulFunctionCall","src":"1075:29:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1066:3:29"},"nodeType":"YulFunctionCall","src":"1066:39:29"},{"kind":"number","nodeType":"YulLiteral","src":"1107:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1062:3:29"},"nodeType":"YulFunctionCall","src":"1062:50:29"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1055:3:29"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"874:5:29","type":""},{"name":"pos","nodeType":"YulTypedName","src":"881:3:29","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"889:3:29","type":""}],"src":"847:271:29"},{"body":{"nodeType":"YulBlock","src":"1244:99:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1261:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1272:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1254:6:29"},"nodeType":"YulFunctionCall","src":"1254:21:29"},"nodeType":"YulExpressionStatement","src":"1254:21:29"},{"nodeType":"YulAssignment","src":"1284:53:29","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1310:6:29"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1322:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1333:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1318:3:29"},"nodeType":"YulFunctionCall","src":"1318:18:29"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1292:17:29"},"nodeType":"YulFunctionCall","src":"1292:45:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1284:4:29"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1213:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1224:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1235:4:29","type":""}],"src":"1123:220:29"},{"body":{"nodeType":"YulBlock","src":"1418:110:29","statements":[{"body":{"nodeType":"YulBlock","src":"1464:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1473:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1476:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1466:6:29"},"nodeType":"YulFunctionCall","src":"1466:12:29"},"nodeType":"YulExpressionStatement","src":"1466:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1439:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"1448:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1435:3:29"},"nodeType":"YulFunctionCall","src":"1435:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"1460:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1431:3:29"},"nodeType":"YulFunctionCall","src":"1431:32:29"},"nodeType":"YulIf","src":"1428:52:29"},{"nodeType":"YulAssignment","src":"1489:33:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1512:9:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1499:12:29"},"nodeType":"YulFunctionCall","src":"1499:23:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1489:6:29"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1384:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1395:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1407:6:29","type":""}],"src":"1348:180:29"},{"body":{"nodeType":"YulBlock","src":"1634:102:29","statements":[{"nodeType":"YulAssignment","src":"1644:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1656:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"1667:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1652:3:29"},"nodeType":"YulFunctionCall","src":"1652:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1644:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1686:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1701:6:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1717:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1722:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1713:3:29"},"nodeType":"YulFunctionCall","src":"1713:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"1726:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1709:3:29"},"nodeType":"YulFunctionCall","src":"1709:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1697:3:29"},"nodeType":"YulFunctionCall","src":"1697:32:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1679:6:29"},"nodeType":"YulFunctionCall","src":"1679:51:29"},"nodeType":"YulExpressionStatement","src":"1679:51:29"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1603:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1614:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1625:4:29","type":""}],"src":"1533:203:29"},{"body":{"nodeType":"YulBlock","src":"1790:124:29","statements":[{"nodeType":"YulAssignment","src":"1800:29:29","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1822:6:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1809:12:29"},"nodeType":"YulFunctionCall","src":"1809:20:29"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1800:5:29"}]},{"body":{"nodeType":"YulBlock","src":"1892:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1901:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1904:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1894:6:29"},"nodeType":"YulFunctionCall","src":"1894:12:29"},"nodeType":"YulExpressionStatement","src":"1894:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1851:5:29"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1862:5:29"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1877:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1882:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1873:3:29"},"nodeType":"YulFunctionCall","src":"1873:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"1886:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1869:3:29"},"nodeType":"YulFunctionCall","src":"1869:19:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1858:3:29"},"nodeType":"YulFunctionCall","src":"1858:31:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1848:2:29"},"nodeType":"YulFunctionCall","src":"1848:42:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1841:6:29"},"nodeType":"YulFunctionCall","src":"1841:50:29"},"nodeType":"YulIf","src":"1838:70:29"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1769:6:29","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1780:5:29","type":""}],"src":"1741:173:29"},{"body":{"nodeType":"YulBlock","src":"2006:167:29","statements":[{"body":{"nodeType":"YulBlock","src":"2052:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2061:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2064:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2054:6:29"},"nodeType":"YulFunctionCall","src":"2054:12:29"},"nodeType":"YulExpressionStatement","src":"2054:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2027:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2036:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2023:3:29"},"nodeType":"YulFunctionCall","src":"2023:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2048:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2019:3:29"},"nodeType":"YulFunctionCall","src":"2019:32:29"},"nodeType":"YulIf","src":"2016:52:29"},{"nodeType":"YulAssignment","src":"2077:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2106:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2087:18:29"},"nodeType":"YulFunctionCall","src":"2087:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2077:6:29"}]},{"nodeType":"YulAssignment","src":"2125:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2152:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2163:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2148:3:29"},"nodeType":"YulFunctionCall","src":"2148:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2135:12:29"},"nodeType":"YulFunctionCall","src":"2135:32:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2125:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1964:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1975:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1987:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1995:6:29","type":""}],"src":"1919:254:29"},{"body":{"nodeType":"YulBlock","src":"2282:224:29","statements":[{"body":{"nodeType":"YulBlock","src":"2328:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2337:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2340:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2330:6:29"},"nodeType":"YulFunctionCall","src":"2330:12:29"},"nodeType":"YulExpressionStatement","src":"2330:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2303:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2312:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2299:3:29"},"nodeType":"YulFunctionCall","src":"2299:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2324:2:29","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2295:3:29"},"nodeType":"YulFunctionCall","src":"2295:32:29"},"nodeType":"YulIf","src":"2292:52:29"},{"nodeType":"YulAssignment","src":"2353:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2382:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2363:18:29"},"nodeType":"YulFunctionCall","src":"2363:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2353:6:29"}]},{"nodeType":"YulAssignment","src":"2401:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2434:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2445:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2430:3:29"},"nodeType":"YulFunctionCall","src":"2430:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2411:18:29"},"nodeType":"YulFunctionCall","src":"2411:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2401:6:29"}]},{"nodeType":"YulAssignment","src":"2458:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2485:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2496:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2481:3:29"},"nodeType":"YulFunctionCall","src":"2481:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2468:12:29"},"nodeType":"YulFunctionCall","src":"2468:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2458:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2232:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2243:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2255:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2263:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2271:6:29","type":""}],"src":"2178:328:29"},{"body":{"nodeType":"YulBlock","src":"2581:116:29","statements":[{"body":{"nodeType":"YulBlock","src":"2627:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2636:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2639:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2629:6:29"},"nodeType":"YulFunctionCall","src":"2629:12:29"},"nodeType":"YulExpressionStatement","src":"2629:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2602:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2611:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2598:3:29"},"nodeType":"YulFunctionCall","src":"2598:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"2623:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2594:3:29"},"nodeType":"YulFunctionCall","src":"2594:32:29"},"nodeType":"YulIf","src":"2591:52:29"},{"nodeType":"YulAssignment","src":"2652:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2681:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2662:18:29"},"nodeType":"YulFunctionCall","src":"2662:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2652:6:29"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2547:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2558:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2570:6:29","type":""}],"src":"2511:186:29"},{"body":{"nodeType":"YulBlock","src":"2803:76:29","statements":[{"nodeType":"YulAssignment","src":"2813:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2825:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"2836:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2821:3:29"},"nodeType":"YulFunctionCall","src":"2821:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2813:4:29"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2855:9:29"},{"name":"value0","nodeType":"YulIdentifier","src":"2866:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2848:6:29"},"nodeType":"YulFunctionCall","src":"2848:25:29"},"nodeType":"YulExpressionStatement","src":"2848:25:29"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2772:9:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2783:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2794:4:29","type":""}],"src":"2702:177:29"},{"body":{"nodeType":"YulBlock","src":"2968:263:29","statements":[{"body":{"nodeType":"YulBlock","src":"3014:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3023:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3026:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3016:6:29"},"nodeType":"YulFunctionCall","src":"3016:12:29"},"nodeType":"YulExpressionStatement","src":"3016:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2989:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"2998:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2985:3:29"},"nodeType":"YulFunctionCall","src":"2985:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"3010:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2981:3:29"},"nodeType":"YulFunctionCall","src":"2981:32:29"},"nodeType":"YulIf","src":"2978:52:29"},{"nodeType":"YulAssignment","src":"3039:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3068:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3049:18:29"},"nodeType":"YulFunctionCall","src":"3049:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3039:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3087:45:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3117:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3128:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3113:3:29"},"nodeType":"YulFunctionCall","src":"3113:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3100:12:29"},"nodeType":"YulFunctionCall","src":"3100:32:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3091:5:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3185:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3194:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3197:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3187:6:29"},"nodeType":"YulFunctionCall","src":"3187:12:29"},"nodeType":"YulExpressionStatement","src":"3187:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3154:5:29"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3175:5:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3168:6:29"},"nodeType":"YulFunctionCall","src":"3168:13:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3161:6:29"},"nodeType":"YulFunctionCall","src":"3161:21:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3151:2:29"},"nodeType":"YulFunctionCall","src":"3151:32:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3144:6:29"},"nodeType":"YulFunctionCall","src":"3144:40:29"},"nodeType":"YulIf","src":"3141:60:29"},{"nodeType":"YulAssignment","src":"3210:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"3220:5:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3210:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2926:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2937:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2949:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2957:6:29","type":""}],"src":"2884:347:29"},{"body":{"nodeType":"YulBlock","src":"3268:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3285:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3292:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3297:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3288:3:29"},"nodeType":"YulFunctionCall","src":"3288:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3278:6:29"},"nodeType":"YulFunctionCall","src":"3278:31:29"},"nodeType":"YulExpressionStatement","src":"3278:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3325:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3328:4:29","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3318:6:29"},"nodeType":"YulFunctionCall","src":"3318:15:29"},"nodeType":"YulExpressionStatement","src":"3318:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3349:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3352:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3342:6:29"},"nodeType":"YulFunctionCall","src":"3342:15:29"},"nodeType":"YulExpressionStatement","src":"3342:15:29"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3236:127:29"},{"body":{"nodeType":"YulBlock","src":"3498:1008:29","statements":[{"body":{"nodeType":"YulBlock","src":"3545:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3554:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3557:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3547:6:29"},"nodeType":"YulFunctionCall","src":"3547:12:29"},"nodeType":"YulExpressionStatement","src":"3547:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3519:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"3528:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3515:3:29"},"nodeType":"YulFunctionCall","src":"3515:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"3540:3:29","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3511:3:29"},"nodeType":"YulFunctionCall","src":"3511:33:29"},"nodeType":"YulIf","src":"3508:53:29"},{"nodeType":"YulAssignment","src":"3570:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3599:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3580:18:29"},"nodeType":"YulFunctionCall","src":"3580:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3570:6:29"}]},{"nodeType":"YulAssignment","src":"3618:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3651:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3662:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3647:3:29"},"nodeType":"YulFunctionCall","src":"3647:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3628:18:29"},"nodeType":"YulFunctionCall","src":"3628:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3618:6:29"}]},{"nodeType":"YulAssignment","src":"3675:42:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3702:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3713:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3698:3:29"},"nodeType":"YulFunctionCall","src":"3698:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3685:12:29"},"nodeType":"YulFunctionCall","src":"3685:32:29"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3675:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"3726:46:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3757:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"3768:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3753:3:29"},"nodeType":"YulFunctionCall","src":"3753:18:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3740:12:29"},"nodeType":"YulFunctionCall","src":"3740:32:29"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3730:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3781:28:29","value":{"kind":"number","nodeType":"YulLiteral","src":"3791:18:29","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3785:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3836:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3845:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3848:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3838:6:29"},"nodeType":"YulFunctionCall","src":"3838:12:29"},"nodeType":"YulExpressionStatement","src":"3838:12:29"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3824:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"3832:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3821:2:29"},"nodeType":"YulFunctionCall","src":"3821:14:29"},"nodeType":"YulIf","src":"3818:34:29"},{"nodeType":"YulVariableDeclaration","src":"3861:32:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3875:9:29"},{"name":"offset","nodeType":"YulIdentifier","src":"3886:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3871:3:29"},"nodeType":"YulFunctionCall","src":"3871:22:29"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3865:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"3941:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3950:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3953:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3943:6:29"},"nodeType":"YulFunctionCall","src":"3943:12:29"},"nodeType":"YulExpressionStatement","src":"3943:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3920:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"3924:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3916:3:29"},"nodeType":"YulFunctionCall","src":"3916:13:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3931:7:29"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3912:3:29"},"nodeType":"YulFunctionCall","src":"3912:27:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3905:6:29"},"nodeType":"YulFunctionCall","src":"3905:35:29"},"nodeType":"YulIf","src":"3902:55:29"},{"nodeType":"YulVariableDeclaration","src":"3966:26:29","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3989:2:29"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3976:12:29"},"nodeType":"YulFunctionCall","src":"3976:16:29"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"3970:2:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"4015:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4017:16:29"},"nodeType":"YulFunctionCall","src":"4017:18:29"},"nodeType":"YulExpressionStatement","src":"4017:18:29"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4007:2:29"},{"name":"_1","nodeType":"YulIdentifier","src":"4011:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4004:2:29"},"nodeType":"YulFunctionCall","src":"4004:10:29"},"nodeType":"YulIf","src":"4001:36:29"},{"nodeType":"YulVariableDeclaration","src":"4046:17:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4060:2:29","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4056:3:29"},"nodeType":"YulFunctionCall","src":"4056:7:29"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4050:2:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4072:23:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4092:2:29","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4086:5:29"},"nodeType":"YulFunctionCall","src":"4086:9:29"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4076:6:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4104:71:29","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4126:6:29"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4150:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"4154:4:29","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4146:3:29"},"nodeType":"YulFunctionCall","src":"4146:13:29"},{"name":"_4","nodeType":"YulIdentifier","src":"4161:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4142:3:29"},"nodeType":"YulFunctionCall","src":"4142:22:29"},{"kind":"number","nodeType":"YulLiteral","src":"4166:2:29","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4138:3:29"},"nodeType":"YulFunctionCall","src":"4138:31:29"},{"name":"_4","nodeType":"YulIdentifier","src":"4171:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4134:3:29"},"nodeType":"YulFunctionCall","src":"4134:40:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4122:3:29"},"nodeType":"YulFunctionCall","src":"4122:53:29"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4108:10:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"4234:22:29","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4236:16:29"},"nodeType":"YulFunctionCall","src":"4236:18:29"},"nodeType":"YulExpressionStatement","src":"4236:18:29"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4193:10:29"},{"name":"_1","nodeType":"YulIdentifier","src":"4205:2:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4190:2:29"},"nodeType":"YulFunctionCall","src":"4190:18:29"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4213:10:29"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4225:6:29"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4210:2:29"},"nodeType":"YulFunctionCall","src":"4210:22:29"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4187:2:29"},"nodeType":"YulFunctionCall","src":"4187:46:29"},"nodeType":"YulIf","src":"4184:72:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4272:2:29","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4276:10:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4265:6:29"},"nodeType":"YulFunctionCall","src":"4265:22:29"},"nodeType":"YulExpressionStatement","src":"4265:22:29"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4303:6:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4311:2:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4296:6:29"},"nodeType":"YulFunctionCall","src":"4296:18:29"},"nodeType":"YulExpressionStatement","src":"4296:18:29"},{"body":{"nodeType":"YulBlock","src":"4360:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4369:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4372:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4362:6:29"},"nodeType":"YulFunctionCall","src":"4362:12:29"},"nodeType":"YulExpressionStatement","src":"4362:12:29"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4337:2:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4341:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4333:3:29"},"nodeType":"YulFunctionCall","src":"4333:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"4346:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4329:3:29"},"nodeType":"YulFunctionCall","src":"4329:20:29"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4351:7:29"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4326:2:29"},"nodeType":"YulFunctionCall","src":"4326:33:29"},"nodeType":"YulIf","src":"4323:53:29"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4402:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4410:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4398:3:29"},"nodeType":"YulFunctionCall","src":"4398:15:29"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4419:2:29"},{"kind":"number","nodeType":"YulLiteral","src":"4423:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4415:3:29"},"nodeType":"YulFunctionCall","src":"4415:11:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4428:2:29"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4385:12:29"},"nodeType":"YulFunctionCall","src":"4385:46:29"},"nodeType":"YulExpressionStatement","src":"4385:46:29"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4455:6:29"},{"name":"_3","nodeType":"YulIdentifier","src":"4463:2:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4451:3:29"},"nodeType":"YulFunctionCall","src":"4451:15:29"},{"kind":"number","nodeType":"YulLiteral","src":"4468:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4447:3:29"},"nodeType":"YulFunctionCall","src":"4447:24:29"},{"kind":"number","nodeType":"YulLiteral","src":"4473:1:29","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4440:6:29"},"nodeType":"YulFunctionCall","src":"4440:35:29"},"nodeType":"YulExpressionStatement","src":"4440:35:29"},{"nodeType":"YulAssignment","src":"4484:16:29","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4494:6:29"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4484:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3440:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3451:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3463:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3471:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3479:6:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3487:6:29","type":""}],"src":"3368:1138:29"},{"body":{"nodeType":"YulBlock","src":"4598:173:29","statements":[{"body":{"nodeType":"YulBlock","src":"4644:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4653:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4656:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4646:6:29"},"nodeType":"YulFunctionCall","src":"4646:12:29"},"nodeType":"YulExpressionStatement","src":"4646:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4619:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"4628:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4615:3:29"},"nodeType":"YulFunctionCall","src":"4615:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"4640:2:29","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4611:3:29"},"nodeType":"YulFunctionCall","src":"4611:32:29"},"nodeType":"YulIf","src":"4608:52:29"},{"nodeType":"YulAssignment","src":"4669:39:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4698:9:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4679:18:29"},"nodeType":"YulFunctionCall","src":"4679:29:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4669:6:29"}]},{"nodeType":"YulAssignment","src":"4717:48:29","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4750:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"4761:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4746:3:29"},"nodeType":"YulFunctionCall","src":"4746:18:29"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4727:18:29"},"nodeType":"YulFunctionCall","src":"4727:38:29"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4717:6:29"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4556:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4567:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4579:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4587:6:29","type":""}],"src":"4511:260:29"},{"body":{"nodeType":"YulBlock","src":"4831:325:29","statements":[{"nodeType":"YulAssignment","src":"4841:22:29","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4855:1:29","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"4858:4:29"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"4851:3:29"},"nodeType":"YulFunctionCall","src":"4851:12:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4841:6:29"}]},{"nodeType":"YulVariableDeclaration","src":"4872:38:29","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"4902:4:29"},{"kind":"number","nodeType":"YulLiteral","src":"4908:1:29","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4898:3:29"},"nodeType":"YulFunctionCall","src":"4898:12:29"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"4876:18:29","type":""}]},{"body":{"nodeType":"YulBlock","src":"4949:31:29","statements":[{"nodeType":"YulAssignment","src":"4951:27:29","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4965:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"4973:4:29","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4961:3:29"},"nodeType":"YulFunctionCall","src":"4961:17:29"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4951:6:29"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4929:18:29"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4922:6:29"},"nodeType":"YulFunctionCall","src":"4922:26:29"},"nodeType":"YulIf","src":"4919:61:29"},{"body":{"nodeType":"YulBlock","src":"5039:111:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5060:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5067:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"5072:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"5063:3:29"},"nodeType":"YulFunctionCall","src":"5063:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5053:6:29"},"nodeType":"YulFunctionCall","src":"5053:31:29"},"nodeType":"YulExpressionStatement","src":"5053:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5104:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5107:4:29","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5097:6:29"},"nodeType":"YulFunctionCall","src":"5097:15:29"},"nodeType":"YulExpressionStatement","src":"5097:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5132:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5135:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5125:6:29"},"nodeType":"YulFunctionCall","src":"5125:15:29"},"nodeType":"YulExpressionStatement","src":"5125:15:29"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4995:18:29"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5018:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"5026:2:29","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5015:2:29"},"nodeType":"YulFunctionCall","src":"5015:14:29"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4992:2:29"},"nodeType":"YulFunctionCall","src":"4992:38:29"},"nodeType":"YulIf","src":"4989:161:29"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"4811:4:29","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4820:6:29","type":""}],"src":"4776:380:29"},{"body":{"nodeType":"YulBlock","src":"5335:223:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5352:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5363:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5345:6:29"},"nodeType":"YulFunctionCall","src":"5345:21:29"},"nodeType":"YulExpressionStatement","src":"5345:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5386:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5397:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5382:3:29"},"nodeType":"YulFunctionCall","src":"5382:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5402:2:29","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5375:6:29"},"nodeType":"YulFunctionCall","src":"5375:30:29"},"nodeType":"YulExpressionStatement","src":"5375:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5425:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5436:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5421:3:29"},"nodeType":"YulFunctionCall","src":"5421:18:29"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"5441:34:29","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5414:6:29"},"nodeType":"YulFunctionCall","src":"5414:62:29"},"nodeType":"YulExpressionStatement","src":"5414:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5496:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5507:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5492:3:29"},"nodeType":"YulFunctionCall","src":"5492:18:29"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"5512:3:29","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5485:6:29"},"nodeType":"YulFunctionCall","src":"5485:31:29"},"nodeType":"YulExpressionStatement","src":"5485:31:29"},{"nodeType":"YulAssignment","src":"5525:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5537:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5548:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5533:3:29"},"nodeType":"YulFunctionCall","src":"5533:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5525:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5312:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5326:4:29","type":""}],"src":"5161:397:29"},{"body":{"nodeType":"YulBlock","src":"5737:251:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5754:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5765:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5747:6:29"},"nodeType":"YulFunctionCall","src":"5747:21:29"},"nodeType":"YulExpressionStatement","src":"5747:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5788:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5799:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5784:3:29"},"nodeType":"YulFunctionCall","src":"5784:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"5804:2:29","type":"","value":"61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5777:6:29"},"nodeType":"YulFunctionCall","src":"5777:30:29"},"nodeType":"YulExpressionStatement","src":"5777:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5827:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5838:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5823:3:29"},"nodeType":"YulFunctionCall","src":"5823:18:29"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"5843:34:29","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5816:6:29"},"nodeType":"YulFunctionCall","src":"5816:62:29"},"nodeType":"YulExpressionStatement","src":"5816:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5898:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5909:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5894:3:29"},"nodeType":"YulFunctionCall","src":"5894:18:29"},{"hexValue":"6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"5914:31:29","type":"","value":"ken owner or approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5887:6:29"},"nodeType":"YulFunctionCall","src":"5887:59:29"},"nodeType":"YulExpressionStatement","src":"5887:59:29"},{"nodeType":"YulAssignment","src":"5955:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5967:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"5978:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5963:3:29"},"nodeType":"YulFunctionCall","src":"5963:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5955:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5714:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5728:4:29","type":""}],"src":"5563:425:29"},{"body":{"nodeType":"YulBlock","src":"6167:235:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6184:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6195:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6177:6:29"},"nodeType":"YulFunctionCall","src":"6177:21:29"},"nodeType":"YulExpressionStatement","src":"6177:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6218:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6229:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6214:3:29"},"nodeType":"YulFunctionCall","src":"6214:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"6234:2:29","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6207:6:29"},"nodeType":"YulFunctionCall","src":"6207:30:29"},"nodeType":"YulExpressionStatement","src":"6207:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6257:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6268:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6253:3:29"},"nodeType":"YulFunctionCall","src":"6253:18:29"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"6273:34:29","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6246:6:29"},"nodeType":"YulFunctionCall","src":"6246:62:29"},"nodeType":"YulExpressionStatement","src":"6246:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6328:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6339:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6324:3:29"},"nodeType":"YulFunctionCall","src":"6324:18:29"},{"hexValue":"72206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"6344:15:29","type":"","value":"r or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6317:6:29"},"nodeType":"YulFunctionCall","src":"6317:43:29"},"nodeType":"YulExpressionStatement","src":"6317:43:29"},{"nodeType":"YulAssignment","src":"6369:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6381:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6392:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6377:3:29"},"nodeType":"YulFunctionCall","src":"6377:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6369:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6144:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6158:4:29","type":""}],"src":"5993:409:29"},{"body":{"nodeType":"YulBlock","src":"6581:174:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6598:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6609:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6591:6:29"},"nodeType":"YulFunctionCall","src":"6591:21:29"},"nodeType":"YulExpressionStatement","src":"6591:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6632:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6643:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6628:3:29"},"nodeType":"YulFunctionCall","src":"6628:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"6648:2:29","type":"","value":"24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6621:6:29"},"nodeType":"YulFunctionCall","src":"6621:30:29"},"nodeType":"YulExpressionStatement","src":"6621:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6671:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6682:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6667:3:29"},"nodeType":"YulFunctionCall","src":"6667:18:29"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"6687:26:29","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6660:6:29"},"nodeType":"YulFunctionCall","src":"6660:54:29"},"nodeType":"YulExpressionStatement","src":"6660:54:29"},{"nodeType":"YulAssignment","src":"6723:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6735:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6746:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6731:3:29"},"nodeType":"YulFunctionCall","src":"6731:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6723:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6558:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6572:4:29","type":""}],"src":"6407:348:29"},{"body":{"nodeType":"YulBlock","src":"6934:231:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6951:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6962:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6944:6:29"},"nodeType":"YulFunctionCall","src":"6944:21:29"},"nodeType":"YulExpressionStatement","src":"6944:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6985:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"6996:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6981:3:29"},"nodeType":"YulFunctionCall","src":"6981:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"7001:2:29","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6974:6:29"},"nodeType":"YulFunctionCall","src":"6974:30:29"},"nodeType":"YulExpressionStatement","src":"6974:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7024:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7035:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7020:3:29"},"nodeType":"YulFunctionCall","src":"7020:18:29"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"7040:34:29","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7013:6:29"},"nodeType":"YulFunctionCall","src":"7013:62:29"},"nodeType":"YulExpressionStatement","src":"7013:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7095:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7106:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7091:3:29"},"nodeType":"YulFunctionCall","src":"7091:18:29"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7111:11:29","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7084:6:29"},"nodeType":"YulFunctionCall","src":"7084:39:29"},"nodeType":"YulExpressionStatement","src":"7084:39:29"},{"nodeType":"YulAssignment","src":"7132:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7144:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7155:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7140:3:29"},"nodeType":"YulFunctionCall","src":"7140:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7132:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6911:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6925:4:29","type":""}],"src":"6760:405:29"},{"body":{"nodeType":"YulBlock","src":"7357:309:29","statements":[{"nodeType":"YulVariableDeclaration","src":"7367:27:29","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7387:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7381:5:29"},"nodeType":"YulFunctionCall","src":"7381:13:29"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7371:6:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7442:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"7450:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7438:3:29"},"nodeType":"YulFunctionCall","src":"7438:17:29"},{"name":"pos","nodeType":"YulIdentifier","src":"7457:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"7462:6:29"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7403:34:29"},"nodeType":"YulFunctionCall","src":"7403:66:29"},"nodeType":"YulExpressionStatement","src":"7403:66:29"},{"nodeType":"YulVariableDeclaration","src":"7478:29:29","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7495:3:29"},{"name":"length","nodeType":"YulIdentifier","src":"7500:6:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7491:3:29"},"nodeType":"YulFunctionCall","src":"7491:16:29"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"7482:5:29","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7516:29:29","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7538:6:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7532:5:29"},"nodeType":"YulFunctionCall","src":"7532:13:29"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"7520:8:29","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7593:6:29"},{"kind":"number","nodeType":"YulLiteral","src":"7601:4:29","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7589:3:29"},"nodeType":"YulFunctionCall","src":"7589:17:29"},{"name":"end_1","nodeType":"YulIdentifier","src":"7608:5:29"},{"name":"length_1","nodeType":"YulIdentifier","src":"7615:8:29"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7554:34:29"},"nodeType":"YulFunctionCall","src":"7554:70:29"},"nodeType":"YulExpressionStatement","src":"7554:70:29"},{"nodeType":"YulAssignment","src":"7633:27:29","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"7644:5:29"},{"name":"length_1","nodeType":"YulIdentifier","src":"7651:8:29"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7640:3:29"},"nodeType":"YulFunctionCall","src":"7640:20:29"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7633:3:29"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7325:3:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7330:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7338:6:29","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7349:3:29","type":""}],"src":"7170:496:29"},{"body":{"nodeType":"YulBlock","src":"7845:227:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7862:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7873:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7855:6:29"},"nodeType":"YulFunctionCall","src":"7855:21:29"},"nodeType":"YulExpressionStatement","src":"7855:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7896:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7907:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7892:3:29"},"nodeType":"YulFunctionCall","src":"7892:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"7912:2:29","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7885:6:29"},"nodeType":"YulFunctionCall","src":"7885:30:29"},"nodeType":"YulExpressionStatement","src":"7885:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7935:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"7946:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7931:3:29"},"nodeType":"YulFunctionCall","src":"7931:18:29"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"7951:34:29","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7924:6:29"},"nodeType":"YulFunctionCall","src":"7924:62:29"},"nodeType":"YulExpressionStatement","src":"7924:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8006:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8017:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8002:3:29"},"nodeType":"YulFunctionCall","src":"8002:18:29"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"8022:7:29","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7995:6:29"},"nodeType":"YulFunctionCall","src":"7995:35:29"},"nodeType":"YulExpressionStatement","src":"7995:35:29"},{"nodeType":"YulAssignment","src":"8039:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8051:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8062:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8047:3:29"},"nodeType":"YulFunctionCall","src":"8047:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8039:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7822:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7836:4:29","type":""}],"src":"7671:401:29"},{"body":{"nodeType":"YulBlock","src":"8251:226:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8268:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8279:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8261:6:29"},"nodeType":"YulFunctionCall","src":"8261:21:29"},"nodeType":"YulExpressionStatement","src":"8261:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8302:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8313:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8298:3:29"},"nodeType":"YulFunctionCall","src":"8298:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"8318:2:29","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8291:6:29"},"nodeType":"YulFunctionCall","src":"8291:30:29"},"nodeType":"YulExpressionStatement","src":"8291:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8341:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8352:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8337:3:29"},"nodeType":"YulFunctionCall","src":"8337:18:29"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"8357:34:29","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8330:6:29"},"nodeType":"YulFunctionCall","src":"8330:62:29"},"nodeType":"YulExpressionStatement","src":"8330:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8412:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8423:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8408:3:29"},"nodeType":"YulFunctionCall","src":"8408:18:29"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"8428:6:29","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8401:6:29"},"nodeType":"YulFunctionCall","src":"8401:34:29"},"nodeType":"YulExpressionStatement","src":"8401:34:29"},{"nodeType":"YulAssignment","src":"8444:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8456:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8467:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8452:3:29"},"nodeType":"YulFunctionCall","src":"8452:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8444:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8228:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8242:4:29","type":""}],"src":"8077:400:29"},{"body":{"nodeType":"YulBlock","src":"8656:182:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8673:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8684:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8666:6:29"},"nodeType":"YulFunctionCall","src":"8666:21:29"},"nodeType":"YulExpressionStatement","src":"8666:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8707:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8718:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8703:3:29"},"nodeType":"YulFunctionCall","src":"8703:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"8723:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8696:6:29"},"nodeType":"YulFunctionCall","src":"8696:30:29"},"nodeType":"YulExpressionStatement","src":"8696:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8746:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8757:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8742:3:29"},"nodeType":"YulFunctionCall","src":"8742:18:29"},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"8762:34:29","type":"","value":"ERC721: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8735:6:29"},"nodeType":"YulFunctionCall","src":"8735:62:29"},"nodeType":"YulExpressionStatement","src":"8735:62:29"},{"nodeType":"YulAssignment","src":"8806:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8818:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"8829:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8814:3:29"},"nodeType":"YulFunctionCall","src":"8814:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8806:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8633:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8647:4:29","type":""}],"src":"8482:356:29"},{"body":{"nodeType":"YulBlock","src":"9017:178:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9034:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9045:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9027:6:29"},"nodeType":"YulFunctionCall","src":"9027:21:29"},"nodeType":"YulExpressionStatement","src":"9027:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9068:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9079:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9064:3:29"},"nodeType":"YulFunctionCall","src":"9064:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"9084:2:29","type":"","value":"28"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9057:6:29"},"nodeType":"YulFunctionCall","src":"9057:30:29"},"nodeType":"YulExpressionStatement","src":"9057:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9107:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9118:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9103:3:29"},"nodeType":"YulFunctionCall","src":"9103:18:29"},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","kind":"string","nodeType":"YulLiteral","src":"9123:30:29","type":"","value":"ERC721: token already minted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9096:6:29"},"nodeType":"YulFunctionCall","src":"9096:58:29"},"nodeType":"YulExpressionStatement","src":"9096:58:29"},{"nodeType":"YulAssignment","src":"9163:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9175:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9186:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9171:3:29"},"nodeType":"YulFunctionCall","src":"9171:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9163:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8994:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9008:4:29","type":""}],"src":"8843:352:29"},{"body":{"nodeType":"YulBlock","src":"9374:175:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9391:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9402:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9384:6:29"},"nodeType":"YulFunctionCall","src":"9384:21:29"},"nodeType":"YulExpressionStatement","src":"9384:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9425:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9436:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9421:3:29"},"nodeType":"YulFunctionCall","src":"9421:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"9441:2:29","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9414:6:29"},"nodeType":"YulFunctionCall","src":"9414:30:29"},"nodeType":"YulExpressionStatement","src":"9414:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9464:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9475:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9460:3:29"},"nodeType":"YulFunctionCall","src":"9460:18:29"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"9480:27:29","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9453:6:29"},"nodeType":"YulFunctionCall","src":"9453:55:29"},"nodeType":"YulExpressionStatement","src":"9453:55:29"},{"nodeType":"YulAssignment","src":"9517:26:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9529:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9540:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9525:3:29"},"nodeType":"YulFunctionCall","src":"9525:18:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9517:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9351:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9365:4:29","type":""}],"src":"9200:349:29"},{"body":{"nodeType":"YulBlock","src":"9728:240:29","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9745:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9756:2:29","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9738:6:29"},"nodeType":"YulFunctionCall","src":"9738:21:29"},"nodeType":"YulExpressionStatement","src":"9738:21:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9779:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9790:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9775:3:29"},"nodeType":"YulFunctionCall","src":"9775:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"9795:2:29","type":"","value":"50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9768:6:29"},"nodeType":"YulFunctionCall","src":"9768:30:29"},"nodeType":"YulExpressionStatement","src":"9768:30:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9818:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9829:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9814:3:29"},"nodeType":"YulFunctionCall","src":"9814:18:29"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"9834:34:29","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9807:6:29"},"nodeType":"YulFunctionCall","src":"9807:62:29"},"nodeType":"YulExpressionStatement","src":"9807:62:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9889:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9900:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9885:3:29"},"nodeType":"YulFunctionCall","src":"9885:18:29"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"9905:20:29","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9878:6:29"},"nodeType":"YulFunctionCall","src":"9878:48:29"},"nodeType":"YulExpressionStatement","src":"9878:48:29"},{"nodeType":"YulAssignment","src":"9935:27:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9947:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"9958:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9943:3:29"},"nodeType":"YulFunctionCall","src":"9943:19:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9935:4:29"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9705:9:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9719:4:29","type":""}],"src":"9554:414:29"},{"body":{"nodeType":"YulBlock","src":"10005:95:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10022:1:29","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10029:3:29","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10034:10:29","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10025:3:29"},"nodeType":"YulFunctionCall","src":"10025:20:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10015:6:29"},"nodeType":"YulFunctionCall","src":"10015:31:29"},"nodeType":"YulExpressionStatement","src":"10015:31:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10062:1:29","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10065:4:29","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10055:6:29"},"nodeType":"YulFunctionCall","src":"10055:15:29"},"nodeType":"YulExpressionStatement","src":"10055:15:29"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10086:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10089:4:29","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10079:6:29"},"nodeType":"YulFunctionCall","src":"10079:15:29"},"nodeType":"YulExpressionStatement","src":"10079:15:29"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"9973:127:29"},{"body":{"nodeType":"YulBlock","src":"10308:286:29","statements":[{"nodeType":"YulVariableDeclaration","src":"10318:29:29","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10336:3:29","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"10341:1:29","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10332:3:29"},"nodeType":"YulFunctionCall","src":"10332:11:29"},{"kind":"number","nodeType":"YulLiteral","src":"10345:1:29","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10328:3:29"},"nodeType":"YulFunctionCall","src":"10328:19:29"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10322:2:29","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10363:9:29"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10378:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"10386:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10374:3:29"},"nodeType":"YulFunctionCall","src":"10374:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10356:6:29"},"nodeType":"YulFunctionCall","src":"10356:34:29"},"nodeType":"YulExpressionStatement","src":"10356:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10410:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10421:2:29","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10406:3:29"},"nodeType":"YulFunctionCall","src":"10406:18:29"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10430:6:29"},{"name":"_1","nodeType":"YulIdentifier","src":"10438:2:29"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10426:3:29"},"nodeType":"YulFunctionCall","src":"10426:15:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10399:6:29"},"nodeType":"YulFunctionCall","src":"10399:43:29"},"nodeType":"YulExpressionStatement","src":"10399:43:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10462:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10473:2:29","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10458:3:29"},"nodeType":"YulFunctionCall","src":"10458:18:29"},{"name":"value2","nodeType":"YulIdentifier","src":"10478:6:29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10451:6:29"},"nodeType":"YulFunctionCall","src":"10451:34:29"},"nodeType":"YulExpressionStatement","src":"10451:34:29"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10505:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10516:2:29","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10501:3:29"},"nodeType":"YulFunctionCall","src":"10501:18:29"},{"kind":"number","nodeType":"YulLiteral","src":"10521:3:29","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10494:6:29"},"nodeType":"YulFunctionCall","src":"10494:31:29"},"nodeType":"YulExpressionStatement","src":"10494:31:29"},{"nodeType":"YulAssignment","src":"10534:54:29","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"10560:6:29"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10572:9:29"},{"kind":"number","nodeType":"YulLiteral","src":"10583:3:29","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10568:3:29"},"nodeType":"YulFunctionCall","src":"10568:19:29"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"10542:17:29"},"nodeType":"YulFunctionCall","src":"10542:46:29"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10534:4:29"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10253:9:29","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10264:6:29","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10272:6:29","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10280:6:29","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10288:6:29","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10299:4:29","type":""}],"src":"10105:489:29"},{"body":{"nodeType":"YulBlock","src":"10679:169:29","statements":[{"body":{"nodeType":"YulBlock","src":"10725:16:29","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10734:1:29","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10737:1:29","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10727:6:29"},"nodeType":"YulFunctionCall","src":"10727:12:29"},"nodeType":"YulExpressionStatement","src":"10727:12:29"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10700:7:29"},{"name":"headStart","nodeType":"YulIdentifier","src":"10709:9:29"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10696:3:29"},"nodeType":"YulFunctionCall","src":"10696:23:29"},{"kind":"number","nodeType":"YulLiteral","src":"10721:2:29","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10692:3:29"},"nodeType":"YulFunctionCall","src":"10692:32:29"},"nodeType":"YulIf","src":"10689:52:29"},{"nodeType":"YulVariableDeclaration","src":"10750:29:29","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10769:9:29"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10763:5:29"},"nodeType":"YulFunctionCall","src":"10763:16:29"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10754:5:29","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10812:5:29"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"10788:23:29"},"nodeType":"YulFunctionCall","src":"10788:30:29"},"nodeType":"YulExpressionStatement","src":"10788:30:29"},{"nodeType":"YulAssignment","src":"10827:15:29","value":{"name":"value","nodeType":"YulIdentifier","src":"10837:5:29"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10827:6:29"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10645:9:29","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10656:7:29","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10668:6:29","type":""}],"src":"10599:249:29"}]},"contents":"{\n { }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function 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_string(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_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function 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_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let value := calldataload(add(headStart, 32))\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value1 := value\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_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value3 := memPtr\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 33)\n mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n mstore(add(headStart, 96), \"r\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 61)\n mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n mstore(add(headStart, 96), \"ken owner or approved for all\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 45)\n mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n mstore(add(headStart, 96), \"r or approved\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 24)\n mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 41)\n mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n mstore(add(headStart, 96), \"lid owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 37)\n mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n mstore(add(headStart, 96), \"owner\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 36)\n mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n mstore(add(headStart, 96), \"ress\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"ERC721: mint to the zero address\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 28)\n mstore(add(headStart, 64), \"ERC721: token already minted\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 25)\n mstore(add(headStart, 64), \"ERC721: approve to caller\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 50)\n mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n mstore(add(headStart, 96), \"ceiver implementer\")\n tail := add(headStart, 128)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n}","id":29,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101e1578063b88d4fde146101f4578063c87b56dd14610207578063e985e9c51461021a57600080fd5b80636352211e146101a557806370a08231146101b857806395d89b41146101d957600080fd5b8063095ea7b3116100c8578063095ea7b31461015757806323b872dd1461016c57806340c10f191461017f57806342842e0e1461019257600080fd5b806301ffc9a7146100ef57806306fdde0314610117578063081812fc1461012c575b600080fd5b6101026100fd366004610e42565b610256565b60405190151581526020015b60405180910390f35b61011f6102a8565b60405161010e9190610eaf565b61013f61013a366004610ec2565b61033a565b6040516001600160a01b03909116815260200161010e565b61016a610165366004610ef7565b610361565b005b61016a61017a366004610f21565b61047b565b61016a61018d366004610ef7565b6104ac565b61016a6101a0366004610f21565b6104ba565b61013f6101b3366004610ec2565b6104d5565b6101cb6101c6366004610f5d565b610535565b60405190815260200161010e565b61011f6105bb565b61016a6101ef366004610f78565b6105ca565b61016a610202366004610fca565b6105d5565b61011f610215366004610ec2565b61060d565b6101026102283660046110a6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061028757506001600160e01b03198216635b5e139f60e01b145b806102a257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102b7906110d9565b80601f01602080910402602001604051908101604052809291908181526020018280546102e3906110d9565b80156103305780601f1061030557610100808354040283529160200191610330565b820191906000526020600020905b81548152906001019060200180831161031357829003601f168201915b5050505050905090565b600061034582610681565b506000908152600460205260409020546001600160a01b031690565b600061036c826104d5565b9050806001600160a01b0316836001600160a01b0316036103de5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103fa57506103fa8133610228565b61046c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103d5565b61047683836106e3565b505050565b6104853382610751565b6104a15760405162461bcd60e51b81526004016103d590611113565b6104768383836107d0565b6104b68282610934565b5050565b610476838383604051806020016040528060008152506105d5565b6000818152600260205260408120546001600160a01b0316806102a25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b60006001600160a01b03821661059f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103d5565b506001600160a01b031660009081526003602052604090205490565b6060600180546102b7906110d9565b6104b6338383610abf565b6105df3383610751565b6105fb5760405162461bcd60e51b81526004016103d590611113565b61060784848484610b8d565b50505050565b606061061882610681565b600061062f60408051602081019091526000815290565b9050600081511161064f576040518060200160405280600081525061067a565b8061065984610bc0565b60405160200161066a929190611160565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106e05760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103d5565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610718826104d5565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061075d836104d5565b9050806001600160a01b0316846001600160a01b031614806107a457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107c85750836001600160a01b03166107bd8461033a565b6001600160a01b0316145b949350505050565b826001600160a01b03166107e3826104d5565b6001600160a01b0316146108095760405162461bcd60e51b81526004016103d59061118f565b6001600160a01b03821661086b5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103d5565b826001600160a01b031661087e826104d5565b6001600160a01b0316146108a45760405162461bcd60e51b81526004016103d59061118f565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b03821661098a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103d5565b6000818152600260205260409020546001600160a01b0316156109ef5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6000818152600260205260409020546001600160a01b031615610a545760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016103d5565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b031603610b205760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103d5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b988484846107d0565b610ba484848484610c53565b6106075760405162461bcd60e51b81526004016103d5906111d4565b60606000610bcd83610d54565b600101905060008167ffffffffffffffff811115610bed57610bed610fb4565b6040519080825280601f01601f191660200182016040528015610c17576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610c2157509392505050565b60006001600160a01b0384163b15610d4957604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610c97903390899088908890600401611226565b6020604051808303816000875af1925050508015610cd2575060408051601f3d908101601f19168201909252610ccf91810190611263565b60015b610d2f573d808015610d00576040519150601f19603f3d011682016040523d82523d6000602084013e610d05565b606091505b508051600003610d275760405162461bcd60e51b81526004016103d5906111d4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506107c8565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610d935772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610dbf576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610ddd57662386f26fc10000830492506010015b6305f5e1008310610df5576305f5e100830492506008015b6127108310610e0957612710830492506004015b60648310610e1b576064830492506002015b600a83106102a25760010192915050565b6001600160e01b0319811681146106e057600080fd5b600060208284031215610e5457600080fd5b813561067a81610e2c565b60005b83811015610e7a578181015183820152602001610e62565b50506000910152565b60008151808452610e9b816020860160208601610e5f565b601f01601f19169290920160200192915050565b60208152600061067a6020830184610e83565b600060208284031215610ed457600080fd5b5035919050565b80356001600160a01b0381168114610ef257600080fd5b919050565b60008060408385031215610f0a57600080fd5b610f1383610edb565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610edb565b9250610f4d60208501610edb565b9150604084013590509250925092565b600060208284031215610f6f57600080fd5b61067a82610edb565b60008060408385031215610f8b57600080fd5b610f9483610edb565b915060208301358015158114610fa957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610fe057600080fd5b610fe985610edb565b9350610ff760208601610edb565b925060408501359150606085013567ffffffffffffffff8082111561101b57600080fd5b818701915087601f83011261102f57600080fd5b81358181111561104157611041610fb4565b604051601f8201601f19908116603f0116810190838211818310171561106957611069610fb4565b816040528281528a602084870101111561108257600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156110b957600080fd5b6110c283610edb565b91506110d060208401610edb565b90509250929050565b600181811c908216806110ed57607f821691505b60208210810361110d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351611172818460208801610e5f565b835190830190611186818360208801610e5f565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061125990830184610e83565b9695505050505050565b60006020828403121561127557600080fd5b815161067a81610e2c56fea26469706673582212203e5c29bc0c6611a8b7a6b12c19a302bc12fee5e380672b063f2b72a4f2ffcd6b64736f6c63430008110033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1B8 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x17F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x12C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xE42 JUMP JUMPDEST PUSH2 0x256 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11F PUSH2 0x2A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10E SWAP2 SWAP1 PUSH2 0xEAF JUMP JUMPDEST PUSH2 0x13F PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0xEC2 JUMP JUMPDEST PUSH2 0x33A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0xEF7 JUMP JUMPDEST PUSH2 0x361 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16A PUSH2 0x17A CALLDATASIZE PUSH1 0x4 PUSH2 0xF21 JUMP JUMPDEST PUSH2 0x47B JUMP JUMPDEST PUSH2 0x16A PUSH2 0x18D CALLDATASIZE PUSH1 0x4 PUSH2 0xEF7 JUMP JUMPDEST PUSH2 0x4AC JUMP JUMPDEST PUSH2 0x16A PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0xF21 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST PUSH2 0x13F PUSH2 0x1B3 CALLDATASIZE PUSH1 0x4 PUSH2 0xEC2 JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x1C6 CALLDATASIZE PUSH1 0x4 PUSH2 0xF5D JUMP JUMPDEST PUSH2 0x535 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST PUSH2 0x11F PUSH2 0x5BB JUMP JUMPDEST PUSH2 0x16A PUSH2 0x1EF CALLDATASIZE PUSH1 0x4 PUSH2 0xF78 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST PUSH2 0x16A PUSH2 0x202 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCA JUMP JUMPDEST PUSH2 0x5D5 JUMP JUMPDEST PUSH2 0x11F PUSH2 0x215 CALLDATASIZE PUSH1 0x4 PUSH2 0xEC2 JUMP JUMPDEST PUSH2 0x60D JUMP JUMPDEST PUSH2 0x102 PUSH2 0x228 CALLDATASIZE PUSH1 0x4 PUSH2 0x10A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x287 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2A2 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x2B7 SWAP1 PUSH2 0x10D9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2E3 SWAP1 PUSH2 0x10D9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x330 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x305 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x330 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x313 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x345 DUP3 PUSH2 0x681 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36C DUP3 PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3FA JUMPI POP PUSH2 0x3FA DUP2 CALLER PUSH2 0x228 JUMP JUMPDEST PUSH2 0x46C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH2 0x476 DUP4 DUP4 PUSH2 0x6E3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x485 CALLER DUP3 PUSH2 0x751 JUMP JUMPDEST PUSH2 0x4A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0x476 DUP4 DUP4 DUP4 PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x4B6 DUP3 DUP3 PUSH2 0x934 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x476 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x5D5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x2A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x59F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3D5 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x2B7 SWAP1 PUSH2 0x10D9 JUMP JUMPDEST PUSH2 0x4B6 CALLER DUP4 DUP4 PUSH2 0xABF JUMP JUMPDEST PUSH2 0x5DF CALLER DUP4 PUSH2 0x751 JUMP JUMPDEST PUSH2 0x5FB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0x607 DUP5 DUP5 DUP5 DUP5 PUSH2 0xB8D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x618 DUP3 PUSH2 0x681 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x62F PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x64F JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x67A JUMP JUMPDEST DUP1 PUSH2 0x659 DUP5 PUSH2 0xBC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x66A SWAP3 SWAP2 SWAP1 PUSH2 0x1160 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x6E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x718 DUP3 PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x75D DUP4 PUSH2 0x4D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x7A4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x7C8 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7BD DUP5 PUSH2 0x33A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7E3 DUP3 PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x809 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x118F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x86B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3D5 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x87E DUP3 PUSH2 0x4D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8A4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x118F JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x98A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x9EF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xA54 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP5 DUP4 MSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xB20 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB98 DUP5 DUP5 DUP5 PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0xBA4 DUP5 DUP5 DUP5 DUP5 PUSH2 0xC53 JUMP JUMPDEST PUSH2 0x607 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x11D4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xBCD DUP4 PUSH2 0xD54 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBED JUMPI PUSH2 0xBED PUSH2 0xFB4 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC17 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xC21 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xD49 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xC97 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1226 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xCD2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xCCF SWAP2 DUP2 ADD SWAP1 PUSH2 0x1263 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xD2F JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xD00 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 0xD05 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xD27 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D5 SWAP1 PUSH2 0x11D4 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x7C8 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0xD93 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xDBF JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xDDD JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xDF5 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xE09 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xE1B JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x2A2 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x67A DUP2 PUSH2 0xE2C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE7A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE62 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xE9B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xE5F 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 0x67A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE83 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xED4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xEF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF13 DUP4 PUSH2 0xEDB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF3F DUP5 PUSH2 0xEDB JUMP JUMPDEST SWAP3 POP PUSH2 0xF4D PUSH1 0x20 DUP6 ADD PUSH2 0xEDB JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x67A DUP3 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF94 DUP4 PUSH2 0xEDB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 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 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xFE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFE9 DUP6 PUSH2 0xEDB JUMP JUMPDEST SWAP4 POP PUSH2 0xFF7 PUSH1 0x20 DUP7 ADD PUSH2 0xEDB JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x101B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x102F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1041 JUMPI PUSH2 0x1041 PUSH2 0xFB4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1069 JUMPI PUSH2 0x1069 PUSH2 0xFB4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1082 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10C2 DUP4 PUSH2 0xEDB JUMP JUMPDEST SWAP2 POP PUSH2 0x10D0 PUSH1 0x20 DUP5 ADD PUSH2 0xEDB JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x10ED JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x110D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH13 0x1C881BDC88185C1C1C9BDD9959 PUSH1 0x9A SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1172 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0xE5F JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1186 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0xE5F JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x40 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1259 SWAP1 DUP4 ADD DUP5 PUSH2 0xE83 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x67A DUP2 PUSH2 0xE2C JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY 0x5C 0x29 0xBC 0xC PUSH7 0x11A8B7A6B12C19 LOG3 MUL 0xBC SLT INVALID 0xE5 0xE3 DUP1 PUSH8 0x2B063F2B72A4F2FF 0xCD PUSH12 0x64736F6C6343000811003300 ","sourceMap":"117:263:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300:6;;;;;;:::i;:::-;;:::i;:::-;;;565:14:29;;558:22;540:41;;528:2;513:18;1570:300:6;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:29;;;1679:51;;1667:2;1652:18;3935:167:6;1533:203:29;3468:406:6;;;;;;:::i;:::-;;:::i;:::-;;4612:296;;;;;;:::i;:::-;;:::i;291:87:28:-;;;;;;:::i;:::-;;:::i;4974:149:6:-;;;;;;:::i;:::-;;:::i;2190:219::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2848:25:29;;;2836:2;2821:18;1929:204:6;2702:177:29;2633:102:6;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5189:276::-;;;;;;:::i;:::-;;:::i;2801:::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4508:25:6;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;-1:-1:-1;;;;;;1707:40:6;;-1:-1:-1;;;1707:40:6;;:104;;-1:-1:-1;;;;;;;1763:48:6;;-1:-1:-1;;;1763:48:6;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:13;;;1827:36:6;1688:175;1570:300;-1:-1:-1;;1570:300:6:o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:6;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:6;;3935:167::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;-1:-1:-1;;;;;3605:11:6;:2;-1:-1:-1;;;;;3605:11:6;;3597:57;;;;-1:-1:-1;;;3597:57:6;;5363:2:29;3597:57:6;;;5345:21:29;5402:2;5382:18;;;5375:30;5441:34;5421:18;;;5414:62;-1:-1:-1;;;5492:18:29;;;5485:31;5533:19;;3597:57:6;;;;;;;;;719:10:11;-1:-1:-1;;;;;3686:21:6;;;;:62;;-1:-1:-1;3711:37:6;3728:5;719:10:11;4388:162:6;:::i;3711:37::-;3665:170;;;;-1:-1:-1;;;3665:170:6;;5765:2:29;3665:170:6;;;5747:21:29;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;5914:31;5894:18;;;5887:59;5963:19;;3665:170:6;5563:425:29;3665:170:6;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:296::-;4771:41;719:10:11;4804:7:6;4771:18;:41::i;:::-;4763:99;;;;-1:-1:-1;;;4763:99:6;;;;;;;:::i;:::-;4873:28;4883:4;4889:2;4893:7;4873:9;:28::i;291:87:28:-;353:18;359:2;363:7;353:5;:18::i;:::-;291:87;;:::o;4974:149:6:-;5077:39;5094:4;5100:2;5104:7;5077:39;;;;;;;;;;;;:16;:39::i;2190:219::-;2262:7;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:6;;2324:56;;;;-1:-1:-1;;;2324:56:6;;6609:2:29;2324:56:6;;;6591:21:29;6648:2;6628:18;;;6621:30;-1:-1:-1;;;6667:18:29;;;6660:54;6731:18;;2324:56:6;6407:348:29;1929:204:6;2001:7;-1:-1:-1;;;;;2028:19:6;;2020:73;;;;-1:-1:-1;;;2020:73:6;;6962:2:29;2020:73:6;;;6944:21:29;7001:2;6981:18;;;6974:30;7040:34;7020:18;;;7013:62;-1:-1:-1;;;7091:18:29;;;7084:39;7140:19;;2020:73:6;6760:405:29;2020:73:6;-1:-1:-1;;;;;;2110:16:6;;;;;:9;:16;;;;;;;1929:204::o;2633:102::-;2689:13;2721:7;2714:14;;;;;:::i;4169:153::-;4263:52;719:10:11;4296:8:6;4306;4263:18;:52::i;5189:276::-;5319:41;719:10:11;5352:7:6;5319:18;:41::i;:::-;5311:99;;;;-1:-1:-1;;;5311:99:6;;;;;;;:::i;:::-;5420:38;5434:4;5440:2;5444:7;5453:4;5420:13;:38::i;:::-;5189:276;;;;:::o;2801:::-;2874:13;2899:23;2914:7;2899:14;:23::i;:::-;2933:21;2957:10;3395:9;;;;;;;;;-1:-1:-1;3395:9:6;;;3319:92;2957:10;2933:34;;3008:1;2990:7;2984:21;:25;:86;;;;;;;;;;;;;;;;;3036:7;3045:18;:7;:16;:18::i;:::-;3019:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2984:86;2977:93;2801:276;-1:-1:-1;;;2801:276:6:o;13240:133::-;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:6;13313:53;;;;-1:-1:-1;;;13313:53:6;;6609:2:29;13313:53:6;;;6591:21:29;6648:2;6628:18;;;6621:30;-1:-1:-1;;;6667:18:29;;;6660:54;6731:18;;13313:53:6;6407:348:29;13313:53:6;13240:133;:::o;12572:171::-;12646:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;12646:29:6;-1:-1:-1;;;;;12646:29:6;;;;;;;;:24;;12699:23;12646:24;12699:14;:23::i;:::-;-1:-1:-1;;;;;12690:46:6;;;;;;;;;;;12572:171;;:::o;7404:261::-;7497:4;7513:13;7529:23;7544:7;7529:14;:23::i;:::-;7513:39;;7581:5;-1:-1:-1;;;;;7570:16:6;:7;-1:-1:-1;;;;;7570:16:6;;:52;;;-1:-1:-1;;;;;;4508:25:6;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7590:32;7570:87;;;;7650:7;-1:-1:-1;;;;;7626:31:6;:20;7638:7;7626:11;:20::i;:::-;-1:-1:-1;;;;;7626:31:6;;7570:87;7562:96;7404:261;-1:-1:-1;;;;7404:261:6:o;11257:1203::-;11381:4;-1:-1:-1;;;;;11354:31:6;:23;11369:7;11354:14;:23::i;:::-;-1:-1:-1;;;;;11354:31:6;;11346:81;;;;-1:-1:-1;;;11346:81:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;11445:16:6;;11437:65;;;;-1:-1:-1;;;11437:65:6;;8279:2:29;11437:65:6;;;8261:21:29;8318:2;8298:18;;;8291:30;8357:34;8337:18;;;8330:62;-1:-1:-1;;;8408:18:29;;;8401:34;8452:19;;11437:65:6;8077:400:29;11437:65:6;11682:4;-1:-1:-1;;;;;11655:31:6;:23;11670:7;11655:14;:23::i;:::-;-1:-1:-1;;;;;11655:31:6;;11647:81;;;;-1:-1:-1;;;11647:81:6;;;;;;;:::i;:::-;11797:24;;;;:15;:24;;;;;;;;11790:31;;-1:-1:-1;;;;;;11790:31:6;;;;;;-1:-1:-1;;;;;12265:15:6;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12265:20:6;;;12299:13;;;;;;;;;:18;;11790:31;12299:18;;;12337:16;;;:7;:16;;;;;;:21;;;;;;;;;;12374:27;;11813:7;;12374:27;;;3538:336;3468:406;;:::o;8925:920::-;-1:-1:-1;;;;;9004:16:6;;8996:61;;;;-1:-1:-1;;;8996:61:6;;8684:2:29;8996:61:6;;;8666:21:29;;;8703:18;;;8696:30;8762:34;8742:18;;;8735:62;8814:18;;8996:61:6;8482:356:29;8996:61:6;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:6;7208:31;9067:58;;;;-1:-1:-1;;;9067:58:6;;9045:2:29;9067:58:6;;;9027:21:29;9084:2;9064:18;;;9057:30;9123;9103:18;;;9096:58;9171:18;;9067:58:6;8843:352:29;9067:58:6;7185:4;6794:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6794:16:6;7208:31;9271:58;;;;-1:-1:-1;;;9271:58:6;;9045:2:29;9271:58:6;;;9027:21:29;9084:2;9064:18;;;9057:30;9123;9103:18;;;9096:58;9171:18;;9271:58:6;8843:352:29;9271:58:6;-1:-1:-1;;;;;9671:13:6;;;;;;:9;:13;;;;;;;;:18;;9688:1;9671:18;;;9710:16;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9710:21:6;;;;;9747:33;9718:7;;9671:13;;9747:33;;9671:13;;9747:33;291:87:28;;:::o;12879:277:6:-;12999:8;-1:-1:-1;;;;;12990:17:6;:5;-1:-1:-1;;;;;12990:17:6;;12982:55;;;;-1:-1:-1;;;12982:55:6;;9402:2:29;12982:55:6;;;9384:21:29;9441:2;9421:18;;;9414:30;9480:27;9460:18;;;9453:55;9525:18;;12982:55:6;9200:349:29;12982:55:6;-1:-1:-1;;;;;13047:25:6;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;13047:46:6;;;;;;;;;;13108:41;;540::29;;;13108::6;;513:18:29;13108:41:6;;;;;;;12879:277;;;:::o;6326:267::-;6438:28;6448:4;6454:2;6458:7;6438:9;:28::i;:::-;6484:47;6507:4;6513:2;6517:7;6526:4;6484:22;:47::i;:::-;6476:110;;;;-1:-1:-1;;;6476:110:6;;;;;;;:::i;447:696:12:-;503:13;552:14;569:17;580:5;569:10;:17::i;:::-;589:1;569:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;627:18:12;-1:-1:-1;604:41:12;-1:-1:-1;765:28:12;;;781:2;765:28;820:280;-1:-1:-1;;851:5:12;-1:-1:-1;;;985:2:12;974:14;;969:30;851:5;956:44;1044:2;1035:11;;;-1:-1:-1;1064:21:12;820:280;1064:21;-1:-1:-1;1120:6:12;447:696;-1:-1:-1;;;447:696:12:o;13925:831:6:-;14074:4;-1:-1:-1;;;;;14094:13:6;;1702:19:10;:23;14090:660:6;;14129:71;;-1:-1:-1;;;14129:71:6;;-1:-1:-1;;;;;14129:36:6;;;;;:71;;719:10:11;;14180:4:6;;14186:7;;14195:4;;14129:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14129:71:6;;;;;;;;-1:-1:-1;;14129:71:6;;;;;;;;;;;;:::i;:::-;;;14125:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14367:6;:13;14384:1;14367:18;14363:321;;14409:60;;-1:-1:-1;;;14409:60:6;;;;;;;:::i;14363:321::-;14636:6;14630:13;14621:6;14617:2;14613:15;14606:38;14125:573;-1:-1:-1;;;;;;14250:51:6;-1:-1:-1;;;14250:51:6;;-1:-1:-1;14243:58:6;;14090:660;-1:-1:-1;14735:4:6;13925:831;;;;;;:::o;10139:916:15:-;10192:7;;-1:-1:-1;;;10267:17:15;;10263:103;;-1:-1:-1;;;10304:17:15;;;-1:-1:-1;10349:2:15;10339:12;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;-1:-1:-1;10465:2:15;10455:12;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;-1:-1:-1;10581:2:15;10571:12;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;-1:-1:-1;10695:1:15;10685:11;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;-1:-1:-1;10808:1:15;10798:11;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;-1:-1:-1;10921:1:15;10911:11;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;11042:6;10139:916;-1:-1:-1;;10139:916:15:o;14:131:29:-;-1:-1:-1;;;;;;88:32:29;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:29;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:29;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:29:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:29;;1348:180;-1:-1:-1;1348:180:29:o;1741:173::-;1809:20;;-1:-1:-1;;;;;1858:31:29;;1848:42;;1838:70;;1904:1;1901;1894:12;1838:70;1741:173;;;:::o;1919:254::-;1987:6;1995;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2087:29;2106:9;2087:29;:::i;:::-;2077:39;2163:2;2148:18;;;;2135:32;;-1:-1:-1;;;1919:254:29:o;2178:328::-;2255:6;2263;2271;2324:2;2312:9;2303:7;2299:23;2295:32;2292:52;;;2340:1;2337;2330:12;2292:52;2363:29;2382:9;2363:29;:::i;:::-;2353:39;;2411:38;2445:2;2434:9;2430:18;2411:38;:::i;:::-;2401:48;;2496:2;2485:9;2481:18;2468:32;2458:42;;2178:328;;;;;:::o;2511:186::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2662:29;2681:9;2662:29;:::i;2884:347::-;2949:6;2957;3010:2;2998:9;2989:7;2985:23;2981:32;2978:52;;;3026:1;3023;3016:12;2978:52;3049:29;3068:9;3049:29;:::i;:::-;3039:39;;3128:2;3117:9;3113:18;3100:32;3175:5;3168:13;3161:21;3154:5;3151:32;3141:60;;3197:1;3194;3187:12;3141:60;3220:5;3210:15;;;2884:347;;;;;:::o;3236:127::-;3297:10;3292:3;3288:20;3285:1;3278:31;3328:4;3325:1;3318:15;3352:4;3349:1;3342:15;3368:1138;3463:6;3471;3479;3487;3540:3;3528:9;3519:7;3515:23;3511:33;3508:53;;;3557:1;3554;3547:12;3508:53;3580:29;3599:9;3580:29;:::i;:::-;3570:39;;3628:38;3662:2;3651:9;3647:18;3628:38;:::i;:::-;3618:48;;3713:2;3702:9;3698:18;3685:32;3675:42;;3768:2;3757:9;3753:18;3740:32;3791:18;3832:2;3824:6;3821:14;3818:34;;;3848:1;3845;3838:12;3818:34;3886:6;3875:9;3871:22;3861:32;;3931:7;3924:4;3920:2;3916:13;3912:27;3902:55;;3953:1;3950;3943:12;3902:55;3989:2;3976:16;4011:2;4007;4004:10;4001:36;;;4017:18;;:::i;:::-;4092:2;4086:9;4060:2;4146:13;;-1:-1:-1;;4142:22:29;;;4166:2;4138:31;4134:40;4122:53;;;4190:18;;;4210:22;;;4187:46;4184:72;;;4236:18;;:::i;:::-;4276:10;4272:2;4265:22;4311:2;4303:6;4296:18;4351:7;4346:2;4341;4337;4333:11;4329:20;4326:33;4323:53;;;4372:1;4369;4362:12;4323:53;4428:2;4423;4419;4415:11;4410:2;4402:6;4398:15;4385:46;4473:1;4468:2;4463;4455:6;4451:15;4447:24;4440:35;4494:6;4484:16;;;;;;;3368:1138;;;;;;;:::o;4511:260::-;4579:6;4587;4640:2;4628:9;4619:7;4615:23;4611:32;4608:52;;;4656:1;4653;4646:12;4608:52;4679:29;4698:9;4679:29;:::i;:::-;4669:39;;4727:38;4761:2;4750:9;4746:18;4727:38;:::i;:::-;4717:48;;4511:260;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;5993:409::-;6195:2;6177:21;;;6234:2;6214:18;;;6207:30;6273:34;6268:2;6253:18;;6246:62;-1:-1:-1;;;6339:2:29;6324:18;;6317:43;6392:3;6377:19;;5993:409::o;7170:496::-;7349:3;7387:6;7381:13;7403:66;7462:6;7457:3;7450:4;7442:6;7438:17;7403:66;:::i;:::-;7532:13;;7491:16;;;;7554:70;7532:13;7491:16;7601:4;7589:17;;7554:70;:::i;:::-;7640:20;;7170:496;-1:-1:-1;;;;7170:496:29:o;7671:401::-;7873:2;7855:21;;;7912:2;7892:18;;;7885:30;7951:34;7946:2;7931:18;;7924:62;-1:-1:-1;;;8017:2:29;8002:18;;7995:35;8062:3;8047:19;;7671:401::o;9554:414::-;9756:2;9738:21;;;9795:2;9775:18;;;9768:30;9834:34;9829:2;9814:18;;9807:62;-1:-1:-1;;;9900:2:29;9885:18;;9878:48;9958:3;9943:19;;9554:414::o;10105:489::-;-1:-1:-1;;;;;10374:15:29;;;10356:34;;10426:15;;10421:2;10406:18;;10399:43;10473:2;10458:18;;10451:34;;;10521:3;10516:2;10501:18;;10494:31;;;10299:4;;10542:46;;10568:19;;10560:6;10542:46;:::i;:::-;10534:54;10105:489;-1:-1:-1;;;;;;10105:489:29:o;10599:249::-;10668:6;10721:2;10709:9;10700:7;10696:23;10692:32;10689:52;;;10737:1;10734;10727:12;10689:52;10769:9;10763:16;10788:30;10812:5;10788:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"958000","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2634","getApproved(uint256)":"4792","isApprovedForAll(address,address)":"infinite","mint(address,uint256)":"55386","name()":"infinite","ownerOf(uint256)":"2561","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26705","supportsInterface(bytes4)":"534","symbol()":"infinite","tokenURI(uint256)":"infinite","transferFrom(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","mint(address,uint256)":"40c10f19","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mock/NFTMock.sol\":\"NFTMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n}\\n\",\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/mock/NFTMock.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.8;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/ERC721.sol\\\";\\n\\ncontract NFTMock is ERC721 {\\n // solhint-disable-next-line no-empty-blocks\\n constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) {\\n }\\n\\n function mint(address to, uint256 tokenId) external {\\n _mint(to, tokenId);\\n }\\n}\",\"keccak256\":\"0x432a1fde00aeaf5ffaea8788d97a8247dc4a712eeacf22d1c231202a08774eb4\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":883,"contract":"contracts/mock/NFTMock.sol:NFTMock","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":885,"contract":"contracts/mock/NFTMock.sol:NFTMock","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":889,"contract":"contracts/mock/NFTMock.sol:NFTMock","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":893,"contract":"contracts/mock/NFTMock.sol:NFTMock","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":897,"contract":"contracts/mock/NFTMock.sol:NFTMock","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":903,"contract":"contracts/mock/NFTMock.sol:NFTMock","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}}}}} \ No newline at end of file diff --git a/build/contracts/build-info/e7a523144ead89b0801158692bb4561d.json b/build/contracts/build-info/e7a523144ead89b0801158692bb4561d.json deleted file mode 100644 index 9f9cd8b..0000000 --- a/build/contracts/build-info/e7a523144ead89b0801158692bb4561d.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"e7a523144ead89b0801158692bb4561d","_format":"hh-sol-build-info-1","solcVersion":"0.8.13","solcLongVersion":"0.8.13+commit.abaa5c0e","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _transferOwnership(_msgSender());\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\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 caller.\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 v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 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 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/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n *\n * Furthermore, `isContract` will also return true if the target contract within\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n * which only has an effect at the end of a transaction.\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\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[EIP 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"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\nimport \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toString(int256 value) internal pure returns (string memory) {\n return string(abi.encodePacked(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value))));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"contracts/ERC721All.sol":{"content":"// SPDX-License-Identifier: MIT\n// Written by: Rob Secord (https://twitter.com/robsecord)\n// Co-founder @ Charged Particles - Visit: https://charged.fi\n// Co-founder @ Taggr - Visit: https://taggr.io\n\npragma solidity 0.8.13;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\nimport \"./lib/ERC721.sol\";\n\n/**\n * @dev todo...\n */\ncontract ERC721All is Ownable, ERC721 {\n mapping(uint256 => bool) internal _activeTokens;\n\n constructor(string memory name, string memory symbol) ERC721(name, symbol) Ownable() {}\n\n /**\n * @dev Overrides {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n if (_balances[owner] == 0 && _hasOwnToken(owner)) {\n return 1;\n }\n return _balances[owner];\n }\n\n /**\n * @dev Overrides {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view override returns (address) {\n require(_isTokenActive(tokenId), \"ERC721: invalid token ID\");\n\n // If token has been transfered then _owners will be populated,\n // otherwise the token ID represents the initial owner\n address owner = _owners[tokenId];\n if (owner == address(0)) {\n owner = address(uint160(tokenId));\n }\n return owner;\n }\n\n function mint() public {\n _mint(_msgSender());\n }\n\n function _mint(address receiver) internal {\n // Token ID == Minter Address\n uint256 tokenId = uint256(uint160(receiver));\n\n require(receiver != address(0), \"ERC721: mint to the zero address\");\n require(!_isTokenActive(tokenId), \"ERC721: token already minted\");\n\n // Mark Token as Active\n _activeTokens[tokenId] = true;\n\n // Fire Transfer Event\n emit Transfer(address(0), receiver, tokenId);\n }\n\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal override {\n require(ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n // Only if token has previously been transfered after mint\n if (_owners[tokenId] != address(0)) {\n _balances[from] -= 1;\n }\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId);\n }\n\n function _hasOwnToken(address owner) internal view returns (bool) {\n uint256 ownerTokenId = uint256(uint160(owner));\n address currentOwner = _owners[ownerTokenId];\n return (_isTokenActive(ownerTokenId) && (currentOwner == owner || currentOwner == address(0)));\n }\n\n function _isTokenActive(uint256 tokenId) internal view returns (bool) {\n // Check if Token is Active and Not Burned\n return (_activeTokens[tokenId] && _owners[tokenId] != _NULL_ADDRESS);\n }\n}\n"},"contracts/lib/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\n// Modified by: Rob Secord (https://twitter.com/robsecord)\n// Co-founder @ Charged Particles - Visit: https://charged.fi\n// Co-founder @ Taggr - Visit: https://taggr.io\n\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\nimport \"@openzeppelin/contracts/utils/Context.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\nimport \"@openzeppelin/contracts/utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n *\n * NOTE:\n * The only changes made here are:\n * - change scope of \"_owners\" from private to internal\n * - change scope of \"_balances\" from private to internal\n * - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\"\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n using Address for address;\n using Strings for uint256;\n\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Mapping from token ID to owner address\n mapping(uint256 => address) internal _owners;\n\n // Mapping owner address to token count\n mapping(address => uint256) internal _balances;\n\n // Mapping from token ID to approved address\n mapping(uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n address owner = _owners[tokenId];\n require(owner != address(0), \"ERC721: invalid token ID\");\n return owner;\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n _requireMinted(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not token owner nor approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n _requireMinted(tokenId);\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n _safeTransfer(from, to, tokenId, data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _owners[tokenId] != address(0);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n address owner = ownerOf(tokenId);\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal virtual {\n _mint(to, tokenId);\n require(\n _checkOnERC721Received(address(0), to, tokenId, data),\n \"ERC721: transfer to non ERC721Receiver implementer\"\n );\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId);\n\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(address(0), to, tokenId);\n\n _afterTokenTransfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ownerOf(tokenId);\n\n _beforeTokenTransfer(owner, address(0), tokenId);\n\n // Clear approvals\n _approve(address(0), tokenId);\n\n _balances[owner] -= 1;\n // Prevent re-assigning the token back to the Pre-Mint Receiver\n _owners[tokenId] = _NULL_ADDRESS;\n\n emit Transfer(owner, address(0), tokenId);\n\n _afterTokenTransfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {\n require(ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n _balances[from] -= 1;\n _balances[to] += 1;\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n _afterTokenTransfer(from, to, tokenId);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ownerOf(tokenId), to, tokenId);\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(\n address owner,\n address operator,\n bool approved\n ) internal virtual {\n require(owner != operator, \"ERC721: approve to caller\");\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` has not been minted yet.\n */\n function _requireMinted(uint256 tokenId) internal view virtual {\n require(_exists(tokenId), \"ERC721: invalid token ID\");\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) private returns (bool) {\n if (to.code.length > 0) {\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n return retval == IERC721Receiver.onERC721Received.selector;\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n } else {\n /// @solidity memory-safe-assembly\n assembly {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n } else {\n return true;\n }\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n\n /**\n * @dev Hook that is called after any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _afterTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal virtual {}\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[625],"Ownable":[112]},"id":113,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:0"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":113,"sourceUnit":626,"src":"127:30:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":625,"src":"683:7:0"},"id":5,"nodeType":"InheritanceSpecifier","src":"683:7:0"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"159:494:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":112,"linearizedBaseContracts":[112,625],"name":"Ownable","nameLocation":"672:7:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7,"mutability":"mutable","name":"_owner","nameLocation":"713:6:0","nodeType":"VariableDeclaration","scope":112,"src":"697:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":13,"name":"OwnershipTransferred","nameLocation":"732:20:0","nodeType":"EventDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"769:13:0","nodeType":"VariableDeclaration","scope":13,"src":"753:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8,"name":"address","nodeType":"ElementaryTypeName","src":"753:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"800:8:0","nodeType":"VariableDeclaration","scope":13,"src":"784:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"784:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"752:57:0"},"src":"726:84:0"},{"body":{"id":22,"nodeType":"Block","src":"926:49:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":18,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"955:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":19,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"955:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"936:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"936:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21,"nodeType":"ExpressionStatement","src":"936:32:0"}]},"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"816:91:0","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":23,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"923:2:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"926:0:0"},"scope":112,"src":"912:63:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":30,"nodeType":"Block","src":"1084:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":26,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1094:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":27,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28,"nodeType":"ExpressionStatement","src":"1094:13:0"},{"id":29,"nodeType":"PlaceholderStatement","src":"1117:1:0"}]},"documentation":{"id":24,"nodeType":"StructuredDocumentation","src":"981:77:0","text":" @dev Throws if called by any account other than the owner."},"id":31,"name":"onlyOwner","nameLocation":"1072:9:0","nodeType":"ModifierDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"1081:2:0"},"src":"1063:62:0","virtual":false,"visibility":"internal"},{"body":{"id":39,"nodeType":"Block","src":"1256:30:0","statements":[{"expression":{"id":37,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"1273:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":36,"id":38,"nodeType":"Return","src":"1266:13:0"}]},"documentation":{"id":32,"nodeType":"StructuredDocumentation","src":"1131:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":40,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1210:5:0","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[],"src":"1215:2:0"},"returnParameters":{"id":36,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40,"src":"1247:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1247:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1246:9:0"},"scope":112,"src":"1201:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":53,"nodeType":"Block","src":"1404:85:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":45,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"1422:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1422:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":47,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"1433:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":48,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1433:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1422:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1447:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":44,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1414:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1414:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52,"nodeType":"ExpressionStatement","src":"1414:68:0"}]},"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1292:62:0","text":" @dev Throws if the sender is not the owner."},"id":54,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1368:11:0","nodeType":"FunctionDefinition","parameters":{"id":42,"nodeType":"ParameterList","parameters":[],"src":"1379:2:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[],"src":"1404:0:0"},"scope":112,"src":"1359:130:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":67,"nodeType":"Block","src":"1878:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":63,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1915:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":62,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1907:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"1907:7:0","typeDescriptions":{}}},"id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1907:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"1888:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1888:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"ExpressionStatement","src":"1888:30:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1495:324:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":68,"implemented":true,"kind":"function","modifiers":[{"id":58,"kind":"modifierInvocation","modifierName":{"id":57,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"1868:9:0"},"nodeType":"ModifierInvocation","src":"1868:9:0"}],"name":"renounceOwnership","nameLocation":"1833:17:0","nodeType":"FunctionDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"1850:2:0"},"returnParameters":{"id":59,"nodeType":"ParameterList","parameters":[],"src":"1878:0:0"},"scope":112,"src":"1824:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":90,"nodeType":"Block","src":"2144:128:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":82,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2162:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2182:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":79,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2174:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"2174:7:0","typeDescriptions":{}}},"id":81,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2174:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2162:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":83,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2186:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":76,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2154:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2154:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85,"nodeType":"ExpressionStatement","src":"2154:73:0"},{"expression":{"arguments":[{"id":87,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2256:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2237:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2237:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"2237:28:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1931:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":91,"implemented":true,"kind":"function","modifiers":[{"id":74,"kind":"modifierInvocation","modifierName":{"id":73,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2134:9:0"},"nodeType":"ModifierInvocation","src":"2134:9:0"}],"name":"transferOwnership","nameLocation":"2083:17:0","nodeType":"FunctionDefinition","parameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"newOwner","nameLocation":"2109:8:0","nodeType":"VariableDeclaration","scope":91,"src":"2101:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"2101:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2100:18:0"},"returnParameters":{"id":75,"nodeType":"ParameterList","parameters":[],"src":"2144:0:0"},"scope":112,"src":"2074:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":110,"nodeType":"Block","src":"2489:124:0","statements":[{"assignments":[98],"declarations":[{"constant":false,"id":98,"mutability":"mutable","name":"oldOwner","nameLocation":"2507:8:0","nodeType":"VariableDeclaration","scope":110,"src":"2499:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"2499:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":100,"initialValue":{"id":99,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2518:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2499:25:0"},{"expression":{"id":103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":101,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2534:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":102,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2543:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2534:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":104,"nodeType":"ExpressionStatement","src":"2534:17:0"},{"eventCall":{"arguments":[{"id":106,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"2587:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":107,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2597:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":105,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"2566:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2566:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"EmitStatement","src":"2561:45:0"}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"2278:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":111,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2435:18:0","nodeType":"FunctionDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"newOwner","nameLocation":"2462:8:0","nodeType":"VariableDeclaration","scope":111,"src":"2454:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":93,"name":"address","nodeType":"ElementaryTypeName","src":"2454:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2453:18:0"},"returnParameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2489:0:0"},"scope":112,"src":"2426:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":113,"src":"654:1961:0","usedErrors":[]}],"src":"102:2514:0"},"id":0},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[890],"IERC721":[228]},"id":229,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":114,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:1"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":115,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":229,"sourceUnit":891,"src":"133:47:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":117,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":890,"src":"271:7:1"},"id":118,"nodeType":"InheritanceSpecifier","src":"271:7:1"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"182:67:1","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":228,"linearizedBaseContracts":[228,890],"name":"IERC721","nameLocation":"260:7:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"285:88:1","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":127,"name":"Transfer","nameLocation":"384:8:1","nodeType":"EventDefinition","parameters":{"id":126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:1","nodeType":"VariableDeclaration","scope":127,"src":"393:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":123,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:1","nodeType":"VariableDeclaration","scope":127,"src":"415:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":122,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":125,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:1","nodeType":"VariableDeclaration","scope":127,"src":"435:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":124,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:1"},"src":"378:82:1"},{"anonymous":false,"documentation":{"id":128,"nodeType":"StructuredDocumentation","src":"466:94:1","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":136,"name":"Approval","nameLocation":"571:8:1","nodeType":"EventDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":130,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:1","nodeType":"VariableDeclaration","scope":136,"src":"580:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":132,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:1","nodeType":"VariableDeclaration","scope":136,"src":"603:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":131,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":134,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:1","nodeType":"VariableDeclaration","scope":136,"src":"629:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":133,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:1"},"src":"565:89:1"},{"anonymous":false,"documentation":{"id":137,"nodeType":"StructuredDocumentation","src":"660:117:1","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":145,"name":"ApprovalForAll","nameLocation":"788:14:1","nodeType":"EventDefinition","parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":139,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:1","nodeType":"VariableDeclaration","scope":145,"src":"803:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":141,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:1","nodeType":"VariableDeclaration","scope":145,"src":"826:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":143,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:1","nodeType":"VariableDeclaration","scope":145,"src":"852:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":142,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:1"},"src":"782:85:1"},{"documentation":{"id":146,"nodeType":"StructuredDocumentation","src":"873:76:1","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":153,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:1","nodeType":"FunctionDefinition","parameters":{"id":149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"owner","nameLocation":"981:5:1","nodeType":"VariableDeclaration","scope":153,"src":"973:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":147,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:1"},"returnParameters":{"id":152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":151,"mutability":"mutable","name":"balance","nameLocation":"1019:7:1","nodeType":"VariableDeclaration","scope":153,"src":"1011:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":150,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:1"},"scope":228,"src":"954:74:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"1034:131:1","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":161,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:1","nodeType":"FunctionDefinition","parameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:1","nodeType":"VariableDeclaration","scope":161,"src":"1187:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":155,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:1"},"returnParameters":{"id":160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"owner","nameLocation":"1235:5:1","nodeType":"VariableDeclaration","scope":161,"src":"1227:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":158,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:1"},"scope":228,"src":"1170:72:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":162,"nodeType":"StructuredDocumentation","src":"1248:556: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 a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":173,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:1","nodeType":"FunctionDefinition","parameters":{"id":171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"from","nameLocation":"1843:4:1","nodeType":"VariableDeclaration","scope":173,"src":"1835:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":166,"mutability":"mutable","name":"to","nameLocation":"1857:2:1","nodeType":"VariableDeclaration","scope":173,"src":"1849:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":165,"name":"address","nodeType":"ElementaryTypeName","src":"1849:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":168,"mutability":"mutable","name":"tokenId","nameLocation":"1869:7:1","nodeType":"VariableDeclaration","scope":173,"src":"1861:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":167,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":170,"mutability":"mutable","name":"data","nameLocation":"1893:4:1","nodeType":"VariableDeclaration","scope":173,"src":"1878:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":169,"name":"bytes","nodeType":"ElementaryTypeName","src":"1878:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:64:1"},"returnParameters":{"id":172,"nodeType":"ParameterList","parameters":[],"src":"1907:0:1"},"scope":228,"src":"1809:99:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":174,"nodeType":"StructuredDocumentation","src":"1914:687:1","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 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 {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":183,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2615:16:1","nodeType":"FunctionDefinition","parameters":{"id":181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":176,"mutability":"mutable","name":"from","nameLocation":"2640:4:1","nodeType":"VariableDeclaration","scope":183,"src":"2632:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":175,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":178,"mutability":"mutable","name":"to","nameLocation":"2654:2:1","nodeType":"VariableDeclaration","scope":183,"src":"2646:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":177,"name":"address","nodeType":"ElementaryTypeName","src":"2646:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":180,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:1","nodeType":"VariableDeclaration","scope":183,"src":"2658:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":179,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2631:43:1"},"returnParameters":{"id":182,"nodeType":"ParameterList","parameters":[],"src":"2683:0:1"},"scope":228,"src":"2606:78:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":184,"nodeType":"StructuredDocumentation","src":"2690:732: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 ERC721\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":193,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3436:12:1","nodeType":"FunctionDefinition","parameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":186,"mutability":"mutable","name":"from","nameLocation":"3457:4:1","nodeType":"VariableDeclaration","scope":193,"src":"3449:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"3449:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"to","nameLocation":"3471:2:1","nodeType":"VariableDeclaration","scope":193,"src":"3463:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":187,"name":"address","nodeType":"ElementaryTypeName","src":"3463:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"tokenId","nameLocation":"3483:7:1","nodeType":"VariableDeclaration","scope":193,"src":"3475:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":189,"name":"uint256","nodeType":"ElementaryTypeName","src":"3475:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3448:43:1"},"returnParameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"3500:0:1"},"scope":228,"src":"3427:74:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":194,"nodeType":"StructuredDocumentation","src":"3507: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":201,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3973:7:1","nodeType":"FunctionDefinition","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"to","nameLocation":"3989:2:1","nodeType":"VariableDeclaration","scope":201,"src":"3981:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":195,"name":"address","nodeType":"ElementaryTypeName","src":"3981:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":198,"mutability":"mutable","name":"tokenId","nameLocation":"4001:7:1","nodeType":"VariableDeclaration","scope":201,"src":"3993:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":197,"name":"uint256","nodeType":"ElementaryTypeName","src":"3993:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3980:29:1"},"returnParameters":{"id":200,"nodeType":"ParameterList","parameters":[],"src":"4018:0:1"},"scope":228,"src":"3964:55:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":202,"nodeType":"StructuredDocumentation","src":"4025:309: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 caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":209,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4348:17:1","nodeType":"FunctionDefinition","parameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"mutability":"mutable","name":"operator","nameLocation":"4374:8:1","nodeType":"VariableDeclaration","scope":209,"src":"4366:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"4366:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":206,"mutability":"mutable","name":"approved","nameLocation":"4389:8:1","nodeType":"VariableDeclaration","scope":209,"src":"4384:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":205,"name":"bool","nodeType":"ElementaryTypeName","src":"4384:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4365:33:1"},"returnParameters":{"id":208,"nodeType":"ParameterList","parameters":[],"src":"4407:0:1"},"scope":228,"src":"4339:69:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":210,"nodeType":"StructuredDocumentation","src":"4414:139:1","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":217,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4567:11:1","nodeType":"FunctionDefinition","parameters":{"id":213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":212,"mutability":"mutable","name":"tokenId","nameLocation":"4587:7:1","nodeType":"VariableDeclaration","scope":217,"src":"4579:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":211,"name":"uint256","nodeType":"ElementaryTypeName","src":"4579:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4578:17:1"},"returnParameters":{"id":216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":215,"mutability":"mutable","name":"operator","nameLocation":"4627:8:1","nodeType":"VariableDeclaration","scope":217,"src":"4619:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":214,"name":"address","nodeType":"ElementaryTypeName","src":"4619:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4618:18:1"},"scope":228,"src":"4558:79:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":218,"nodeType":"StructuredDocumentation","src":"4643:138:1","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":227,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4795:16:1","nodeType":"FunctionDefinition","parameters":{"id":223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":220,"mutability":"mutable","name":"owner","nameLocation":"4820:5:1","nodeType":"VariableDeclaration","scope":227,"src":"4812:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":219,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":222,"mutability":"mutable","name":"operator","nameLocation":"4835:8:1","nodeType":"VariableDeclaration","scope":227,"src":"4827:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":221,"name":"address","nodeType":"ElementaryTypeName","src":"4827:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4811:33:1"},"returnParameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":227,"src":"4868:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":224,"name":"bool","nodeType":"ElementaryTypeName","src":"4868:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4867:6:1"},"scope":228,"src":"4786:88:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":229,"src":"250:4626:1","usedErrors":[]}],"src":"108:4769:1"},"id":1},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[246]},"id":247,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":230,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":231,"nodeType":"StructuredDocumentation","src":"141:152:2","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":246,"linearizedBaseContracts":[246],"name":"IERC721Receiver","nameLocation":"304:15:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":232,"nodeType":"StructuredDocumentation","src":"326:493: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 reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":245,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:2","nodeType":"FunctionDefinition","parameters":{"id":241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":234,"mutability":"mutable","name":"operator","nameLocation":"867:8:2","nodeType":"VariableDeclaration","scope":245,"src":"859:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":233,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":236,"mutability":"mutable","name":"from","nameLocation":"893:4:2","nodeType":"VariableDeclaration","scope":245,"src":"885:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":235,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":238,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:2","nodeType":"VariableDeclaration","scope":245,"src":"907:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":237,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":240,"mutability":"mutable","name":"data","nameLocation":"947:4:2","nodeType":"VariableDeclaration","scope":245,"src":"932:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":239,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:2"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":245,"src":"976:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":242,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:2"},"scope":246,"src":"824:160:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":247,"src":"294:692:2","usedErrors":[]}],"src":"116:871:2"},"id":2},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC165":[890],"IERC721":[228],"IERC721Metadata":[273]},"id":274,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":248,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":249,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":274,"sourceUnit":229,"src":"137:24:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":251,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":228,"src":"326:7:3"},"id":252,"nodeType":"InheritanceSpecifier","src":"326:7:3"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":250,"nodeType":"StructuredDocumentation","src":"163:133:3","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":273,"linearizedBaseContracts":[273,228,890],"name":"IERC721Metadata","nameLocation":"307:15:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":253,"nodeType":"StructuredDocumentation","src":"340:58:3","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":258,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"412:4:3","nodeType":"FunctionDefinition","parameters":{"id":254,"nodeType":"ParameterList","parameters":[],"src":"416:2:3"},"returnParameters":{"id":257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":258,"src":"442:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":255,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"441:15:3"},"scope":273,"src":"403:54:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"463:60:3","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":264,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"537:6:3","nodeType":"FunctionDefinition","parameters":{"id":260,"nodeType":"ParameterList","parameters":[],"src":"543:2:3"},"returnParameters":{"id":263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":262,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":264,"src":"569:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":261,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"568:15:3"},"scope":273,"src":"528:56:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":265,"nodeType":"StructuredDocumentation","src":"590:90:3","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":272,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"694:8:3","nodeType":"FunctionDefinition","parameters":{"id":268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":267,"mutability":"mutable","name":"tokenId","nameLocation":"711:7:3","nodeType":"VariableDeclaration","scope":272,"src":"703:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":266,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"702:17:3"},"returnParameters":{"id":271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":270,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":272,"src":"743:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":269,"name":"string","nodeType":"ElementaryTypeName","src":"743:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"742:15:3"},"scope":273,"src":"685:73:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":274,"src":"297:463:3","usedErrors":[]}],"src":"112:649:3"},"id":3},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[603]},"id":604,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":275,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:4"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":276,"nodeType":"StructuredDocumentation","src":"126:67:4","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":603,"linearizedBaseContracts":[603],"name":"Address","nameLocation":"202:7:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":290,"nodeType":"Block","src":"1478:254:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":284,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"1702:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"1702:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1702:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":283,"id":289,"nodeType":"Return","src":"1695:30:4"}]},"documentation":{"id":277,"nodeType":"StructuredDocumentation","src":"216:1191:4","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":291,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:4","nodeType":"FunctionDefinition","parameters":{"id":280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":279,"mutability":"mutable","name":"account","nameLocation":"1440:7:4","nodeType":"VariableDeclaration","scope":291,"src":"1432:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":278,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:4"},"returnParameters":{"id":283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":291,"src":"1472:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":281,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:4"},"scope":603,"src":"1412:320:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":324,"nodeType":"Block","src":"2718:241:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":302,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2744:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$603","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$603","typeString":"library Address"}],"id":301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":300,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:4","typeDescriptions":{}}},"id":303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2736:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2736:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":305,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":296,"src":"2761:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":299,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2728:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2728:73:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":309,"nodeType":"ExpressionStatement","src":"2728:73:4"},{"assignments":[311,null],"declarations":[{"constant":false,"id":311,"mutability":"mutable","name":"success","nameLocation":"2818:7:4","nodeType":"VariableDeclaration","scope":324,"src":"2813:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":310,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":318,"initialValue":{"arguments":[{"hexValue":"","id":316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":312,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"2831:9:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2831:14:4","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":315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":314,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":296,"src":"2853:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:4","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":317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2831:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:4"},{"expression":{"arguments":[{"id":320,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":311,"src":"2882:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":319,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2874:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2874:78:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":323,"nodeType":"ExpressionStatement","src":"2874:78:4"}]},"documentation":{"id":292,"nodeType":"StructuredDocumentation","src":"1738:904:4","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":325,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:4","nodeType":"FunctionDefinition","parameters":{"id":297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:4","nodeType":"VariableDeclaration","scope":325,"src":"2666:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":293,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:4","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":296,"mutability":"mutable","name":"amount","nameLocation":"2701:6:4","nodeType":"VariableDeclaration","scope":325,"src":"2693:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":295,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:4"},"returnParameters":{"id":298,"nodeType":"ParameterList","parameters":[],"src":"2718:0:4"},"scope":603,"src":"2647:312:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":342,"nodeType":"Block","src":"3790:96:4","statements":[{"expression":{"arguments":[{"id":336,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":328,"src":"3829:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":337,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"3837:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":335,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[383,427],"referencedDeclaration":427,"src":"3807:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3807:72:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":334,"id":341,"nodeType":"Return","src":"3800:79:4"}]},"documentation":{"id":326,"nodeType":"StructuredDocumentation","src":"2965:731:4","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":343,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:4","nodeType":"FunctionDefinition","parameters":{"id":331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":328,"mutability":"mutable","name":"target","nameLocation":"3731:6:4","nodeType":"VariableDeclaration","scope":343,"src":"3723:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":327,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":330,"mutability":"mutable","name":"data","nameLocation":"3752:4:4","nodeType":"VariableDeclaration","scope":343,"src":"3739:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":329,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:4"},"returnParameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":343,"src":"3776:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":332,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:4"},"scope":603,"src":"3701:185:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":362,"nodeType":"Block","src":"4255:76:4","statements":[{"expression":{"arguments":[{"id":356,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"4294:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":357,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":348,"src":"4302:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":359,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":350,"src":"4311:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":355,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[383,427],"referencedDeclaration":427,"src":"4272:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4272:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":354,"id":361,"nodeType":"Return","src":"4265:59:4"}]},"documentation":{"id":344,"nodeType":"StructuredDocumentation","src":"3892:211:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":363,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:4","nodeType":"FunctionDefinition","parameters":{"id":351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":346,"mutability":"mutable","name":"target","nameLocation":"4147:6:4","nodeType":"VariableDeclaration","scope":363,"src":"4139:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":345,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":348,"mutability":"mutable","name":"data","nameLocation":"4176:4:4","nodeType":"VariableDeclaration","scope":363,"src":"4163:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":347,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":350,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:4","nodeType":"VariableDeclaration","scope":363,"src":"4190:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":349,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:4"},"returnParameters":{"id":354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":363,"src":"4241:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":352,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:4"},"scope":603,"src":"4108:223:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":382,"nodeType":"Block","src":"4806:111:4","statements":[{"expression":{"arguments":[{"id":376,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":366,"src":"4845:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":377,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":368,"src":"4853:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":378,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":370,"src":"4859:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":375,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[383,427],"referencedDeclaration":427,"src":"4823:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4823:87:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":374,"id":381,"nodeType":"Return","src":"4816:94:4"}]},"documentation":{"id":364,"nodeType":"StructuredDocumentation","src":"4337:351:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":383,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:4","nodeType":"FunctionDefinition","parameters":{"id":371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":366,"mutability":"mutable","name":"target","nameLocation":"4732:6:4","nodeType":"VariableDeclaration","scope":383,"src":"4724:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":365,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":368,"mutability":"mutable","name":"data","nameLocation":"4753:4:4","nodeType":"VariableDeclaration","scope":383,"src":"4740:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":367,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":370,"mutability":"mutable","name":"value","nameLocation":"4767:5:4","nodeType":"VariableDeclaration","scope":383,"src":"4759:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":369,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:4"},"returnParameters":{"id":374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":383,"src":"4792:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":372,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:4"},"scope":603,"src":"4693:224:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":426,"nodeType":"Block","src":"5344:267:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":400,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5370:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$603","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$603","typeString":"library Address"}],"id":399,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":398,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:4","typeDescriptions":{}}},"id":401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5362:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"5362:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":403,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"5387:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":397,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5354:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5354:81:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":407,"nodeType":"ExpressionStatement","src":"5354:81:4"},{"assignments":[409,411],"declarations":[{"constant":false,"id":409,"mutability":"mutable","name":"success","nameLocation":"5451:7:4","nodeType":"VariableDeclaration","scope":426,"src":"5446:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":408,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":411,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:4","nodeType":"VariableDeclaration","scope":426,"src":"5460:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":410,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":418,"initialValue":{"arguments":[{"id":416,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"5513:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":412,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":386,"src":"5487:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5487:11:4","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":415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"5506:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:4","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":417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5487:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:4"},{"expression":{"arguments":[{"id":420,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":386,"src":"5562:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":421,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":409,"src":"5570:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":422,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"5579:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":423,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"5591:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":419,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"5535:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5535:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":396,"id":425,"nodeType":"Return","src":"5528:76:4"}]},"documentation":{"id":384,"nodeType":"StructuredDocumentation","src":"4923:237:4","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":427,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:4","nodeType":"FunctionDefinition","parameters":{"id":393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":386,"mutability":"mutable","name":"target","nameLocation":"5213:6:4","nodeType":"VariableDeclaration","scope":427,"src":"5205:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":388,"mutability":"mutable","name":"data","nameLocation":"5242:4:4","nodeType":"VariableDeclaration","scope":427,"src":"5229:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":387,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"value","nameLocation":"5264:5:4","nodeType":"VariableDeclaration","scope":427,"src":"5256:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":389,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":392,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:4","nodeType":"VariableDeclaration","scope":427,"src":"5279:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":391,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:4"},"returnParameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":427,"src":"5330:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":394,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:4"},"scope":603,"src":"5165:446:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":443,"nodeType":"Block","src":"5888:97:4","statements":[{"expression":{"arguments":[{"id":438,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"5924:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":439,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":432,"src":"5932:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":437,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[444,473],"referencedDeclaration":473,"src":"5905:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5905:73:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":436,"id":442,"nodeType":"Return","src":"5898:80:4"}]},"documentation":{"id":428,"nodeType":"StructuredDocumentation","src":"5617:166:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":444,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:4","nodeType":"FunctionDefinition","parameters":{"id":433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":430,"mutability":"mutable","name":"target","nameLocation":"5824:6:4","nodeType":"VariableDeclaration","scope":444,"src":"5816:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":429,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":432,"mutability":"mutable","name":"data","nameLocation":"5845:4:4","nodeType":"VariableDeclaration","scope":444,"src":"5832:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":431,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:4"},"returnParameters":{"id":436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":444,"src":"5874:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":434,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:4"},"scope":603,"src":"5788:197:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":472,"nodeType":"Block","src":"6327:168:4","statements":[{"assignments":[457,459],"declarations":[{"constant":false,"id":457,"mutability":"mutable","name":"success","nameLocation":"6343:7:4","nodeType":"VariableDeclaration","scope":472,"src":"6338:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":456,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":459,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:4","nodeType":"VariableDeclaration","scope":472,"src":"6352:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":458,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":464,"initialValue":{"arguments":[{"id":462,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"6397:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":460,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"6379:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"6379: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":463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6379:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:4"},{"expression":{"arguments":[{"id":466,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":447,"src":"6446:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":467,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":457,"src":"6454:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":468,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":459,"src":"6463:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":469,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":451,"src":"6475:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":465,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"6419:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6419:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":455,"id":471,"nodeType":"Return","src":"6412:76:4"}]},"documentation":{"id":445,"nodeType":"StructuredDocumentation","src":"5991:173:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":473,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:4","nodeType":"FunctionDefinition","parameters":{"id":452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"target","nameLocation":"6214:6:4","nodeType":"VariableDeclaration","scope":473,"src":"6206:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":446,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"data","nameLocation":"6243:4:4","nodeType":"VariableDeclaration","scope":473,"src":"6230:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":448,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":451,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:4","nodeType":"VariableDeclaration","scope":473,"src":"6257:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":450,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:4"},"returnParameters":{"id":455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":454,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":473,"src":"6313:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":453,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:4"},"scope":603,"src":"6169:326:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":489,"nodeType":"Block","src":"6771:101:4","statements":[{"expression":{"arguments":[{"id":484,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"6809:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":485,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6817:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":483,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[490,519],"referencedDeclaration":519,"src":"6788:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6788:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":482,"id":488,"nodeType":"Return","src":"6781:84:4"}]},"documentation":{"id":474,"nodeType":"StructuredDocumentation","src":"6501:168:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":490,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:4","nodeType":"FunctionDefinition","parameters":{"id":479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":476,"mutability":"mutable","name":"target","nameLocation":"6712:6:4","nodeType":"VariableDeclaration","scope":490,"src":"6704:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":475,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":478,"mutability":"mutable","name":"data","nameLocation":"6733:4:4","nodeType":"VariableDeclaration","scope":490,"src":"6720:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":477,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:4"},"returnParameters":{"id":482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":490,"src":"6757:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":480,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:4"},"scope":603,"src":"6674:198:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":518,"nodeType":"Block","src":"7213:170:4","statements":[{"assignments":[503,505],"declarations":[{"constant":false,"id":503,"mutability":"mutable","name":"success","nameLocation":"7229:7:4","nodeType":"VariableDeclaration","scope":518,"src":"7224:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":502,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":505,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:4","nodeType":"VariableDeclaration","scope":518,"src":"7238:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":504,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":510,"initialValue":{"arguments":[{"id":508,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":495,"src":"7285:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":506,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":493,"src":"7265:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:4","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":509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7265:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:4"},{"expression":{"arguments":[{"id":512,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":493,"src":"7334:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":513,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":503,"src":"7342:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":514,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":505,"src":"7351:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":515,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"7363:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":511,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"7307:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7307:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":501,"id":517,"nodeType":"Return","src":"7300:76:4"}]},"documentation":{"id":491,"nodeType":"StructuredDocumentation","src":"6878:175:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":519,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:4","nodeType":"FunctionDefinition","parameters":{"id":498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":493,"mutability":"mutable","name":"target","nameLocation":"7105:6:4","nodeType":"VariableDeclaration","scope":519,"src":"7097:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":495,"mutability":"mutable","name":"data","nameLocation":"7134:4:4","nodeType":"VariableDeclaration","scope":519,"src":"7121:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":494,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":497,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:4","nodeType":"VariableDeclaration","scope":519,"src":"7148:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":496,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:4"},"returnParameters":{"id":501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":500,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":519,"src":"7199:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":499,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:4"},"scope":603,"src":"7058:325:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":557,"nodeType":"Block","src":"7865:434:4","statements":[{"condition":{"id":533,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"7879:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":555,"nodeType":"Block","src":"8235:58:4","statements":[{"expression":{"arguments":[{"id":551,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"8257:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":552,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"8269:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":550,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":602,"src":"8249:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8249:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":554,"nodeType":"ExpressionStatement","src":"8249:33:4"}]},"id":556,"nodeType":"IfStatement","src":"7875:418:4","trueBody":{"id":549,"nodeType":"Block","src":"7888:341:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":534,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"7906:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7906:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":546,"nodeType":"IfStatement","src":"7902:286:4","trueBody":{"id":545,"nodeType":"Block","src":"7930:258:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":540,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"8132:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":539,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":291,"src":"8121:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8121:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":538,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8113:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8113:60:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":544,"nodeType":"ExpressionStatement","src":"8113:60:4"}]}},{"expression":{"id":547,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"8208:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":532,"id":548,"nodeType":"Return","src":"8201:17:4"}]}}]},"documentation":{"id":520,"nodeType":"StructuredDocumentation","src":"7389:277:4","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":558,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:4","nodeType":"FunctionDefinition","parameters":{"id":529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"mutability":"mutable","name":"target","nameLocation":"7724:6:4","nodeType":"VariableDeclaration","scope":558,"src":"7716:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":521,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":524,"mutability":"mutable","name":"success","nameLocation":"7745:7:4","nodeType":"VariableDeclaration","scope":558,"src":"7740:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":523,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":526,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:4","nodeType":"VariableDeclaration","scope":558,"src":"7762:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":525,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":528,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:4","nodeType":"VariableDeclaration","scope":558,"src":"7795:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":527,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:4"},"returnParameters":{"id":532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":531,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":558,"src":"7851:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":530,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:4"},"scope":603,"src":"7671:628:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":581,"nodeType":"Block","src":"8680:135:4","statements":[{"condition":{"id":570,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"8694:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":579,"nodeType":"Block","src":"8751:58:4","statements":[{"expression":{"arguments":[{"id":575,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"8773:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":576,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":565,"src":"8785:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":574,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":602,"src":"8765:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8765:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":578,"nodeType":"ExpressionStatement","src":"8765:33:4"}]},"id":580,"nodeType":"IfStatement","src":"8690:119:4","trueBody":{"id":573,"nodeType":"Block","src":"8703:42:4","statements":[{"expression":{"id":571,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"8724:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":569,"id":572,"nodeType":"Return","src":"8717:17:4"}]}}]},"documentation":{"id":559,"nodeType":"StructuredDocumentation","src":"8305:210:4","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":582,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:4","nodeType":"FunctionDefinition","parameters":{"id":566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":561,"mutability":"mutable","name":"success","nameLocation":"8560:7:4","nodeType":"VariableDeclaration","scope":582,"src":"8555:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":560,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":563,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:4","nodeType":"VariableDeclaration","scope":582,"src":"8577:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":562,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":565,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:4","nodeType":"VariableDeclaration","scope":582,"src":"8610:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":564,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:4"},"returnParameters":{"id":569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":568,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":582,"src":"8666:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":567,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:4"},"scope":603,"src":"8520:295:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":601,"nodeType":"Block","src":"8904:457:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":589,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"8980:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8980:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":599,"nodeType":"Block","src":"9310:45:4","statements":[{"expression":{"arguments":[{"id":596,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":586,"src":"9331:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":595,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9324:6:4","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9324:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":598,"nodeType":"ExpressionStatement","src":"9324:20:4"}]},"id":600,"nodeType":"IfStatement","src":"8976:379:4","trueBody":{"id":594,"nodeType":"Block","src":"9003:301:4","statements":[{"AST":{"nodeType":"YulBlock","src":"9161:133:4","statements":[{"nodeType":"YulVariableDeclaration","src":"9179:40:4","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9208:10:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9202:5:4"},"nodeType":"YulFunctionCall","src":"9202:17:4"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9183:15:4","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9247:2:4","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9251:10:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9243:3:4"},"nodeType":"YulFunctionCall","src":"9243:19:4"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9264:15:4"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9236:6:4"},"nodeType":"YulFunctionCall","src":"9236:44:4"},"nodeType":"YulExpressionStatement","src":"9236:44:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":584,"isOffset":false,"isSlot":false,"src":"9208:10:4","valueSize":1},{"declaration":584,"isOffset":false,"isSlot":false,"src":"9251:10:4","valueSize":1}],"id":593,"nodeType":"InlineAssembly","src":"9152:142:4"}]}}]},"id":602,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:4","nodeType":"FunctionDefinition","parameters":{"id":587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":584,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:4","nodeType":"VariableDeclaration","scope":602,"src":"8838:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":583,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":586,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:4","nodeType":"VariableDeclaration","scope":602,"src":"8863:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":585,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:4"},"returnParameters":{"id":588,"nodeType":"ParameterList","parameters":[],"src":"8904:0:4"},"scope":603,"src":"8821:540:4","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":604,"src":"194:9169:4","usedErrors":[]}],"src":"101:9263:4"},"id":4},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[625]},"id":626,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":605,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:5"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":606,"nodeType":"StructuredDocumentation","src":"111:496:5","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":625,"linearizedBaseContracts":[625],"name":"Context","nameLocation":"626:7:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":614,"nodeType":"Block","src":"702:34:5","statements":[{"expression":{"expression":{"id":611,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"719:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":610,"id":613,"nodeType":"Return","src":"712:17:5"}]},"id":615,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:5","nodeType":"FunctionDefinition","parameters":{"id":607,"nodeType":"ParameterList","parameters":[],"src":"659:2:5"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":615,"src":"693:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":608,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:5"},"scope":625,"src":"640:96:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":623,"nodeType":"Block","src":"809:32:5","statements":[{"expression":{"expression":{"id":620,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"826:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":619,"id":622,"nodeType":"Return","src":"819:15:5"}]},"id":624,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:5","nodeType":"FunctionDefinition","parameters":{"id":616,"nodeType":"ParameterList","parameters":[],"src":"759:2:5"},"returnParameters":{"id":619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":618,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":624,"src":"793:14:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":617,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:5"},"scope":625,"src":"742:99:5","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":626,"src":"608:235:5","usedErrors":[]}],"src":"86:758:5"},"id":5},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[1756],"SignedMath":[1861],"Strings":[854]},"id":855,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":627,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:6"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":628,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":855,"sourceUnit":1757,"src":"126:25:6","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":629,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":855,"sourceUnit":1862,"src":"152:31:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":630,"nodeType":"StructuredDocumentation","src":"185:34:6","text":" @dev String operations."},"fullyImplemented":true,"id":854,"linearizedBaseContracts":[854],"name":"Strings","nameLocation":"228:7:6","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":633,"mutability":"constant","name":"_SYMBOLS","nameLocation":"267:8:6","nodeType":"VariableDeclaration","scope":854,"src":"242:54:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":631,"name":"bytes16","nodeType":"ElementaryTypeName","src":"242:7:6","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"278:18:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":636,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"325:15:6","nodeType":"VariableDeclaration","scope":854,"src":"302:43:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":634,"name":"uint8","nodeType":"ElementaryTypeName","src":"302:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"343:2:6","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":683,"nodeType":"Block","src":"518:625:6","statements":[{"id":682,"nodeType":"UncheckedBlock","src":"528:609:6","statements":[{"assignments":[645],"declarations":[{"constant":false,"id":645,"mutability":"mutable","name":"length","nameLocation":"560:6:6","nodeType":"VariableDeclaration","scope":682,"src":"552:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":644,"name":"uint256","nodeType":"ElementaryTypeName","src":"552:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":652,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":648,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"580:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":646,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"569:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1756_$","typeString":"type(library Math)"}},"id":647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1593,"src":"569:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"569:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"589:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"569:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"552:38:6"},{"assignments":[654],"declarations":[{"constant":false,"id":654,"mutability":"mutable","name":"buffer","nameLocation":"618:6:6","nodeType":"VariableDeclaration","scope":682,"src":"604:20:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":653,"name":"string","nodeType":"ElementaryTypeName","src":"604:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":659,"initialValue":{"arguments":[{"id":657,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":645,"src":"638:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"627:10:6","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":655,"name":"string","nodeType":"ElementaryTypeName","src":"631:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"627:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"604:41:6"},{"assignments":[661],"declarations":[{"constant":false,"id":661,"mutability":"mutable","name":"ptr","nameLocation":"667:3:6","nodeType":"VariableDeclaration","scope":682,"src":"659:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":660,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":662,"nodeType":"VariableDeclarationStatement","src":"659:11:6"},{"AST":{"nodeType":"YulBlock","src":"740:67:6","statements":[{"nodeType":"YulAssignment","src":"758:35:6","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"769:6:6"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"781:2:6","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"785:6:6"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"777:3:6"},"nodeType":"YulFunctionCall","src":"777:15:6"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:6"},"nodeType":"YulFunctionCall","src":"765:28:6"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"758:3:6"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":654,"isOffset":false,"isSlot":false,"src":"769:6:6","valueSize":1},{"declaration":645,"isOffset":false,"isSlot":false,"src":"785:6:6","valueSize":1},{"declaration":661,"isOffset":false,"isSlot":false,"src":"758:3:6","valueSize":1}],"id":663,"nodeType":"InlineAssembly","src":"731:76:6"},{"body":{"id":678,"nodeType":"Block","src":"833:267:6","statements":[{"expression":{"id":666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"851:5:6","subExpression":{"id":665,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":661,"src":"851:3:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":667,"nodeType":"ExpressionStatement","src":"851:5:6"},{"AST":{"nodeType":"YulBlock","src":"934:84:6","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"964:3:6"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"978:5:6"},{"kind":"number","nodeType":"YulLiteral","src":"985:2:6","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"974:3:6"},"nodeType":"YulFunctionCall","src":"974:14:6"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"990:8:6"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"969:4:6"},"nodeType":"YulFunctionCall","src":"969:30:6"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"956:7:6"},"nodeType":"YulFunctionCall","src":"956:44:6"},"nodeType":"YulExpressionStatement","src":"956:44:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":633,"isOffset":false,"isSlot":false,"src":"990:8:6","valueSize":1},{"declaration":661,"isOffset":false,"isSlot":false,"src":"964:3:6","valueSize":1},{"declaration":639,"isOffset":false,"isSlot":false,"src":"978:5:6","valueSize":1}],"id":668,"nodeType":"InlineAssembly","src":"925:93:6"},{"expression":{"id":671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":669,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"1035:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1035:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":672,"nodeType":"ExpressionStatement","src":"1035:11:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":673,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"1068:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1077:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1068:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":677,"nodeType":"IfStatement","src":"1064:21:6","trueBody":{"id":676,"nodeType":"Break","src":"1080:5:6"}}]},"condition":{"hexValue":"74727565","id":664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"827:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":679,"nodeType":"WhileStatement","src":"820:280:6"},{"expression":{"id":680,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"1120:6:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":643,"id":681,"nodeType":"Return","src":"1113:13:6"}]}]},"documentation":{"id":637,"nodeType":"StructuredDocumentation","src":"352:90:6","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":684,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"456:8:6","nodeType":"FunctionDefinition","parameters":{"id":640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":639,"mutability":"mutable","name":"value","nameLocation":"473:5:6","nodeType":"VariableDeclaration","scope":684,"src":"465:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":638,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"464:15:6"},"returnParameters":{"id":643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":642,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":684,"src":"503:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":641,"name":"string","nodeType":"ElementaryTypeName","src":"503:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"502:15:6"},"scope":854,"src":"447:696:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":711,"nodeType":"Block","src":"1313:103:6","statements":[{"expression":{"arguments":[{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":696,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"1354:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1362:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1354:9:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1372:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1354:20:6","trueExpression":{"hexValue":"2d","id":699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1366:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":705,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":687,"src":"1400:5:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":703,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"1385:10:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$1861_$","typeString":"type(library SignedMath)"}},"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":1860,"src":"1385:14:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1385:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":702,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[684,712],"referencedDeclaration":684,"src":"1376:8:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1376:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":694,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1337:3:6","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"1337:16:6","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1337:71:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1330:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":692,"name":"string","nodeType":"ElementaryTypeName","src":"1330:6:6","typeDescriptions":{}}},"id":709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1330:79:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":691,"id":710,"nodeType":"Return","src":"1323:86:6"}]},"documentation":{"id":685,"nodeType":"StructuredDocumentation","src":"1149:89:6","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":712,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1252:8:6","nodeType":"FunctionDefinition","parameters":{"id":688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":687,"mutability":"mutable","name":"value","nameLocation":"1268:5:6","nodeType":"VariableDeclaration","scope":712,"src":"1261:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":686,"name":"int256","nodeType":"ElementaryTypeName","src":"1261:6:6","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1260:14:6"},"returnParameters":{"id":691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":690,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":712,"src":"1298:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":689,"name":"string","nodeType":"ElementaryTypeName","src":"1298:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1297:15:6"},"scope":854,"src":"1243:173:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":731,"nodeType":"Block","src":"1595:100:6","statements":[{"id":730,"nodeType":"UncheckedBlock","src":"1605:84:6","statements":[{"expression":{"arguments":[{"id":721,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":715,"src":"1648:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":724,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":715,"src":"1667:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":722,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"1655:4:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1756_$","typeString":"type(library Math)"}},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1716,"src":"1655:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1655:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1676:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1655:22:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":720,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[732,808,828],"referencedDeclaration":808,"src":"1636:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1636:42:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":719,"id":729,"nodeType":"Return","src":"1629:49:6"}]}]},"documentation":{"id":713,"nodeType":"StructuredDocumentation","src":"1422:94:6","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":732,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1530:11:6","nodeType":"FunctionDefinition","parameters":{"id":716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":715,"mutability":"mutable","name":"value","nameLocation":"1550:5:6","nodeType":"VariableDeclaration","scope":732,"src":"1542:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":714,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1541:15:6"},"returnParameters":{"id":719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":732,"src":"1580:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":717,"name":"string","nodeType":"ElementaryTypeName","src":"1580:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1579:15:6"},"scope":854,"src":"1521:174:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":807,"nodeType":"Block","src":"1908:347:6","statements":[{"assignments":[743],"declarations":[{"constant":false,"id":743,"mutability":"mutable","name":"buffer","nameLocation":"1931:6:6","nodeType":"VariableDeclaration","scope":807,"src":"1918:19:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":742,"name":"bytes","nodeType":"ElementaryTypeName","src":"1918:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":752,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1950:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":747,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":737,"src":"1954:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1950:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1950:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1940:9:6","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":744,"name":"bytes","nodeType":"ElementaryTypeName","src":"1944:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1940:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1918:47:6"},{"expression":{"id":757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":753,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":743,"src":"1975:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":755,"indexExpression":{"hexValue":"30","id":754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1982:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1975:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1987:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1975:15:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":758,"nodeType":"ExpressionStatement","src":"1975:15:6"},{"expression":{"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":759,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":743,"src":"2000:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":761,"indexExpression":{"hexValue":"31","id":760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2007:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2000:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2012:3:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2000:15:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":764,"nodeType":"ExpressionStatement","src":"2000:15:6"},{"body":{"id":793,"nodeType":"Block","src":"2070:83:6","statements":[{"expression":{"id":787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":779,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":743,"src":"2084:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":781,"indexExpression":{"id":780,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"2091:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2084:9:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":782,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":633,"src":"2096:8:6","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":786,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":783,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":735,"src":"2105:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:3:6","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2105:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2096:21:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2084:33:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":788,"nodeType":"ExpressionStatement","src":"2084:33:6"},{"expression":{"id":791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":735,"src":"2131:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2141:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2131:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":792,"nodeType":"ExpressionStatement","src":"2131:11:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":773,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"2058:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2062:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2058:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":794,"initializationExpression":{"assignments":[766],"declarations":[{"constant":false,"id":766,"mutability":"mutable","name":"i","nameLocation":"2038:1:6","nodeType":"VariableDeclaration","scope":794,"src":"2030:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":765,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":772,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2042:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":768,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":737,"src":"2046:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2042:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2055:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2042:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2030:26:6"},"loopExpression":{"expression":{"id":777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2065:3:6","subExpression":{"id":776,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"2067:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":778,"nodeType":"ExpressionStatement","src":"2065:3:6"},"nodeType":"ForStatement","src":"2025:128:6"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":796,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":735,"src":"2170:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2179:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2170:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2182:34:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":795,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2162:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":801,"nodeType":"ExpressionStatement","src":"2162:55:6"},{"expression":{"arguments":[{"id":804,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":743,"src":"2241:6:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2234:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":802,"name":"string","nodeType":"ElementaryTypeName","src":"2234:6:6","typeDescriptions":{}}},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2234:14:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":741,"id":806,"nodeType":"Return","src":"2227:21:6"}]},"documentation":{"id":733,"nodeType":"StructuredDocumentation","src":"1701:112:6","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":808,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1827:11:6","nodeType":"FunctionDefinition","parameters":{"id":738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":735,"mutability":"mutable","name":"value","nameLocation":"1847:5:6","nodeType":"VariableDeclaration","scope":808,"src":"1839:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":734,"name":"uint256","nodeType":"ElementaryTypeName","src":"1839:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":737,"mutability":"mutable","name":"length","nameLocation":"1862:6:6","nodeType":"VariableDeclaration","scope":808,"src":"1854:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":736,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1838:31:6"},"returnParameters":{"id":741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":740,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":808,"src":"1893:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":739,"name":"string","nodeType":"ElementaryTypeName","src":"1893:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1892:15:6"},"scope":854,"src":"1818:437:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":827,"nodeType":"Block","src":"2480:76:6","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":821,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"2525:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2517:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":819,"name":"uint160","nodeType":"ElementaryTypeName","src":"2517:7:6","typeDescriptions":{}}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2517:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":817,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:6","typeDescriptions":{}}},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2509:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":824,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"2533:15:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":816,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[732,808,828],"referencedDeclaration":808,"src":"2497:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2497:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":815,"id":826,"nodeType":"Return","src":"2490:59:6"}]},"documentation":{"id":809,"nodeType":"StructuredDocumentation","src":"2261:141:6","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":828,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2416:11:6","nodeType":"FunctionDefinition","parameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"addr","nameLocation":"2436:4:6","nodeType":"VariableDeclaration","scope":828,"src":"2428:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":810,"name":"address","nodeType":"ElementaryTypeName","src":"2428:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2427:14:6"},"returnParameters":{"id":815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":814,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":828,"src":"2465:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":813,"name":"string","nodeType":"ElementaryTypeName","src":"2465:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2464:15:6"},"scope":854,"src":"2407:149:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":852,"nodeType":"Block","src":"2711:66:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":841,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"2744:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2738:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":839,"name":"bytes","nodeType":"ElementaryTypeName","src":"2738:5:6","typeDescriptions":{}}},"id":842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2738:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":838,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2728:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2728:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":847,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"2767:1:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":846,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2761:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":845,"name":"bytes","nodeType":"ElementaryTypeName","src":"2761:5:6","typeDescriptions":{}}},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2761:8:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":844,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2751:9:6","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2751:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2728:42:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":837,"id":851,"nodeType":"Return","src":"2721:49:6"}]},"documentation":{"id":829,"nodeType":"StructuredDocumentation","src":"2562:66:6","text":" @dev Returns true if the two strings are equal."},"id":853,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2642:5:6","nodeType":"FunctionDefinition","parameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":831,"mutability":"mutable","name":"a","nameLocation":"2662:1:6","nodeType":"VariableDeclaration","scope":853,"src":"2648:15:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":830,"name":"string","nodeType":"ElementaryTypeName","src":"2648:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":833,"mutability":"mutable","name":"b","nameLocation":"2679:1:6","nodeType":"VariableDeclaration","scope":853,"src":"2665:15:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":832,"name":"string","nodeType":"ElementaryTypeName","src":"2665:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2647:34:6"},"returnParameters":{"id":837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":836,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":853,"src":"2705:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":835,"name":"bool","nodeType":"ElementaryTypeName","src":"2705:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2704:6:6"},"scope":854,"src":"2633:144:6","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":855,"src":"220:2559:6","usedErrors":[]}],"src":"101:2679:6"},"id":6},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[878],"IERC165":[890]},"id":879,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":856,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:7"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":857,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":879,"sourceUnit":891,"src":"124:23:7","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":859,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":890,"src":"754:7:7"},"id":860,"nodeType":"InheritanceSpecifier","src":"754:7:7"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":858,"nodeType":"StructuredDocumentation","src":"149:576:7","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":878,"linearizedBaseContracts":[878,890],"name":"ERC165","nameLocation":"744:6:7","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[889],"body":{"id":876,"nodeType":"Block","src":"920:64:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":869,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"937:11:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":871,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"957:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$890_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$890_$","typeString":"type(contract IERC165)"}],"id":870,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"952:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"952:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$890","typeString":"type(contract IERC165)"}},"id":873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":868,"id":875,"nodeType":"Return","src":"930:47:7"}]},"documentation":{"id":861,"nodeType":"StructuredDocumentation","src":"768:56:7","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":877,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:7","nodeType":"FunctionDefinition","overrides":{"id":865,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:7"},"parameters":{"id":864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":863,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:7","nodeType":"VariableDeclaration","scope":877,"src":"856:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":862,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:7"},"returnParameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":877,"src":"914:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":866,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:7"},"scope":878,"src":"829:155:7","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":879,"src":"726:260:7","usedErrors":[]}],"src":"99:888:7"},"id":7},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[890]},"id":891,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":880,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":881,"nodeType":"StructuredDocumentation","src":"125:279:8","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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":890,"linearizedBaseContracts":[890],"name":"IERC165","nameLocation":"415:7:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":882,"nodeType":"StructuredDocumentation","src":"429:340:8","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[EIP 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":889,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:8","nodeType":"FunctionDefinition","parameters":{"id":885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":884,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:8","nodeType":"VariableDeclaration","scope":889,"src":"801:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":883,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:8","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:8"},"returnParameters":{"id":888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":889,"src":"844:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":886,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:8"},"scope":890,"src":"774:76:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":891,"src":"405:447:8","usedErrors":[]}],"src":"100:753:8"},"id":8},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[1756]},"id":1757,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":892,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:9"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":893,"nodeType":"StructuredDocumentation","src":"128:73:9","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":1756,"linearizedBaseContracts":[1756],"name":"Math","nameLocation":"210:4:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":897,"members":[{"id":894,"name":"Down","nameLocation":"245:4:9","nodeType":"EnumValue","src":"245:4:9"},{"id":895,"name":"Up","nameLocation":"287:2:9","nodeType":"EnumValue","src":"287:2:9"},{"id":896,"name":"Zero","nameLocation":"318:4:9","nodeType":"EnumValue","src":"318:4:9"}],"name":"Rounding","nameLocation":"226:8:9","nodeType":"EnumDefinition","src":"221:122:9"},{"body":{"id":914,"nodeType":"Block","src":"480:37:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":907,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"497:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":908,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"501:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":911,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"509:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:13:9","trueExpression":{"id":910,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"505:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":906,"id":913,"nodeType":"Return","src":"490:20:9"}]},"documentation":{"id":898,"nodeType":"StructuredDocumentation","src":"349:59:9","text":" @dev Returns the largest of two numbers."},"id":915,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:9","nodeType":"FunctionDefinition","parameters":{"id":903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":900,"mutability":"mutable","name":"a","nameLocation":"434:1:9","nodeType":"VariableDeclaration","scope":915,"src":"426:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":899,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":902,"mutability":"mutable","name":"b","nameLocation":"445:1:9","nodeType":"VariableDeclaration","scope":915,"src":"437:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":901,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:9"},"returnParameters":{"id":906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":905,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":915,"src":"471:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":904,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:9"},"scope":1756,"src":"413:104:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":932,"nodeType":"Block","src":"655:37:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":925,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":918,"src":"672:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":926,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":920,"src":"676:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"672:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":929,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":920,"src":"684:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"672:13:9","trueExpression":{"id":928,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":918,"src":"680:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":924,"id":931,"nodeType":"Return","src":"665:20:9"}]},"documentation":{"id":916,"nodeType":"StructuredDocumentation","src":"523:60:9","text":" @dev Returns the smallest of two numbers."},"id":933,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"597:3:9","nodeType":"FunctionDefinition","parameters":{"id":921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":918,"mutability":"mutable","name":"a","nameLocation":"609:1:9","nodeType":"VariableDeclaration","scope":933,"src":"601:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":917,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":920,"mutability":"mutable","name":"b","nameLocation":"620:1:9","nodeType":"VariableDeclaration","scope":933,"src":"612:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":919,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:9"},"returnParameters":{"id":924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":923,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":933,"src":"646:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":922,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:9"},"scope":1756,"src":"588:104:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":955,"nodeType":"Block","src":"876:82:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":943,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":936,"src":"931:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":944,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":938,"src":"935:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":946,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":947,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":936,"src":"941:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":948,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":938,"src":"945:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":950,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"940:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"950:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"940:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"930:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":942,"id":954,"nodeType":"Return","src":"923:28:9"}]},"documentation":{"id":934,"nodeType":"StructuredDocumentation","src":"698:102:9","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":956,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"814:7:9","nodeType":"FunctionDefinition","parameters":{"id":939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":936,"mutability":"mutable","name":"a","nameLocation":"830:1:9","nodeType":"VariableDeclaration","scope":956,"src":"822:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":935,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":938,"mutability":"mutable","name":"b","nameLocation":"841:1:9","nodeType":"VariableDeclaration","scope":956,"src":"833:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":937,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:22:9"},"returnParameters":{"id":942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":941,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":956,"src":"867:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":940,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"866:9:9"},"scope":1756,"src":"805:153:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":980,"nodeType":"Block","src":"1228:123:9","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"1316:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1316:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":970,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"1330:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":973,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1329:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":974,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":961,"src":"1339:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1329:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1316:28:9","trueExpression":{"hexValue":"30","id":969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":965,"id":979,"nodeType":"Return","src":"1309:35:9"}]},"documentation":{"id":957,"nodeType":"StructuredDocumentation","src":"964:188:9","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":981,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1166:7:9","nodeType":"FunctionDefinition","parameters":{"id":962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":959,"mutability":"mutable","name":"a","nameLocation":"1182:1:9","nodeType":"VariableDeclaration","scope":981,"src":"1174:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":958,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":961,"mutability":"mutable","name":"b","nameLocation":"1193:1:9","nodeType":"VariableDeclaration","scope":981,"src":"1185:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:22:9"},"returnParameters":{"id":965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":964,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":981,"src":"1219:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":963,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1218:9:9"},"scope":1756,"src":"1157:194:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1103,"nodeType":"Block","src":"1765:4115:9","statements":[{"id":1102,"nodeType":"UncheckedBlock","src":"1775:4099:9","statements":[{"assignments":[994],"declarations":[{"constant":false,"id":994,"mutability":"mutable","name":"prod0","nameLocation":"2104:5:9","nodeType":"VariableDeclaration","scope":1102,"src":"2096:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":993,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":995,"nodeType":"VariableDeclarationStatement","src":"2096:13:9"},{"assignments":[997],"declarations":[{"constant":false,"id":997,"mutability":"mutable","name":"prod1","nameLocation":"2176:5:9","nodeType":"VariableDeclaration","scope":1102,"src":"2168:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":996,"name":"uint256","nodeType":"ElementaryTypeName","src":"2168:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":998,"nodeType":"VariableDeclarationStatement","src":"2168:13:9"},{"AST":{"nodeType":"YulBlock","src":"2248:157:9","statements":[{"nodeType":"YulVariableDeclaration","src":"2266:30:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2283:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"2286:1:9"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2293:1:9","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2289:3:9"},"nodeType":"YulFunctionCall","src":"2289:6:9"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2276:6:9"},"nodeType":"YulFunctionCall","src":"2276:20:9"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2270:2:9","type":""}]},{"nodeType":"YulAssignment","src":"2313:18:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2326:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"2329:1:9"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2322:3:9"},"nodeType":"YulFunctionCall","src":"2322:9:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2313:5:9"}]},{"nodeType":"YulAssignment","src":"2348:43:9","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2365:2:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"2369:5:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2361:3:9"},"nodeType":"YulFunctionCall","src":"2361:14:9"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2380:2:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"2384:5:9"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2377:2:9"},"nodeType":"YulFunctionCall","src":"2377:13:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2357:3:9"},"nodeType":"YulFunctionCall","src":"2357:34:9"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2348:5:9"}]}]},"evmVersion":"london","externalReferences":[{"declaration":994,"isOffset":false,"isSlot":false,"src":"2313:5:9","valueSize":1},{"declaration":994,"isOffset":false,"isSlot":false,"src":"2369:5:9","valueSize":1},{"declaration":994,"isOffset":false,"isSlot":false,"src":"2384:5:9","valueSize":1},{"declaration":997,"isOffset":false,"isSlot":false,"src":"2348:5:9","valueSize":1},{"declaration":984,"isOffset":false,"isSlot":false,"src":"2283:1:9","valueSize":1},{"declaration":984,"isOffset":false,"isSlot":false,"src":"2326:1:9","valueSize":1},{"declaration":986,"isOffset":false,"isSlot":false,"src":"2286:1:9","valueSize":1},{"declaration":986,"isOffset":false,"isSlot":false,"src":"2329:1:9","valueSize":1}],"id":999,"nodeType":"InlineAssembly","src":"2239:166:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1000,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"2486:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2495:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2486:10:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1008,"nodeType":"IfStatement","src":"2482:368:9","trueBody":{"id":1007,"nodeType":"Block","src":"2498:352:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1003,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"2816:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1004,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"2824:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2816:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":992,"id":1006,"nodeType":"Return","src":"2809:26:9"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1010,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"2960:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1011,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"2974:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2960:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d6174683a206d756c446976206f766572666c6f77","id":1013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2981:23:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""},"value":"Math: mulDiv overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851","typeString":"literal_string \"Math: mulDiv overflow\""}],"id":1009,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2952:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2952:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1015,"nodeType":"ExpressionStatement","src":"2952:53:9"},{"assignments":[1017],"declarations":[{"constant":false,"id":1017,"mutability":"mutable","name":"remainder","nameLocation":"3269:9:9","nodeType":"VariableDeclaration","scope":1102,"src":"3261:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1016,"name":"uint256","nodeType":"ElementaryTypeName","src":"3261:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1018,"nodeType":"VariableDeclarationStatement","src":"3261:17:9"},{"AST":{"nodeType":"YulBlock","src":"3301:291:9","statements":[{"nodeType":"YulAssignment","src":"3370:38:9","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3390:1:9"},{"name":"y","nodeType":"YulIdentifier","src":"3393:1:9"},{"name":"denominator","nodeType":"YulIdentifier","src":"3396:11:9"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3383:6:9"},"nodeType":"YulFunctionCall","src":"3383:25:9"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3370:9:9"}]},{"nodeType":"YulAssignment","src":"3490:41:9","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3503:5:9"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3513:9:9"},{"name":"prod0","nodeType":"YulIdentifier","src":"3524:5:9"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3510:2:9"},"nodeType":"YulFunctionCall","src":"3510:20:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3499:3:9"},"nodeType":"YulFunctionCall","src":"3499:32:9"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3490:5:9"}]},{"nodeType":"YulAssignment","src":"3548:30:9","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3561:5:9"},{"name":"remainder","nodeType":"YulIdentifier","src":"3568:9:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3557:3:9"},"nodeType":"YulFunctionCall","src":"3557:21:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3548:5:9"}]}]},"evmVersion":"london","externalReferences":[{"declaration":988,"isOffset":false,"isSlot":false,"src":"3396:11:9","valueSize":1},{"declaration":994,"isOffset":false,"isSlot":false,"src":"3524:5:9","valueSize":1},{"declaration":994,"isOffset":false,"isSlot":false,"src":"3548:5:9","valueSize":1},{"declaration":994,"isOffset":false,"isSlot":false,"src":"3561:5:9","valueSize":1},{"declaration":997,"isOffset":false,"isSlot":false,"src":"3490:5:9","valueSize":1},{"declaration":997,"isOffset":false,"isSlot":false,"src":"3503:5:9","valueSize":1},{"declaration":1017,"isOffset":false,"isSlot":false,"src":"3370:9:9","valueSize":1},{"declaration":1017,"isOffset":false,"isSlot":false,"src":"3513:9:9","valueSize":1},{"declaration":1017,"isOffset":false,"isSlot":false,"src":"3568:9:9","valueSize":1},{"declaration":984,"isOffset":false,"isSlot":false,"src":"3390:1:9","valueSize":1},{"declaration":986,"isOffset":false,"isSlot":false,"src":"3393:1:9","valueSize":1}],"id":1019,"nodeType":"InlineAssembly","src":"3292:300:9"},{"assignments":[1021],"declarations":[{"constant":false,"id":1021,"mutability":"mutable","name":"twos","nameLocation":"3907:4:9","nodeType":"VariableDeclaration","scope":1102,"src":"3899:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1020,"name":"uint256","nodeType":"ElementaryTypeName","src":"3899:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1029,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1022,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"3914:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3929:12:9","subExpression":{"id":1023,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"3930:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3944:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3929:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1027,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3928:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3914:32:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3899:47:9"},{"AST":{"nodeType":"YulBlock","src":"3969:362:9","statements":[{"nodeType":"YulAssignment","src":"4034:37:9","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"4053:11:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4066:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4049:3:9"},"nodeType":"YulFunctionCall","src":"4049:22:9"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"4034:11:9"}]},{"nodeType":"YulAssignment","src":"4138:25:9","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"4151:5:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4158:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4147:3:9"},"nodeType":"YulFunctionCall","src":"4147:16:9"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"4138:5:9"}]},{"nodeType":"YulAssignment","src":"4278:39:9","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4298:1:9","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4301:4:9"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4294:3:9"},"nodeType":"YulFunctionCall","src":"4294:12:9"},{"name":"twos","nodeType":"YulIdentifier","src":"4308:4:9"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4290:3:9"},"nodeType":"YulFunctionCall","src":"4290:23:9"},{"kind":"number","nodeType":"YulLiteral","src":"4315:1:9","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4286:3:9"},"nodeType":"YulFunctionCall","src":"4286:31:9"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"4278:4:9"}]}]},"evmVersion":"london","externalReferences":[{"declaration":988,"isOffset":false,"isSlot":false,"src":"4034:11:9","valueSize":1},{"declaration":988,"isOffset":false,"isSlot":false,"src":"4053:11:9","valueSize":1},{"declaration":994,"isOffset":false,"isSlot":false,"src":"4138:5:9","valueSize":1},{"declaration":994,"isOffset":false,"isSlot":false,"src":"4151:5:9","valueSize":1},{"declaration":1021,"isOffset":false,"isSlot":false,"src":"4066:4:9","valueSize":1},{"declaration":1021,"isOffset":false,"isSlot":false,"src":"4158:4:9","valueSize":1},{"declaration":1021,"isOffset":false,"isSlot":false,"src":"4278:4:9","valueSize":1},{"declaration":1021,"isOffset":false,"isSlot":false,"src":"4301:4:9","valueSize":1},{"declaration":1021,"isOffset":false,"isSlot":false,"src":"4308:4:9","valueSize":1}],"id":1030,"nodeType":"InlineAssembly","src":"3960:371:9"},{"expression":{"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1031,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"4397:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1032,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":997,"src":"4406:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1033,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"4414:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4406:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4397:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1036,"nodeType":"ExpressionStatement","src":"4397:21:9"},{"assignments":[1038],"declarations":[{"constant":false,"id":1038,"mutability":"mutable","name":"inverse","nameLocation":"4744:7:9","nodeType":"VariableDeclaration","scope":1102,"src":"4736:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1037,"name":"uint256","nodeType":"ElementaryTypeName","src":"4736:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1045,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4755:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1040,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"4759:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4755:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1042,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4754:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4774:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4754:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4736:39:9"},{"expression":{"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1046,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"4992:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5003:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1048,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"5007:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1049,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5021:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5007:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5003:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4992:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1053,"nodeType":"ExpressionStatement","src":"4992:36:9"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1054,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5061:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5072:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1056,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"5076:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1057,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5090:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5076:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5072:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5061:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1061,"nodeType":"ExpressionStatement","src":"5061:36:9"},{"expression":{"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1062,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5131:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5142:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"5146:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1065,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5160:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5146:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5142:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5131:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1069,"nodeType":"ExpressionStatement","src":"5131:36:9"},{"expression":{"id":1076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1070,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5201:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5212:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1072,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"5216:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1073,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5230:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5216:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5212:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5201:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1077,"nodeType":"ExpressionStatement","src":"5201:36:9"},{"expression":{"id":1084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1078,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5271:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1080,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"5286:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1081,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5300:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5282:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5271:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1085,"nodeType":"ExpressionStatement","src":"5271:36:9"},{"expression":{"id":1092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1086,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5342:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5353:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1088,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"5357:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1089,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5371:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5357:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5353:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5342:36:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1093,"nodeType":"ExpressionStatement","src":"5342:36:9"},{"expression":{"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1094,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"5812:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1095,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":994,"src":"5821:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1096,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"5829:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5821:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5812:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1099,"nodeType":"ExpressionStatement","src":"5812:24:9"},{"expression":{"id":1100,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"5857:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":992,"id":1101,"nodeType":"Return","src":"5850:13:9"}]}]},"documentation":{"id":982,"nodeType":"StructuredDocumentation","src":"1357:305:9","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":1104,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1676:6:9","nodeType":"FunctionDefinition","parameters":{"id":989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":984,"mutability":"mutable","name":"x","nameLocation":"1691:1:9","nodeType":"VariableDeclaration","scope":1104,"src":"1683:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":983,"name":"uint256","nodeType":"ElementaryTypeName","src":"1683:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":986,"mutability":"mutable","name":"y","nameLocation":"1702:1:9","nodeType":"VariableDeclaration","scope":1104,"src":"1694:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":985,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":988,"mutability":"mutable","name":"denominator","nameLocation":"1713:11:9","nodeType":"VariableDeclaration","scope":1104,"src":"1705:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":987,"name":"uint256","nodeType":"ElementaryTypeName","src":"1705:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1682:43:9"},"returnParameters":{"id":992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":991,"mutability":"mutable","name":"result","nameLocation":"1757:6:9","nodeType":"VariableDeclaration","scope":1104,"src":"1749:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":990,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1748:16:9"},"scope":1756,"src":"1667:4213:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1147,"nodeType":"Block","src":"6122:189:9","statements":[{"assignments":[1120],"declarations":[{"constant":false,"id":1120,"mutability":"mutable","name":"result","nameLocation":"6140:6:9","nodeType":"VariableDeclaration","scope":1147,"src":"6132:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1119,"name":"uint256","nodeType":"ElementaryTypeName","src":"6132:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1126,"initialValue":{"arguments":[{"id":1122,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"6156:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1123,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1109,"src":"6159:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1124,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1111,"src":"6162:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1121,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1104,1148],"referencedDeclaration":1104,"src":"6149:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6149:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6132:42:9"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"},"id":1130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1127,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1114,"src":"6188:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1128,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"6200:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$897_$","typeString":"type(enum Math.Rounding)"}},"id":1129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":895,"src":"6200:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"src":"6188:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1132,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"6222:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1133,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1109,"src":"6225:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1134,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1111,"src":"6228:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1131,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"6215:6:9","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6215:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6243:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6215:29:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6188:56:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1144,"nodeType":"IfStatement","src":"6184:98:9","trueBody":{"id":1143,"nodeType":"Block","src":"6246:36:9","statements":[{"expression":{"id":1141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1139,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"6260:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6270:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6260:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1142,"nodeType":"ExpressionStatement","src":"6260:11:9"}]}},{"expression":{"id":1145,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"6298:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1118,"id":1146,"nodeType":"Return","src":"6291:13:9"}]},"documentation":{"id":1105,"nodeType":"StructuredDocumentation","src":"5886:121:9","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":1148,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"6021:6:9","nodeType":"FunctionDefinition","parameters":{"id":1115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1107,"mutability":"mutable","name":"x","nameLocation":"6036:1:9","nodeType":"VariableDeclaration","scope":1148,"src":"6028:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1106,"name":"uint256","nodeType":"ElementaryTypeName","src":"6028:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1109,"mutability":"mutable","name":"y","nameLocation":"6047:1:9","nodeType":"VariableDeclaration","scope":1148,"src":"6039:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1108,"name":"uint256","nodeType":"ElementaryTypeName","src":"6039:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1111,"mutability":"mutable","name":"denominator","nameLocation":"6058:11:9","nodeType":"VariableDeclaration","scope":1148,"src":"6050:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1110,"name":"uint256","nodeType":"ElementaryTypeName","src":"6050:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1114,"mutability":"mutable","name":"rounding","nameLocation":"6080:8:9","nodeType":"VariableDeclaration","scope":1148,"src":"6071:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"},"typeName":{"id":1113,"nodeType":"UserDefinedTypeName","pathNode":{"id":1112,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":897,"src":"6071:8:9"},"referencedDeclaration":897,"src":"6071:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"6027:62:9"},"returnParameters":{"id":1118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1117,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1148,"src":"6113:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1116,"name":"uint256","nodeType":"ElementaryTypeName","src":"6113:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6112:9:9"},"scope":1756,"src":"6012:299:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1259,"nodeType":"Block","src":"6587:1585:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1156,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"6601:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6606:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6601:6:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1162,"nodeType":"IfStatement","src":"6597:45:9","trueBody":{"id":1161,"nodeType":"Block","src":"6609:33:9","statements":[{"expression":{"hexValue":"30","id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6630:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1155,"id":1160,"nodeType":"Return","src":"6623:8:9"}]}},{"assignments":[1164],"declarations":[{"constant":false,"id":1164,"mutability":"mutable","name":"result","nameLocation":"7329:6:9","nodeType":"VariableDeclaration","scope":1259,"src":"7321:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1163,"name":"uint256","nodeType":"ElementaryTypeName","src":"7321:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1173,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7338:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1167,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"7349:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1166,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[1428,1464],"referencedDeclaration":1428,"src":"7344:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7344:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7355:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7344:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1171,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7343:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7338:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7321:36:9"},{"id":1258,"nodeType":"UncheckedBlock","src":"7758:408:9","statements":[{"expression":{"id":1183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1174,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7782:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7792:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1176,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"7801:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1177,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7805:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7801:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7792:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1180,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7791:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7816:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7791:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7782:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1184,"nodeType":"ExpressionStatement","src":"7782:35:9"},{"expression":{"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1185,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7831:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1186,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7841:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1187,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"7850:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1188,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7854:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7850:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7841:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1191,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7840:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7865:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7840:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7831:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1195,"nodeType":"ExpressionStatement","src":"7831:35:9"},{"expression":{"id":1205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1196,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7880:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1197,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7890:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1198,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"7899:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7903:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7899:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7890:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1202,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7889:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7914:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7889:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7880:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1206,"nodeType":"ExpressionStatement","src":"7880:35:9"},{"expression":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1207,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7929:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1208,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7939:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"7948:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1210,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7952:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7948:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7939:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1213,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7938:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7938:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7929:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1217,"nodeType":"ExpressionStatement","src":"7929:35:9"},{"expression":{"id":1227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1218,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7978:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1219,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"7988:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1220,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"7997:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1221,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"8001:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7997:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7988:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1224,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7987:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8012:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7987:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7978:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1228,"nodeType":"ExpressionStatement","src":"7978:35:9"},{"expression":{"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1229,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"8027:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1230,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"8037:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1231,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"8046:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1232,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"8050:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8046:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8037:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1235,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8036:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8061:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8036:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8027:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1239,"nodeType":"ExpressionStatement","src":"8027:35:9"},{"expression":{"id":1249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1240,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"8076:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1241,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"8086:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1242,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"8095:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1243,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"8099:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8095:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8086:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1246,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8085:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8110:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8085:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8076:35:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1250,"nodeType":"ExpressionStatement","src":"8076:35:9"},{"expression":{"arguments":[{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"8136:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1253,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"8144:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1254,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"8148:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8144:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1251,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"8132:3:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8132:23:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1155,"id":1257,"nodeType":"Return","src":"8125:30:9"}]}]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"6317:208:9","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":1260,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6539:4:9","nodeType":"FunctionDefinition","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"a","nameLocation":"6552:1:9","nodeType":"VariableDeclaration","scope":1260,"src":"6544:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"6544:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6543:11:9"},"returnParameters":{"id":1155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1260,"src":"6578:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1153,"name":"uint256","nodeType":"ElementaryTypeName","src":"6578:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6577:9:9"},"scope":1756,"src":"6530:1642:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1295,"nodeType":"Block","src":"8348:161:9","statements":[{"id":1294,"nodeType":"UncheckedBlock","src":"8358:145:9","statements":[{"assignments":[1272],"declarations":[{"constant":false,"id":1272,"mutability":"mutable","name":"result","nameLocation":"8390:6:9","nodeType":"VariableDeclaration","scope":1294,"src":"8382:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1271,"name":"uint256","nodeType":"ElementaryTypeName","src":"8382:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1276,"initialValue":{"arguments":[{"id":1274,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1263,"src":"8404:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1273,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[1260,1296],"referencedDeclaration":1260,"src":"8399:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8399:7:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8382:24:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1277,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"8427:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"},"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1278,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"8437:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1279,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"8449:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$897_$","typeString":"type(enum Math.Rounding)"}},"id":1280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":895,"src":"8449:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"src":"8437:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1282,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"8464:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1283,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"8473:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1285,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1263,"src":"8482:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8464:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8437:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8490:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8437:54:9","trueExpression":{"hexValue":"31","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8486:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1291,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8436:56:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8427:65:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1270,"id":1293,"nodeType":"Return","src":"8420:72:9"}]}]},"documentation":{"id":1261,"nodeType":"StructuredDocumentation","src":"8178:89:9","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":1296,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8281:4:9","nodeType":"FunctionDefinition","parameters":{"id":1267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1263,"mutability":"mutable","name":"a","nameLocation":"8294:1:9","nodeType":"VariableDeclaration","scope":1296,"src":"8286:9:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1262,"name":"uint256","nodeType":"ElementaryTypeName","src":"8286:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1266,"mutability":"mutable","name":"rounding","nameLocation":"8306:8:9","nodeType":"VariableDeclaration","scope":1296,"src":"8297:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"},"typeName":{"id":1265,"nodeType":"UserDefinedTypeName","pathNode":{"id":1264,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":897,"src":"8297:8:9"},"referencedDeclaration":897,"src":"8297:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8285:30:9"},"returnParameters":{"id":1270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1296,"src":"8339:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1268,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8338:9:9"},"scope":1756,"src":"8272:237:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1427,"nodeType":"Block","src":"8694:922:9","statements":[{"assignments":[1305],"declarations":[{"constant":false,"id":1305,"mutability":"mutable","name":"result","nameLocation":"8712:6:9","nodeType":"VariableDeclaration","scope":1427,"src":"8704:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1304,"name":"uint256","nodeType":"ElementaryTypeName","src":"8704:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1307,"initialValue":{"hexValue":"30","id":1306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8721:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8704:18:9"},{"id":1424,"nodeType":"UncheckedBlock","src":"8732:855:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1308,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"8760:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8769:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8760:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8760:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1322,"nodeType":"IfStatement","src":"8756:99:9","trueBody":{"id":1321,"nodeType":"Block","src":"8778:77:9","statements":[{"expression":{"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1313,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"8796:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8796:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1316,"nodeType":"ExpressionStatement","src":"8796:13:9"},{"expression":{"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1317,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"8827:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":1318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8837:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8827:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1320,"nodeType":"ExpressionStatement","src":"8827:13:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1323,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"8872:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8881:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8872:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8886:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8872:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1337,"nodeType":"IfStatement","src":"8868:96:9","trueBody":{"id":1336,"nodeType":"Block","src":"8889:75:9","statements":[{"expression":{"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1328,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"8907:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8917:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8907:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1331,"nodeType":"ExpressionStatement","src":"8907:12:9"},{"expression":{"id":1334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1332,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"8937:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8947:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8937:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1335,"nodeType":"ExpressionStatement","src":"8937:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1338,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"8981:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8981:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8995:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8981:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1352,"nodeType":"IfStatement","src":"8977:96:9","trueBody":{"id":1351,"nodeType":"Block","src":"8998:75:9","statements":[{"expression":{"id":1345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9016:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9026:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9016:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1346,"nodeType":"ExpressionStatement","src":"9016:12:9"},{"expression":{"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1347,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"9046:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9056:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9046:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1350,"nodeType":"ExpressionStatement","src":"9046:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1353,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9090:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9090:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9104:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9090:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1367,"nodeType":"IfStatement","src":"9086:96:9","trueBody":{"id":1366,"nodeType":"Block","src":"9107:75:9","statements":[{"expression":{"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1358,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9125:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9135:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9125:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1361,"nodeType":"ExpressionStatement","src":"9125:12:9"},{"expression":{"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1362,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"9155:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9165:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"9155:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1365,"nodeType":"ExpressionStatement","src":"9155:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9199:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9208:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9199:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9212:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9199:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1382,"nodeType":"IfStatement","src":"9195:93:9","trueBody":{"id":1381,"nodeType":"Block","src":"9215:73:9","statements":[{"expression":{"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1373,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9233:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":1374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9243:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9233:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1376,"nodeType":"ExpressionStatement","src":"9233:11:9"},{"expression":{"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1377,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"9262:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9272:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9262:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1380,"nodeType":"ExpressionStatement","src":"9262:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1383,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9305:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":1384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9314:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9305:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9318:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9305:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1397,"nodeType":"IfStatement","src":"9301:93:9","trueBody":{"id":1396,"nodeType":"Block","src":"9321:73:9","statements":[{"expression":{"id":1390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1388,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9339:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9349:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9339:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1391,"nodeType":"ExpressionStatement","src":"9339:11:9"},{"expression":{"id":1394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1392,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"9368:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9378:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9368:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1395,"nodeType":"ExpressionStatement","src":"9368:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9411:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":1399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9420:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9411:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9424:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9411:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1412,"nodeType":"IfStatement","src":"9407:93:9","trueBody":{"id":1411,"nodeType":"Block","src":"9427:73:9","statements":[{"expression":{"id":1405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1403,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9445:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":1404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9455:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9445:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1406,"nodeType":"ExpressionStatement","src":"9445:11:9"},{"expression":{"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1407,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"9474:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9484:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9474:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1410,"nodeType":"ExpressionStatement","src":"9474:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1413,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9517:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9526:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9517:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9530:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9517:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1423,"nodeType":"IfStatement","src":"9513:64:9","trueBody":{"id":1422,"nodeType":"Block","src":"9533:44:9","statements":[{"expression":{"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1418,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"9551:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9561:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9551:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1421,"nodeType":"ExpressionStatement","src":"9551:11:9"}]}}]},{"expression":{"id":1425,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"9603:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1303,"id":1426,"nodeType":"Return","src":"9596:13:9"}]},"documentation":{"id":1297,"nodeType":"StructuredDocumentation","src":"8515:113:9","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":1428,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8642:4:9","nodeType":"FunctionDefinition","parameters":{"id":1300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1299,"mutability":"mutable","name":"value","nameLocation":"8655:5:9","nodeType":"VariableDeclaration","scope":1428,"src":"8647:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1298,"name":"uint256","nodeType":"ElementaryTypeName","src":"8647:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8646:15:9"},"returnParameters":{"id":1303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1428,"src":"8685:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1301,"name":"uint256","nodeType":"ElementaryTypeName","src":"8685:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8684:9:9"},"scope":1756,"src":"8633:983:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1463,"nodeType":"Block","src":"9849:165:9","statements":[{"id":1462,"nodeType":"UncheckedBlock","src":"9859:149:9","statements":[{"assignments":[1440],"declarations":[{"constant":false,"id":1440,"mutability":"mutable","name":"result","nameLocation":"9891:6:9","nodeType":"VariableDeclaration","scope":1462,"src":"9883:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"9883:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1444,"initialValue":{"arguments":[{"id":1442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1431,"src":"9905:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1441,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[1428,1464],"referencedDeclaration":1428,"src":"9900:4:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9900:11:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9883:28:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1445,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"9932:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1446,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"9942:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1447,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"9954:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$897_$","typeString":"type(enum Math.Rounding)"}},"id":1448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":895,"src":"9954:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"src":"9942:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9969:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1451,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"9974:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1453,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1431,"src":"9983:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9969:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9942:46:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9995:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9942:54:9","trueExpression":{"hexValue":"31","id":1456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9991:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1459,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9941:56:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9932:65:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1438,"id":1461,"nodeType":"Return","src":"9925:72:9"}]}]},"documentation":{"id":1429,"nodeType":"StructuredDocumentation","src":"9622:142:9","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1464,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9778:4:9","nodeType":"FunctionDefinition","parameters":{"id":1435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1431,"mutability":"mutable","name":"value","nameLocation":"9791:5:9","nodeType":"VariableDeclaration","scope":1464,"src":"9783:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1430,"name":"uint256","nodeType":"ElementaryTypeName","src":"9783:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1434,"mutability":"mutable","name":"rounding","nameLocation":"9807:8:9","nodeType":"VariableDeclaration","scope":1464,"src":"9798:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"},"typeName":{"id":1433,"nodeType":"UserDefinedTypeName","pathNode":{"id":1432,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":897,"src":"9798:8:9"},"referencedDeclaration":897,"src":"9798:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9782:34:9"},"returnParameters":{"id":1438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1437,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1464,"src":"9840:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1436,"name":"uint256","nodeType":"ElementaryTypeName","src":"9840:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9839:9:9"},"scope":1756,"src":"9769:245:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1592,"nodeType":"Block","src":"10201:854:9","statements":[{"assignments":[1473],"declarations":[{"constant":false,"id":1473,"mutability":"mutable","name":"result","nameLocation":"10219:6:9","nodeType":"VariableDeclaration","scope":1592,"src":"10211:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1472,"name":"uint256","nodeType":"ElementaryTypeName","src":"10211:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1475,"initialValue":{"hexValue":"30","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10228:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10211:18:9"},{"id":1589,"nodeType":"UncheckedBlock","src":"10239:787:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10267:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10276:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10282:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10276:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10267:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1492,"nodeType":"IfStatement","src":"10263:103:9","trueBody":{"id":1491,"nodeType":"Block","src":"10286:80:9","statements":[{"expression":{"id":1485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1481,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10304:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10313:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10313:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10304:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1486,"nodeType":"ExpressionStatement","src":"10304:17:9"},{"expression":{"id":1489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1487,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"10339:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10349:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10339:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1490,"nodeType":"ExpressionStatement","src":"10339:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10383:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10392:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10398:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10392:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10383:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1509,"nodeType":"IfStatement","src":"10379:103:9","trueBody":{"id":1508,"nodeType":"Block","src":"10402:80:9","statements":[{"expression":{"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1498,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10420:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10435:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10429:8:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10420:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1503,"nodeType":"ExpressionStatement","src":"10420:17:9"},{"expression":{"id":1506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1504,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"10455:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10465:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10455:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1507,"nodeType":"ExpressionStatement","src":"10455:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1510,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10499:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10508:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10514:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10508:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10499:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1526,"nodeType":"IfStatement","src":"10495:103:9","trueBody":{"id":1525,"nodeType":"Block","src":"10518:80:9","statements":[{"expression":{"id":1519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1515,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10536:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10545:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10551:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10545:8:9","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10536:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1520,"nodeType":"ExpressionStatement","src":"10536:17:9"},{"expression":{"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1521,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"10571:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10581:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10571:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1524,"nodeType":"ExpressionStatement","src":"10571:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10615:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10624:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10630:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10624:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10615:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1543,"nodeType":"IfStatement","src":"10611:100:9","trueBody":{"id":1542,"nodeType":"Block","src":"10633:78:9","statements":[{"expression":{"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1532,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10651:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10660:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10666:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10660:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10651:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1537,"nodeType":"ExpressionStatement","src":"10651:16:9"},{"expression":{"id":1540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1538,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"10685:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10695:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10685:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1541,"nodeType":"ExpressionStatement","src":"10685:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1544,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10728:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10737:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10743:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10737:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10728:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1560,"nodeType":"IfStatement","src":"10724:100:9","trueBody":{"id":1559,"nodeType":"Block","src":"10746:78:9","statements":[{"expression":{"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10764:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10773:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10779:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10773:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10764:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1554,"nodeType":"ExpressionStatement","src":"10764:16:9"},{"expression":{"id":1557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1555,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"10798:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10808:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10798:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1558,"nodeType":"ExpressionStatement","src":"10798:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1561,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10841:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10850:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10856:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10850:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10841:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1577,"nodeType":"IfStatement","src":"10837:100:9","trueBody":{"id":1576,"nodeType":"Block","src":"10859:78:9","statements":[{"expression":{"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1566,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10877:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10886:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10892:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10886:7:9","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10877:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1571,"nodeType":"ExpressionStatement","src":"10877:16:9"},{"expression":{"id":1574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1572,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"10911:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10921:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10911:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1575,"nodeType":"ExpressionStatement","src":"10911:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1578,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"10954:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10963:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10969:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10963:7:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10954:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1588,"nodeType":"IfStatement","src":"10950:66:9","trueBody":{"id":1587,"nodeType":"Block","src":"10972:44:9","statements":[{"expression":{"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1583,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"10990:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11000:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10990:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1586,"nodeType":"ExpressionStatement","src":"10990:11:9"}]}}]},{"expression":{"id":1590,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"11042:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1471,"id":1591,"nodeType":"Return","src":"11035:13:9"}]},"documentation":{"id":1465,"nodeType":"StructuredDocumentation","src":"10020:114:9","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":1593,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10148:5:9","nodeType":"FunctionDefinition","parameters":{"id":1468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1467,"mutability":"mutable","name":"value","nameLocation":"10162:5:9","nodeType":"VariableDeclaration","scope":1593,"src":"10154:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1466,"name":"uint256","nodeType":"ElementaryTypeName","src":"10154:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10153:15:9"},"returnParameters":{"id":1471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1470,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1593,"src":"10192:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1469,"name":"uint256","nodeType":"ElementaryTypeName","src":"10192:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10191:9:9"},"scope":1756,"src":"10139:916:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1628,"nodeType":"Block","src":"11290:167:9","statements":[{"id":1627,"nodeType":"UncheckedBlock","src":"11300:151:9","statements":[{"assignments":[1605],"declarations":[{"constant":false,"id":1605,"mutability":"mutable","name":"result","nameLocation":"11332:6:9","nodeType":"VariableDeclaration","scope":1627,"src":"11324:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1604,"name":"uint256","nodeType":"ElementaryTypeName","src":"11324:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1609,"initialValue":{"arguments":[{"id":1607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1596,"src":"11347:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1606,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1593,1629],"referencedDeclaration":1593,"src":"11341:5:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11341:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11324:29:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1610,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"11374:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"},"id":1614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1611,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1599,"src":"11384:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1612,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"11396:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$897_$","typeString":"type(enum Math.Rounding)"}},"id":1613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":895,"src":"11396:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"src":"11384:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11411:2:9","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1616,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"11417:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1618,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1596,"src":"11426:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11411:20:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11384:47:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11438:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11384:55:9","trueExpression":{"hexValue":"31","id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11434:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11383:57:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11374:66:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1603,"id":1626,"nodeType":"Return","src":"11367:73:9"}]}]},"documentation":{"id":1594,"nodeType":"StructuredDocumentation","src":"11061:143:9","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1629,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"11218:5:9","nodeType":"FunctionDefinition","parameters":{"id":1600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1596,"mutability":"mutable","name":"value","nameLocation":"11232:5:9","nodeType":"VariableDeclaration","scope":1629,"src":"11224:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1595,"name":"uint256","nodeType":"ElementaryTypeName","src":"11224:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1599,"mutability":"mutable","name":"rounding","nameLocation":"11248:8:9","nodeType":"VariableDeclaration","scope":1629,"src":"11239:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"},"typeName":{"id":1598,"nodeType":"UserDefinedTypeName","pathNode":{"id":1597,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":897,"src":"11239:8:9"},"referencedDeclaration":897,"src":"11239:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11223:34:9"},"returnParameters":{"id":1603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1602,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1629,"src":"11281:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1601,"name":"uint256","nodeType":"ElementaryTypeName","src":"11281:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11280:9:9"},"scope":1756,"src":"11209:248:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1715,"nodeType":"Block","src":"11771:600:9","statements":[{"assignments":[1638],"declarations":[{"constant":false,"id":1638,"mutability":"mutable","name":"result","nameLocation":"11789:6:9","nodeType":"VariableDeclaration","scope":1715,"src":"11781:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1637,"name":"uint256","nodeType":"ElementaryTypeName","src":"11781:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1640,"initialValue":{"hexValue":"30","id":1639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11798:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11781:18:9"},{"id":1712,"nodeType":"UncheckedBlock","src":"11809:533:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1641,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"11837:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11846:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11837:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11852:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11837:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1655,"nodeType":"IfStatement","src":"11833:98:9","trueBody":{"id":1654,"nodeType":"Block","src":"11855:76:9","statements":[{"expression":{"id":1648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1646,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"11873:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11883:3:9","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11873:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1649,"nodeType":"ExpressionStatement","src":"11873:13:9"},{"expression":{"id":1652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1650,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"11904:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11914:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11904:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1653,"nodeType":"ExpressionStatement","src":"11904:12:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1656,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"11948:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11957:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11948:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11962:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11948:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1670,"nodeType":"IfStatement","src":"11944:95:9","trueBody":{"id":1669,"nodeType":"Block","src":"11965:74:9","statements":[{"expression":{"id":1663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1661,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"11983:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11993:2:9","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11983:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1664,"nodeType":"ExpressionStatement","src":"11983:12:9"},{"expression":{"id":1667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1665,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"12013:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12023:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12013:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1668,"nodeType":"ExpressionStatement","src":"12013:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1671,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"12056:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12065:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12056:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12070:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12056:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1685,"nodeType":"IfStatement","src":"12052:95:9","trueBody":{"id":1684,"nodeType":"Block","src":"12073:74:9","statements":[{"expression":{"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1676,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"12091:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12101:2:9","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12091:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1679,"nodeType":"ExpressionStatement","src":"12091:12:9"},{"expression":{"id":1682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1680,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"12121:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12131:1:9","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12121:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1683,"nodeType":"ExpressionStatement","src":"12121:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1686,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"12164:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12173:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12164:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12178:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12164:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1700,"nodeType":"IfStatement","src":"12160:95:9","trueBody":{"id":1699,"nodeType":"Block","src":"12181:74:9","statements":[{"expression":{"id":1693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1691,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"12199:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12209:2:9","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12199:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1694,"nodeType":"ExpressionStatement","src":"12199:12:9"},{"expression":{"id":1697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1695,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"12229:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12239:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12229:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1698,"nodeType":"ExpressionStatement","src":"12229:11:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1701,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"12272:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12281:1:9","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12272:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12272:14:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1711,"nodeType":"IfStatement","src":"12268:64:9","trueBody":{"id":1710,"nodeType":"Block","src":"12288:44:9","statements":[{"expression":{"id":1708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1706,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"12306:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12316:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12306:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1709,"nodeType":"ExpressionStatement","src":"12306:11:9"}]}}]},{"expression":{"id":1713,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"12358:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1636,"id":1714,"nodeType":"Return","src":"12351:13:9"}]},"documentation":{"id":1630,"nodeType":"StructuredDocumentation","src":"11463:240:9","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":1716,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11717:6:9","nodeType":"FunctionDefinition","parameters":{"id":1633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1632,"mutability":"mutable","name":"value","nameLocation":"11732:5:9","nodeType":"VariableDeclaration","scope":1716,"src":"11724:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"11724:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11723:15:9"},"returnParameters":{"id":1636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1635,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1716,"src":"11762:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1634,"name":"uint256","nodeType":"ElementaryTypeName","src":"11762:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11761:9:9"},"scope":1756,"src":"11708:663:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1754,"nodeType":"Block","src":"12608:174:9","statements":[{"id":1753,"nodeType":"UncheckedBlock","src":"12618:158:9","statements":[{"assignments":[1728],"declarations":[{"constant":false,"id":1728,"mutability":"mutable","name":"result","nameLocation":"12650:6:9","nodeType":"VariableDeclaration","scope":1753,"src":"12642:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1727,"name":"uint256","nodeType":"ElementaryTypeName","src":"12642:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1732,"initialValue":{"arguments":[{"id":1730,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"12666:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1729,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1716,1755],"referencedDeclaration":1716,"src":"12659:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12659:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12642:30:9"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1733,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1728,"src":"12693:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"},"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1734,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"12703:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1735,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"12715:8:9","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$897_$","typeString":"type(enum Math.Rounding)"}},"id":1736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":895,"src":"12715:11:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"src":"12703:23:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12730:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1739,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1728,"src":"12736:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":1740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12746:1:9","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"12736:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1742,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12735:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1744,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"12751:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12730:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12703:53:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12703:61:9","trueExpression":{"hexValue":"31","id":1747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12759:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1750,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12702:63:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12693:72:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1726,"id":1752,"nodeType":"Return","src":"12686:79:9"}]}]},"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"12377:144:9","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1755,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12535:6:9","nodeType":"FunctionDefinition","parameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"value","nameLocation":"12550:5:9","nodeType":"VariableDeclaration","scope":1755,"src":"12542:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"12542:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1722,"mutability":"mutable","name":"rounding","nameLocation":"12566:8:9","nodeType":"VariableDeclaration","scope":1755,"src":"12557:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"},"typeName":{"id":1721,"nodeType":"UserDefinedTypeName","pathNode":{"id":1720,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":897,"src":"12557:8:9"},"referencedDeclaration":897,"src":"12557:8:9","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$897","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12541:34:9"},"returnParameters":{"id":1726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1725,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1755,"src":"12599:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1724,"name":"uint256","nodeType":"ElementaryTypeName","src":"12599:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12598:9:9"},"scope":1756,"src":"12526:256:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1757,"src":"202:12582:9","usedErrors":[]}],"src":"103:12682:9"},"id":9},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SignedMath":[1861]},"id":1862,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1758,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"109:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":1759,"nodeType":"StructuredDocumentation","src":"134:80:10","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":1861,"linearizedBaseContracts":[1861],"name":"SignedMath","nameLocation":"223:10:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":1776,"nodeType":"Block","src":"375:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1769,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1762,"src":"392:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1770,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"396:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"392:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1773,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"404:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"392:13:10","trueExpression":{"id":1772,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1762,"src":"400:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1768,"id":1775,"nodeType":"Return","src":"385:20:10"}]},"documentation":{"id":1760,"nodeType":"StructuredDocumentation","src":"240:66:10","text":" @dev Returns the largest of two signed numbers."},"id":1777,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"320:3:10","nodeType":"FunctionDefinition","parameters":{"id":1765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1762,"mutability":"mutable","name":"a","nameLocation":"331:1:10","nodeType":"VariableDeclaration","scope":1777,"src":"324:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1761,"name":"int256","nodeType":"ElementaryTypeName","src":"324:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1764,"mutability":"mutable","name":"b","nameLocation":"341:1:10","nodeType":"VariableDeclaration","scope":1777,"src":"334:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1763,"name":"int256","nodeType":"ElementaryTypeName","src":"334:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"323:20:10"},"returnParameters":{"id":1768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1777,"src":"367:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1766,"name":"int256","nodeType":"ElementaryTypeName","src":"367:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"366:8:10"},"scope":1861,"src":"311:101:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1794,"nodeType":"Block","src":"554:37:10","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1787,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"571:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1788,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1782,"src":"575:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"571:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1791,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1782,"src":"583:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"571:13:10","trueExpression":{"id":1790,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"579:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1786,"id":1793,"nodeType":"Return","src":"564:20:10"}]},"documentation":{"id":1778,"nodeType":"StructuredDocumentation","src":"418:67:10","text":" @dev Returns the smallest of two signed numbers."},"id":1795,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"499:3:10","nodeType":"FunctionDefinition","parameters":{"id":1783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1780,"mutability":"mutable","name":"a","nameLocation":"510:1:10","nodeType":"VariableDeclaration","scope":1795,"src":"503:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1779,"name":"int256","nodeType":"ElementaryTypeName","src":"503:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1782,"mutability":"mutable","name":"b","nameLocation":"520:1:10","nodeType":"VariableDeclaration","scope":1795,"src":"513:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1781,"name":"int256","nodeType":"ElementaryTypeName","src":"513:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"502:20:10"},"returnParameters":{"id":1786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1795,"src":"546:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1784,"name":"int256","nodeType":"ElementaryTypeName","src":"546:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"545:8:10"},"scope":1861,"src":"490:101:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1838,"nodeType":"Block","src":"796:162:10","statements":[{"assignments":[1806],"declarations":[{"constant":false,"id":1806,"mutability":"mutable","name":"x","nameLocation":"865:1:10","nodeType":"VariableDeclaration","scope":1838,"src":"858:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1805,"name":"int256","nodeType":"ElementaryTypeName","src":"858:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":1819,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1807,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"870:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1808,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"874:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1810,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"869:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1811,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"881:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1812,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"885:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"881:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1814,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"891:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"880:12:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"879:14:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"869:24:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"858:35:10"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1820,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1806,"src":"910:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1825,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1806,"src":"930:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"922:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1823,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:10","typeDescriptions":{}}},"id":1826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"922:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":1827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"936:3:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"922:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"915:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":1821,"name":"int256","nodeType":"ElementaryTypeName","src":"915:6:10","typeDescriptions":{}}},"id":1829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"915:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1830,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"944:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1831,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"948:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"944:5:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1833,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"943:7:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"915:35:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":1835,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"914:37:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"910:41:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":1804,"id":1837,"nodeType":"Return","src":"903:48:10"}]},"documentation":{"id":1796,"nodeType":"StructuredDocumentation","src":"597:126:10","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":1839,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"737:7:10","nodeType":"FunctionDefinition","parameters":{"id":1801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1798,"mutability":"mutable","name":"a","nameLocation":"752:1:10","nodeType":"VariableDeclaration","scope":1839,"src":"745:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1797,"name":"int256","nodeType":"ElementaryTypeName","src":"745:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1800,"mutability":"mutable","name":"b","nameLocation":"762:1:10","nodeType":"VariableDeclaration","scope":1839,"src":"755:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1799,"name":"int256","nodeType":"ElementaryTypeName","src":"755:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"744:20:10"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1839,"src":"788:6:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1802,"name":"int256","nodeType":"ElementaryTypeName","src":"788:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"787:8:10"},"scope":1861,"src":"728:230:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1859,"nodeType":"Block","src":"1102:158:10","statements":[{"id":1858,"nodeType":"UncheckedBlock","src":"1112:142:10","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1849,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1842,"src":"1227:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":1850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1227:6:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1240:2:10","subExpression":{"id":1853,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1842,"src":"1241:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1227:15:10","trueExpression":{"id":1852,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1842,"src":"1236:1:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":1848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1219:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1847,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:10","typeDescriptions":{}}},"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1219:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1846,"id":1857,"nodeType":"Return","src":"1212:31:10"}]}]},"documentation":{"id":1840,"nodeType":"StructuredDocumentation","src":"964:78:10","text":" @dev Returns the absolute unsigned value of a signed value."},"id":1860,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1056:3:10","nodeType":"FunctionDefinition","parameters":{"id":1843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1842,"mutability":"mutable","name":"n","nameLocation":"1067:1:10","nodeType":"VariableDeclaration","scope":1860,"src":"1060:8:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1841,"name":"int256","nodeType":"ElementaryTypeName","src":"1060:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1059:10:10"},"returnParameters":{"id":1846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1845,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1860,"src":"1093:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1844,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1092:9:10"},"scope":1861,"src":"1047:213:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1862,"src":"215:1047:10","usedErrors":[]}],"src":"109:1154:10"},"id":10},"contracts/ERC721All.sol":{"ast":{"absolutePath":"contracts/ERC721All.sol","exportedSymbols":{"Address":[603],"Context":[625],"ERC165":[878],"ERC721":[3039],"ERC721All":[2171],"IERC165":[890],"IERC721":[228],"IERC721Metadata":[273],"IERC721Receiver":[246],"Math":[1756],"Ownable":[112],"SignedMath":[1861],"Strings":[854]},"id":2172,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1863,"literals":["solidity","0.8",".13"],"nodeType":"PragmaDirective","src":"213:23:11"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":1864,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2172,"sourceUnit":113,"src":"238:52:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/lib/ERC721.sol","file":"./lib/ERC721.sol","id":1865,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2172,"sourceUnit":3040,"src":"292:26:11","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1867,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"366:7:11"},"id":1868,"nodeType":"InheritanceSpecifier","src":"366:7:11"},{"baseName":{"id":1869,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":3039,"src":"375:6:11"},"id":1870,"nodeType":"InheritanceSpecifier","src":"375:6:11"}],"canonicalName":"ERC721All","contractDependencies":[],"contractKind":"contract","documentation":{"id":1866,"nodeType":"StructuredDocumentation","src":"320:23:11","text":" @dev todo..."},"fullyImplemented":true,"id":2171,"linearizedBaseContracts":[2171,3039,273,228,878,890,112,625],"name":"ERC721All","nameLocation":"353:9:11","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1874,"mutability":"mutable","name":"_activeTokens","nameLocation":"420:13:11","nodeType":"VariableDeclaration","scope":2171,"src":"386:47:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":1873,"keyType":{"id":1871,"name":"uint256","nodeType":"ElementaryTypeName","src":"394:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"386:24:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueType":{"id":1872,"name":"bool","nodeType":"ElementaryTypeName","src":"405:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"body":{"id":1887,"nodeType":"Block","src":"523:2:11","statements":[]},"id":1888,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1881,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"499:4:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1882,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1878,"src":"505:6:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":1883,"kind":"baseConstructorSpecifier","modifierName":{"id":1880,"name":"ERC721","nodeType":"IdentifierPath","referencedDeclaration":3039,"src":"492:6:11"},"nodeType":"ModifierInvocation","src":"492:20:11"},{"arguments":[],"id":1885,"kind":"baseConstructorSpecifier","modifierName":{"id":1884,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"513:7:11"},"nodeType":"ModifierInvocation","src":"513:9:11"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1876,"mutability":"mutable","name":"name","nameLocation":"464:4:11","nodeType":"VariableDeclaration","scope":1888,"src":"450:18:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1875,"name":"string","nodeType":"ElementaryTypeName","src":"450:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1878,"mutability":"mutable","name":"symbol","nameLocation":"484:6:11","nodeType":"VariableDeclaration","scope":1888,"src":"470:20:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1877,"name":"string","nodeType":"ElementaryTypeName","src":"470:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"449:42:11"},"returnParameters":{"id":1886,"nodeType":"ParameterList","parameters":[],"src":"523:0:11"},"scope":2171,"src":"438:87:11","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2292],"body":{"id":1924,"nodeType":"Block","src":"655:191:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1898,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1891,"src":"669:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"686:1:11","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":1900,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"678:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1899,"name":"address","nodeType":"ElementaryTypeName","src":"678:7:11","typeDescriptions":{}}},"id":1902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"678:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"669:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":1904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"690:43:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":1897,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"661:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"661:73:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1906,"nodeType":"ExpressionStatement","src":"661:73:11"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":1907,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"744:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1909,"indexExpression":{"id":1908,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1891,"src":"754:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"744:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"764:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"744:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":1913,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1891,"src":"782:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1912,"name":"_hasOwnToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"769:12:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"769:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"744:44:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1919,"nodeType":"IfStatement","src":"740:73:11","trueBody":{"id":1918,"nodeType":"Block","src":"790:23:11","statements":[{"expression":{"hexValue":"31","id":1916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"805:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":1896,"id":1917,"nodeType":"Return","src":"798:8:11"}]}},{"expression":{"baseExpression":{"id":1920,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"825:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1922,"indexExpression":{"id":1921,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1891,"src":"835:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"825:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1896,"id":1923,"nodeType":"Return","src":"818:23:11"}]},"documentation":{"id":1889,"nodeType":"StructuredDocumentation","src":"529:50:11","text":" @dev Overrides {IERC721-balanceOf}."},"functionSelector":"70a08231","id":1925,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"591:9:11","nodeType":"FunctionDefinition","overrides":{"id":1893,"nodeType":"OverrideSpecifier","overrides":[],"src":"628:8:11"},"parameters":{"id":1892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1891,"mutability":"mutable","name":"owner","nameLocation":"609:5:11","nodeType":"VariableDeclaration","scope":1925,"src":"601:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1890,"name":"address","nodeType":"ElementaryTypeName","src":"601:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"600:15:11"},"returnParameters":{"id":1896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1895,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1925,"src":"646:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1894,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:11"},"scope":2171,"src":"582:264:11","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2320],"body":{"id":1967,"nodeType":"Block","src":"974:333:11","statements":[{"expression":{"arguments":[{"arguments":[{"id":1936,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1928,"src":"1003:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1935,"name":"_isTokenActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"988:14:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"988:23:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":1938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1013:26:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":1934,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"980:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"980:60:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1940,"nodeType":"ExpressionStatement","src":"980:60:11"},{"assignments":[1942],"declarations":[{"constant":false,"id":1942,"mutability":"mutable","name":"owner","nameLocation":"1182:5:11","nodeType":"VariableDeclaration","scope":1967,"src":"1174:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1941,"name":"address","nodeType":"ElementaryTypeName","src":"1174:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1946,"initialValue":{"baseExpression":{"id":1943,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"1190:7:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":1945,"indexExpression":{"id":1944,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1928,"src":"1198:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1190:16:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1174:32:11"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1947,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"1216:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1233:1:11","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":1949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1225:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1948,"name":"address","nodeType":"ElementaryTypeName","src":"1225:7:11","typeDescriptions":{}}},"id":1951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1225:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1216:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1964,"nodeType":"IfStatement","src":"1212:73:11","trueBody":{"id":1963,"nodeType":"Block","src":"1237:48:11","statements":[{"expression":{"id":1961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1953,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"1245:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":1958,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1928,"src":"1269:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1261:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1956,"name":"uint160","nodeType":"ElementaryTypeName","src":"1261:7:11","typeDescriptions":{}}},"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1261:16:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1253:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1954,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:11","typeDescriptions":{}}},"id":1960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1253:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1245:33:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1962,"nodeType":"ExpressionStatement","src":"1245:33:11"}]}},{"expression":{"id":1965,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"1297:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1933,"id":1966,"nodeType":"Return","src":"1290:12:11"}]},"documentation":{"id":1926,"nodeType":"StructuredDocumentation","src":"850:48:11","text":" @dev Overrides {IERC721-ownerOf}."},"functionSelector":"6352211e","id":1968,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"910:7:11","nodeType":"FunctionDefinition","overrides":{"id":1930,"nodeType":"OverrideSpecifier","overrides":[],"src":"947:8:11"},"parameters":{"id":1929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1928,"mutability":"mutable","name":"tokenId","nameLocation":"926:7:11","nodeType":"VariableDeclaration","scope":1968,"src":"918:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1927,"name":"uint256","nodeType":"ElementaryTypeName","src":"918:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"917:17:11"},"returnParameters":{"id":1933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1932,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1968,"src":"965:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1931,"name":"address","nodeType":"ElementaryTypeName","src":"965:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"964:9:11"},"scope":2171,"src":"901:406:11","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":1976,"nodeType":"Block","src":"1334:30:11","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1972,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"1346:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1346:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1971,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[2026,2749],"referencedDeclaration":2026,"src":"1340:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1340:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1975,"nodeType":"ExpressionStatement","src":"1340:19:11"}]},"functionSelector":"1249c58b","id":1977,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"1320:4:11","nodeType":"FunctionDefinition","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[],"src":"1324:2:11"},"returnParameters":{"id":1970,"nodeType":"ParameterList","parameters":[],"src":"1334:0:11"},"scope":2171,"src":"1311:53:11","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2025,"nodeType":"Block","src":"1410:376:11","statements":[{"assignments":[1983],"declarations":[{"constant":false,"id":1983,"mutability":"mutable","name":"tokenId","nameLocation":"1458:7:11","nodeType":"VariableDeclaration","scope":2025,"src":"1450:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1982,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1991,"initialValue":{"arguments":[{"arguments":[{"id":1988,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1979,"src":"1484:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1476:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1986,"name":"uint160","nodeType":"ElementaryTypeName","src":"1476:7:11","typeDescriptions":{}}},"id":1989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1476:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1468:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1984,"name":"uint256","nodeType":"ElementaryTypeName","src":"1468:7:11","typeDescriptions":{}}},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1468:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1450:44:11"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1993,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1979,"src":"1509:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1529:1:11","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":1995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1521:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1994,"name":"address","nodeType":"ElementaryTypeName","src":"1521:7:11","typeDescriptions":{}}},"id":1997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1521:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1509:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":1999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1533:34:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":1992,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1501:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1501:67:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2001,"nodeType":"ExpressionStatement","src":"1501:67:11"},{"expression":{"arguments":[{"id":2006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1582:24:11","subExpression":{"arguments":[{"id":2004,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"1598:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2003,"name":"_isTokenActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"1583:14:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1583:23:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":2007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1608:30:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":2002,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1574:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1574:65:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2009,"nodeType":"ExpressionStatement","src":"1574:65:11"},{"expression":{"id":2014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2010,"name":"_activeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1874,"src":"1674:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2012,"indexExpression":{"id":2011,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"1688:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1674:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1699:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1674:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2015,"nodeType":"ExpressionStatement","src":"1674:29:11"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1759:1:11","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":2018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1751:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2017,"name":"address","nodeType":"ElementaryTypeName","src":"1751:7:11","typeDescriptions":{}}},"id":2020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1751:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2021,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1979,"src":"1763:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2022,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1983,"src":"1773:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2016,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"1742:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1742:39:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2024,"nodeType":"EmitStatement","src":"1737:44:11"}]},"id":2026,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"1377:5:11","nodeType":"FunctionDefinition","parameters":{"id":1980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1979,"mutability":"mutable","name":"receiver","nameLocation":"1391:8:11","nodeType":"VariableDeclaration","scope":2026,"src":"1383:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1978,"name":"address","nodeType":"ElementaryTypeName","src":"1383:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1382:18:11"},"returnParameters":{"id":1981,"nodeType":"ParameterList","parameters":[],"src":"1410:0:11"},"scope":2171,"src":"1368:418:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2883],"body":{"id":2109,"nodeType":"Block","src":"1886:560:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2038,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"1908:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2037,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[1968],"referencedDeclaration":1968,"src":"1900:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1900:16:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2040,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"1920:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1900:24:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":2042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1926:39:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":2036,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1892:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:74:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2044,"nodeType":"ExpressionStatement","src":"1892:74:11"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2046,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"1980:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1994:1:11","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":2048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1986:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2047,"name":"address","nodeType":"ElementaryTypeName","src":"1986:7:11","typeDescriptions":{}}},"id":2050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1986:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1980:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":2052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1998:38:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":2045,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1972:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1972:65:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2054,"nodeType":"ExpressionStatement","src":"1972:65:11"},{"expression":{"arguments":[{"id":2056,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"2065:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2057,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2071:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2058,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"2075:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2055,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"2044:20:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2044:39:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2060,"nodeType":"ExpressionStatement","src":"2044:39:11"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2154:1:11","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":2063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2146:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2062,"name":"address","nodeType":"ElementaryTypeName","src":"2146:7:11","typeDescriptions":{}}},"id":2065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2146:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2066,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"2158:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2061,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"2137:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2137:29:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2068,"nodeType":"ExpressionStatement","src":"2137:29:11"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2069,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"2240:7:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2071,"indexExpression":{"id":2070,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"2248:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2240:16:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2268:1:11","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":2073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2260:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2072,"name":"address","nodeType":"ElementaryTypeName","src":"2260:7:11","typeDescriptions":{}}},"id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2260:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2240:30:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2084,"nodeType":"IfStatement","src":"2236:71:11","trueBody":{"id":2083,"nodeType":"Block","src":"2272:35:11","statements":[{"expression":{"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2077,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"2280:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2079,"indexExpression":{"id":2078,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"2290:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2280:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2299:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2280:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2082,"nodeType":"ExpressionStatement","src":"2280:20:11"}]}},{"expression":{"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2085,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"2312:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2087,"indexExpression":{"id":2086,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2322:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2312:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2329:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2312:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2090,"nodeType":"ExpressionStatement","src":"2312:18:11"},{"expression":{"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2091,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"2336:7:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2093,"indexExpression":{"id":2092,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"2344:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2336:16:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2094,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2355:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2336:21:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2096,"nodeType":"ExpressionStatement","src":"2336:21:11"},{"eventCall":{"arguments":[{"id":2098,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"2378:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2099,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2384:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2100,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"2388:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2097,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2369:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2369:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2102,"nodeType":"EmitStatement","src":"2364:32:11"},{"expression":{"arguments":[{"id":2104,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"2423:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2105,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2429:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2106,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"2433:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2103,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"2403:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2403:38:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2108,"nodeType":"ExpressionStatement","src":"2403:38:11"}]},"id":2110,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"1799:9:11","nodeType":"FunctionDefinition","overrides":{"id":2034,"nodeType":"OverrideSpecifier","overrides":[],"src":"1877:8:11"},"parameters":{"id":2033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2028,"mutability":"mutable","name":"from","nameLocation":"1822:4:11","nodeType":"VariableDeclaration","scope":2110,"src":"1814:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2027,"name":"address","nodeType":"ElementaryTypeName","src":"1814:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2030,"mutability":"mutable","name":"to","nameLocation":"1840:2:11","nodeType":"VariableDeclaration","scope":2110,"src":"1832:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2029,"name":"address","nodeType":"ElementaryTypeName","src":"1832:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2032,"mutability":"mutable","name":"tokenId","nameLocation":"1856:7:11","nodeType":"VariableDeclaration","scope":2110,"src":"1848:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2031,"name":"uint256","nodeType":"ElementaryTypeName","src":"1848:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1808:59:11"},"returnParameters":{"id":2035,"nodeType":"ParameterList","parameters":[],"src":"1886:0:11"},"scope":2171,"src":"1790:656:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2150,"nodeType":"Block","src":"2516:207:11","statements":[{"assignments":[2118],"declarations":[{"constant":false,"id":2118,"mutability":"mutable","name":"ownerTokenId","nameLocation":"2530:12:11","nodeType":"VariableDeclaration","scope":2150,"src":"2522:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2117,"name":"uint256","nodeType":"ElementaryTypeName","src":"2522:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2126,"initialValue":{"arguments":[{"arguments":[{"id":2123,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"2561:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2553:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2121,"name":"uint160","nodeType":"ElementaryTypeName","src":"2553:7:11","typeDescriptions":{}}},"id":2124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2553:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2545:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2119,"name":"uint256","nodeType":"ElementaryTypeName","src":"2545:7:11","typeDescriptions":{}}},"id":2125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2545:23:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2522:46:11"},{"assignments":[2128],"declarations":[{"constant":false,"id":2128,"mutability":"mutable","name":"currentOwner","nameLocation":"2582:12:11","nodeType":"VariableDeclaration","scope":2150,"src":"2574:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2127,"name":"address","nodeType":"ElementaryTypeName","src":"2574:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2132,"initialValue":{"baseExpression":{"id":2129,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"2597:7:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2131,"indexExpression":{"id":2130,"name":"ownerTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"2605:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2597:21:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2574:44:11"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2134,"name":"ownerTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2118,"src":"2647:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2133,"name":"_isTokenActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"2632:14:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2632:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2136,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2128,"src":"2665:12:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2137,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2112,"src":"2681:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2665:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2139,"name":"currentOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2128,"src":"2690:12:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:11","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":2141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2706:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2140,"name":"address","nodeType":"ElementaryTypeName","src":"2706:7:11","typeDescriptions":{}}},"id":2143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2706:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2690:26:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2665:51:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2664:53:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2632:85:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2148,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2631:87:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2116,"id":2149,"nodeType":"Return","src":"2624:94:11"}]},"id":2151,"implemented":true,"kind":"function","modifiers":[],"name":"_hasOwnToken","nameLocation":"2459:12:11","nodeType":"FunctionDefinition","parameters":{"id":2113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2112,"mutability":"mutable","name":"owner","nameLocation":"2480:5:11","nodeType":"VariableDeclaration","scope":2151,"src":"2472:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2111,"name":"address","nodeType":"ElementaryTypeName","src":"2472:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2471:15:11"},"returnParameters":{"id":2116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2151,"src":"2510:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2114,"name":"bool","nodeType":"ElementaryTypeName","src":"2510:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2509:6:11"},"scope":2171,"src":"2450:273:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2169,"nodeType":"Block","src":"2797:126:11","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2158,"name":"_activeTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1874,"src":"2858:13:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":2160,"indexExpression":{"id":2159,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"2872:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2858:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2161,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"2884:7:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2163,"indexExpression":{"id":2162,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2153,"src":"2892:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2884:16:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2164,"name":"_NULL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2198,"src":"2904:13:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2884:33:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2858:59:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2167,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2857:61:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2157,"id":2168,"nodeType":"Return","src":"2850:68:11"}]},"id":2170,"implemented":true,"kind":"function","modifiers":[],"name":"_isTokenActive","nameLocation":"2736:14:11","nodeType":"FunctionDefinition","parameters":{"id":2154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2153,"mutability":"mutable","name":"tokenId","nameLocation":"2759:7:11","nodeType":"VariableDeclaration","scope":2170,"src":"2751:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2152,"name":"uint256","nodeType":"ElementaryTypeName","src":"2751:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2750:17:11"},"returnParameters":{"id":2157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2170,"src":"2791:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2155,"name":"bool","nodeType":"ElementaryTypeName","src":"2791:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2790:6:11"},"scope":2171,"src":"2727:196:11","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2172,"src":"344:2581:11","usedErrors":[]}],"src":"213:2713:11"},"id":11},"contracts/lib/ERC721.sol":{"ast":{"absolutePath":"contracts/lib/ERC721.sol","exportedSymbols":{"Address":[603],"Context":[625],"ERC165":[878],"ERC721":[3039],"IERC165":[890],"IERC721":[228],"IERC721Metadata":[273],"IERC721Receiver":[246],"Math":[1756],"SignedMath":[1861],"Strings":[854]},"id":3040,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2173,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"302:23:12"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":2174,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3040,"sourceUnit":229,"src":"327:58:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","id":2175,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3040,"sourceUnit":247,"src":"386:66:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","id":2176,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3040,"sourceUnit":274,"src":"453:77:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":2177,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3040,"sourceUnit":604,"src":"531:51:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":2178,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3040,"sourceUnit":626,"src":"583:51:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"@openzeppelin/contracts/utils/Strings.sol","id":2179,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3040,"sourceUnit":855,"src":"635:51:12","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165.sol","id":2180,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3040,"sourceUnit":879,"src":"687:64:12","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2182,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":625,"src":"1401:7:12"},"id":2183,"nodeType":"InheritanceSpecifier","src":"1401:7:12"},{"baseName":{"id":2184,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":878,"src":"1410:6:12"},"id":2185,"nodeType":"InheritanceSpecifier","src":"1410:6:12"},{"baseName":{"id":2186,"name":"IERC721","nodeType":"IdentifierPath","referencedDeclaration":228,"src":"1418:7:12"},"id":2187,"nodeType":"InheritanceSpecifier","src":"1418:7:12"},{"baseName":{"id":2188,"name":"IERC721Metadata","nodeType":"IdentifierPath","referencedDeclaration":273,"src":"1427:15:12"},"id":2189,"nodeType":"InheritanceSpecifier","src":"1427:15:12"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":2181,"nodeType":"StructuredDocumentation","src":"753:628:12","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}.\n NOTE:\n The only changes made here are:\n - change scope of \"_owners\" from private to internal\n - change scope of \"_balances\" from private to internal\n - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\"\n - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)"},"fullyImplemented":true,"id":3039,"linearizedBaseContracts":[3039,273,228,878,890,625],"name":"ERC721","nameLocation":"1391:6:12","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2192,"libraryName":{"id":2190,"name":"Address","nodeType":"IdentifierPath","referencedDeclaration":603,"src":"1455:7:12"},"nodeType":"UsingForDirective","src":"1449:26:12","typeName":{"id":2191,"name":"address","nodeType":"ElementaryTypeName","src":"1467:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":2195,"libraryName":{"id":2193,"name":"Strings","nodeType":"IdentifierPath","referencedDeclaration":854,"src":"1486:7:12"},"nodeType":"UsingForDirective","src":"1480:26:12","typeName":{"id":2194,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":2198,"mutability":"constant","name":"_NULL_ADDRESS","nameLocation":"1538:13:12","nodeType":"VariableDeclaration","scope":3039,"src":"1512:84:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2196,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307830303030303030303030303030303030303030303030303030303030303030303030303064456144","id":2197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1554:42:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x000000000000000000000000000000000000dEaD"},"visibility":"internal"},{"constant":false,"id":2200,"mutability":"mutable","name":"_name","nameLocation":"1636:5:12","nodeType":"VariableDeclaration","scope":3039,"src":"1621:20:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2199,"name":"string","nodeType":"ElementaryTypeName","src":"1621:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":2202,"mutability":"mutable","name":"_symbol","nameLocation":"1683:7:12","nodeType":"VariableDeclaration","scope":3039,"src":"1668:22:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":2201,"name":"string","nodeType":"ElementaryTypeName","src":"1668:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":2206,"mutability":"mutable","name":"_owners","nameLocation":"1780:7:12","nodeType":"VariableDeclaration","scope":3039,"src":"1743:44:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":2205,"keyType":{"id":2203,"name":"uint256","nodeType":"ElementaryTypeName","src":"1751:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1743:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":2204,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"internal"},{"constant":false,"id":2210,"mutability":"mutable","name":"_balances","nameLocation":"1875:9:12","nodeType":"VariableDeclaration","scope":3039,"src":"1838:46:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":2209,"keyType":{"id":2207,"name":"address","nodeType":"ElementaryTypeName","src":"1846:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1838:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":2208,"name":"uint256","nodeType":"ElementaryTypeName","src":"1857:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":2214,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1976:15:12","nodeType":"VariableDeclaration","scope":3039,"src":"1940:51:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":2213,"keyType":{"id":2211,"name":"uint256","nodeType":"ElementaryTypeName","src":"1948:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1940:27:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueType":{"id":2212,"name":"address","nodeType":"ElementaryTypeName","src":"1959:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":2220,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"2099:18:12","nodeType":"VariableDeclaration","scope":3039,"src":"2046:71:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":2219,"keyType":{"id":2215,"name":"address","nodeType":"ElementaryTypeName","src":"2054:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2046:44:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueType":{"id":2218,"keyType":{"id":2216,"name":"address","nodeType":"ElementaryTypeName","src":"2073:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2065:24:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":2217,"name":"bool","nodeType":"ElementaryTypeName","src":"2084:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":2236,"nodeType":"Block","src":"2293:57:12","statements":[{"expression":{"id":2230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2228,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"2303:5:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2229,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"2311:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2303:13:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2231,"nodeType":"ExpressionStatement","src":"2303:13:12"},{"expression":{"id":2234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2232,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"2326:7:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2233,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"2336:7:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2326:17:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":2235,"nodeType":"ExpressionStatement","src":"2326:17:12"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"2124:108:12","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":2237,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"name_","nameLocation":"2263:5:12","nodeType":"VariableDeclaration","scope":2237,"src":"2249:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2222,"name":"string","nodeType":"ElementaryTypeName","src":"2249:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"symbol_","nameLocation":"2284:7:12","nodeType":"VariableDeclaration","scope":2237,"src":"2270:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2224,"name":"string","nodeType":"ElementaryTypeName","src":"2270:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2248:44:12"},"returnParameters":{"id":2227,"nodeType":"ParameterList","parameters":[],"src":"2293:0:12"},"scope":3039,"src":"2237:113:12","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[877,889],"body":{"id":2267,"nodeType":"Block","src":"2525:192:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2248,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"2554:11:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2250,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":228,"src":"2574:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$228_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$228_$","typeString":"type(contract IERC721)"}],"id":2249,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2569:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2569:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$228","typeString":"type(contract IERC721)"}},"id":2252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"2569:25:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2554:40:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2254,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"2610:11:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2256,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"2630:15:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$273_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$273_$","typeString":"type(contract IERC721Metadata)"}],"id":2255,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2625:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2625:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$273","typeString":"type(contract IERC721Metadata)"}},"id":2258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"2625:33:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2610:48:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2554:104:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2263,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"2698:11:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":2261,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2674:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$3039_$","typeString":"type(contract super ERC721)"}},"id":2262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":877,"src":"2674:23:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2674:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2554:156:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2247,"id":2266,"nodeType":"Return","src":"2535:175:12"}]},"documentation":{"id":2238,"nodeType":"StructuredDocumentation","src":"2356:56:12","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2268,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2426:17:12","nodeType":"FunctionDefinition","overrides":{"id":2244,"nodeType":"OverrideSpecifier","overrides":[{"id":2242,"name":"ERC165","nodeType":"IdentifierPath","referencedDeclaration":878,"src":"2493:6:12"},{"id":2243,"name":"IERC165","nodeType":"IdentifierPath","referencedDeclaration":890,"src":"2501:7:12"}],"src":"2484:25:12"},"parameters":{"id":2241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2240,"mutability":"mutable","name":"interfaceId","nameLocation":"2451:11:12","nodeType":"VariableDeclaration","scope":2268,"src":"2444:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2239,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2444:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2443:20:12"},"returnParameters":{"id":2247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2268,"src":"2519:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2245,"name":"bool","nodeType":"ElementaryTypeName","src":"2519:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2518:6:12"},"scope":3039,"src":"2417:300:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[153],"body":{"id":2291,"nodeType":"Block","src":"2857:123:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2278,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"2875:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2892:1:12","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":2280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2884:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2279,"name":"address","nodeType":"ElementaryTypeName","src":"2884:7:12","typeDescriptions":{}}},"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2884:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2875:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":2284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2896:43:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":2277,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2867:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2867:73:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2286,"nodeType":"ExpressionStatement","src":"2867:73:12"},{"expression":{"baseExpression":{"id":2287,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"2957:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2289,"indexExpression":{"id":2288,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"2967:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2957:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2276,"id":2290,"nodeType":"Return","src":"2950:23:12"}]},"documentation":{"id":2269,"nodeType":"StructuredDocumentation","src":"2723:48:12","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":2292,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2785:9:12","nodeType":"FunctionDefinition","overrides":{"id":2273,"nodeType":"OverrideSpecifier","overrides":[],"src":"2830:8:12"},"parameters":{"id":2272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2271,"mutability":"mutable","name":"owner","nameLocation":"2803:5:12","nodeType":"VariableDeclaration","scope":2292,"src":"2795:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2270,"name":"address","nodeType":"ElementaryTypeName","src":"2795:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2794:15:12"},"returnParameters":{"id":2276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2292,"src":"2848:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2274,"name":"uint256","nodeType":"ElementaryTypeName","src":"2848:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2847:9:12"},"scope":3039,"src":"2776:204:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[161],"body":{"id":2319,"nodeType":"Block","src":"3118:137:12","statements":[{"assignments":[2302],"declarations":[{"constant":false,"id":2302,"mutability":"mutable","name":"owner","nameLocation":"3136:5:12","nodeType":"VariableDeclaration","scope":2319,"src":"3128:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2301,"name":"address","nodeType":"ElementaryTypeName","src":"3128:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2306,"initialValue":{"baseExpression":{"id":2303,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"3144:7:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2305,"indexExpression":{"id":2304,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2295,"src":"3152:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3144:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3128:32:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2308,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"3178:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3195:1:12","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":2310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3187:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2309,"name":"address","nodeType":"ElementaryTypeName","src":"3187:7:12","typeDescriptions":{}}},"id":2312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3187:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3178:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":2314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3199:26:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":2307,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3170:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3170:56:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2316,"nodeType":"ExpressionStatement","src":"3170:56:12"},{"expression":{"id":2317,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"3243:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2300,"id":2318,"nodeType":"Return","src":"3236:12:12"}]},"documentation":{"id":2293,"nodeType":"StructuredDocumentation","src":"2986:46:12","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":2320,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"3046:7:12","nodeType":"FunctionDefinition","overrides":{"id":2297,"nodeType":"OverrideSpecifier","overrides":[],"src":"3091:8:12"},"parameters":{"id":2296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2295,"mutability":"mutable","name":"tokenId","nameLocation":"3062:7:12","nodeType":"VariableDeclaration","scope":2320,"src":"3054:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2294,"name":"uint256","nodeType":"ElementaryTypeName","src":"3054:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3053:17:12"},"returnParameters":{"id":2300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2299,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2320,"src":"3109:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2298,"name":"address","nodeType":"ElementaryTypeName","src":"3109:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3108:9:12"},"scope":3039,"src":"3037:218:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[258],"body":{"id":2329,"nodeType":"Block","src":"3386:29:12","statements":[{"expression":{"id":2327,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"3403:5:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2326,"id":2328,"nodeType":"Return","src":"3396:12:12"}]},"documentation":{"id":2321,"nodeType":"StructuredDocumentation","src":"3261:51:12","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":2330,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"3326:4:12","nodeType":"FunctionDefinition","overrides":{"id":2323,"nodeType":"OverrideSpecifier","overrides":[],"src":"3353:8:12"},"parameters":{"id":2322,"nodeType":"ParameterList","parameters":[],"src":"3330:2:12"},"returnParameters":{"id":2326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2330,"src":"3371:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2324,"name":"string","nodeType":"ElementaryTypeName","src":"3371:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3370:15:12"},"scope":3039,"src":"3317:98:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[264],"body":{"id":2339,"nodeType":"Block","src":"3550:31:12","statements":[{"expression":{"id":2337,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2202,"src":"3567:7:12","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":2336,"id":2338,"nodeType":"Return","src":"3560:14:12"}]},"documentation":{"id":2331,"nodeType":"StructuredDocumentation","src":"3421:53:12","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":2340,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"3488:6:12","nodeType":"FunctionDefinition","overrides":{"id":2333,"nodeType":"OverrideSpecifier","overrides":[],"src":"3517:8:12"},"parameters":{"id":2332,"nodeType":"ParameterList","parameters":[],"src":"3494:2:12"},"returnParameters":{"id":2336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2335,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2340,"src":"3535:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2334,"name":"string","nodeType":"ElementaryTypeName","src":"3535:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3534:15:12"},"scope":3039,"src":"3479:102:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[272],"body":{"id":2378,"nodeType":"Block","src":"3735:188:12","statements":[{"expression":{"arguments":[{"id":2350,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"3760:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2349,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"3745:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":2351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3745:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2352,"nodeType":"ExpressionStatement","src":"3745:23:12"},{"assignments":[2354],"declarations":[{"constant":false,"id":2354,"mutability":"mutable","name":"baseURI","nameLocation":"3793:7:12","nodeType":"VariableDeclaration","scope":2378,"src":"3779:21:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2353,"name":"string","nodeType":"ElementaryTypeName","src":"3779:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2357,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2355,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"3803:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":2356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3803:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"3779:34:12"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2360,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"3836:7:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3830:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2358,"name":"bytes","nodeType":"ElementaryTypeName","src":"3830:5:12","typeDescriptions":{}}},"id":2361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3830:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3830:21:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3830:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":2375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3914:2:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3830:86:12","trueExpression":{"arguments":[{"arguments":[{"id":2369,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"3882:7:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2370,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"3891:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":684,"src":"3891:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3891:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":2367,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3865:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3865:16:12","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3865:45:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3858:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2365,"name":"string","nodeType":"ElementaryTypeName","src":"3858:6:12","typeDescriptions":{}}},"id":2374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3858:53:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2348,"id":2377,"nodeType":"Return","src":"3823:93:12"}]},"documentation":{"id":2341,"nodeType":"StructuredDocumentation","src":"3587:55:12","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":2379,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"3656:8:12","nodeType":"FunctionDefinition","overrides":{"id":2345,"nodeType":"OverrideSpecifier","overrides":[],"src":"3702:8:12"},"parameters":{"id":2344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2343,"mutability":"mutable","name":"tokenId","nameLocation":"3673:7:12","nodeType":"VariableDeclaration","scope":2379,"src":"3665:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2342,"name":"uint256","nodeType":"ElementaryTypeName","src":"3665:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3664:17:12"},"returnParameters":{"id":2348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2379,"src":"3720:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2346,"name":"string","nodeType":"ElementaryTypeName","src":"3720:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3719:15:12"},"scope":3039,"src":"3647:276:12","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2387,"nodeType":"Block","src":"4231:26:12","statements":[{"expression":{"hexValue":"","id":2385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4248:2:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":2384,"id":2386,"nodeType":"Return","src":"4241:9:12"}]},"documentation":{"id":2380,"nodeType":"StructuredDocumentation","src":"3929:231:12","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":2388,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"4174:8:12","nodeType":"FunctionDefinition","parameters":{"id":2381,"nodeType":"ParameterList","parameters":[],"src":"4182:2:12"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2383,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2388,"src":"4216:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2382,"name":"string","nodeType":"ElementaryTypeName","src":"4216:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4215:15:12"},"scope":3039,"src":"4165:92:12","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[201],"body":{"id":2429,"nodeType":"Block","src":"4384:330:12","statements":[{"assignments":[2398],"declarations":[{"constant":false,"id":2398,"mutability":"mutable","name":"owner","nameLocation":"4402:5:12","nodeType":"VariableDeclaration","scope":2429,"src":"4394:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2397,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2402,"initialValue":{"arguments":[{"id":2400,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2393,"src":"4418:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2399,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"4410:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4410:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4394:32:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2404,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"4444:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2405,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"4450:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4444:11:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":2407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4457:35:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":2403,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4436:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4436:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2409,"nodeType":"ExpressionStatement","src":"4436:57:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2411,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"4525:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4525:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2413,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"4541:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4525:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2416,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"4567:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2417,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"4574:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4574:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2415,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"4550:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4550:37:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4525:62:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","id":2421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4601:64:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""},"value":"ERC721: approve caller is not token owner nor approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","typeString":"literal_string \"ERC721: approve caller is not token owner nor approved for all\""}],"id":2410,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4504:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4504:171:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2423,"nodeType":"ExpressionStatement","src":"4504:171:12"},{"expression":{"arguments":[{"id":2425,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"4695:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2426,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2393,"src":"4699:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2424,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"4686:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4686:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2428,"nodeType":"ExpressionStatement","src":"4686:21:12"}]},"documentation":{"id":2389,"nodeType":"StructuredDocumentation","src":"4263:46:12","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":2430,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4323:7:12","nodeType":"FunctionDefinition","overrides":{"id":2395,"nodeType":"OverrideSpecifier","overrides":[],"src":"4375:8:12"},"parameters":{"id":2394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2391,"mutability":"mutable","name":"to","nameLocation":"4339:2:12","nodeType":"VariableDeclaration","scope":2430,"src":"4331:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2390,"name":"address","nodeType":"ElementaryTypeName","src":"4331:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2393,"mutability":"mutable","name":"tokenId","nameLocation":"4351:7:12","nodeType":"VariableDeclaration","scope":2430,"src":"4343:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2392,"name":"uint256","nodeType":"ElementaryTypeName","src":"4343:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4330:29:12"},"returnParameters":{"id":2396,"nodeType":"ParameterList","parameters":[],"src":"4384:0:12"},"scope":3039,"src":"4314:400:12","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[217],"body":{"id":2447,"nodeType":"Block","src":"4860:82:12","statements":[{"expression":{"arguments":[{"id":2440,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"4885:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2439,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2952,"src":"4870:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4870:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2442,"nodeType":"ExpressionStatement","src":"4870:23:12"},{"expression":{"baseExpression":{"id":2443,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2214,"src":"4911:15:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2445,"indexExpression":{"id":2444,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"4927:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4911:24:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2438,"id":2446,"nodeType":"Return","src":"4904:31:12"}]},"documentation":{"id":2431,"nodeType":"StructuredDocumentation","src":"4720:50:12","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":2448,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4784:11:12","nodeType":"FunctionDefinition","overrides":{"id":2435,"nodeType":"OverrideSpecifier","overrides":[],"src":"4833:8:12"},"parameters":{"id":2434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2433,"mutability":"mutable","name":"tokenId","nameLocation":"4804:7:12","nodeType":"VariableDeclaration","scope":2448,"src":"4796:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2432,"name":"uint256","nodeType":"ElementaryTypeName","src":"4796:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4795:17:12"},"returnParameters":{"id":2438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2448,"src":"4851:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"4851:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4850:9:12"},"scope":3039,"src":"4775:167:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[209],"body":{"id":2464,"nodeType":"Block","src":"5093:69:12","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2458,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"5122:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5122:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2460,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"5136:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2461,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2453,"src":"5146:8:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2457,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2938,"src":"5103:18:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5103:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2463,"nodeType":"ExpressionStatement","src":"5103:52:12"}]},"documentation":{"id":2449,"nodeType":"StructuredDocumentation","src":"4948:56:12","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":2465,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"5018:17:12","nodeType":"FunctionDefinition","overrides":{"id":2455,"nodeType":"OverrideSpecifier","overrides":[],"src":"5084:8:12"},"parameters":{"id":2454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2451,"mutability":"mutable","name":"operator","nameLocation":"5044:8:12","nodeType":"VariableDeclaration","scope":2465,"src":"5036:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2450,"name":"address","nodeType":"ElementaryTypeName","src":"5036:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2453,"mutability":"mutable","name":"approved","nameLocation":"5059:8:12","nodeType":"VariableDeclaration","scope":2465,"src":"5054:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2452,"name":"bool","nodeType":"ElementaryTypeName","src":"5054:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5035:33:12"},"returnParameters":{"id":2456,"nodeType":"ParameterList","parameters":[],"src":"5093:0:12"},"scope":3039,"src":"5009:153:12","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[227],"body":{"id":2482,"nodeType":"Block","src":"5331:59:12","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":2476,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2220,"src":"5348:18:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2478,"indexExpression":{"id":2477,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"5367:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5348:25:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2480,"indexExpression":{"id":2479,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2470,"src":"5374:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5348:35:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2475,"id":2481,"nodeType":"Return","src":"5341:42:12"}]},"documentation":{"id":2466,"nodeType":"StructuredDocumentation","src":"5168:55:12","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":2483,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"5237:16:12","nodeType":"FunctionDefinition","overrides":{"id":2472,"nodeType":"OverrideSpecifier","overrides":[],"src":"5307:8:12"},"parameters":{"id":2471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2468,"mutability":"mutable","name":"owner","nameLocation":"5262:5:12","nodeType":"VariableDeclaration","scope":2483,"src":"5254:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2467,"name":"address","nodeType":"ElementaryTypeName","src":"5254:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2470,"mutability":"mutable","name":"operator","nameLocation":"5277:8:12","nodeType":"VariableDeclaration","scope":2483,"src":"5269:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2469,"name":"address","nodeType":"ElementaryTypeName","src":"5269:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5253:33:12"},"returnParameters":{"id":2475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2474,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2483,"src":"5325:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2473,"name":"bool","nodeType":"ElementaryTypeName","src":"5325:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5324:6:12"},"scope":3039,"src":"5228:162:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[193],"body":{"id":2509,"nodeType":"Block","src":"5571:208:12","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2496,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"5660:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5660:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2498,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"5674:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2495,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2639,"src":"5641:18:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":2499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5641:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":2500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5684:48:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":2494,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5633:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5633:100:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2502,"nodeType":"ExpressionStatement","src":"5633:100:12"},{"expression":{"arguments":[{"id":2504,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"5754:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2505,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2488,"src":"5760:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2506,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"5764:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2503,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"5744:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5744:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2508,"nodeType":"ExpressionStatement","src":"5744:28:12"}]},"documentation":{"id":2484,"nodeType":"StructuredDocumentation","src":"5396:51:12","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":2510,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5461:12:12","nodeType":"FunctionDefinition","overrides":{"id":2492,"nodeType":"OverrideSpecifier","overrides":[],"src":"5562:8:12"},"parameters":{"id":2491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2486,"mutability":"mutable","name":"from","nameLocation":"5491:4:12","nodeType":"VariableDeclaration","scope":2510,"src":"5483:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2485,"name":"address","nodeType":"ElementaryTypeName","src":"5483:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2488,"mutability":"mutable","name":"to","nameLocation":"5513:2:12","nodeType":"VariableDeclaration","scope":2510,"src":"5505:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2487,"name":"address","nodeType":"ElementaryTypeName","src":"5505:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2490,"mutability":"mutable","name":"tokenId","nameLocation":"5533:7:12","nodeType":"VariableDeclaration","scope":2510,"src":"5525:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2489,"name":"uint256","nodeType":"ElementaryTypeName","src":"5525:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5473:73:12"},"returnParameters":{"id":2493,"nodeType":"ParameterList","parameters":[],"src":"5571:0:12"},"scope":3039,"src":"5452:327:12","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[183],"body":{"id":2528,"nodeType":"Block","src":"5968:56:12","statements":[{"expression":{"arguments":[{"id":2522,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2513,"src":"5995:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2523,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"6001:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2524,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"6005:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6014:2:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2521,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[2529,2559],"referencedDeclaration":2559,"src":"5978:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5978:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2527,"nodeType":"ExpressionStatement","src":"5978:39:12"}]},"documentation":{"id":2511,"nodeType":"StructuredDocumentation","src":"5785:55:12","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":2529,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5854:16:12","nodeType":"FunctionDefinition","overrides":{"id":2519,"nodeType":"OverrideSpecifier","overrides":[],"src":"5959:8:12"},"parameters":{"id":2518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2513,"mutability":"mutable","name":"from","nameLocation":"5888:4:12","nodeType":"VariableDeclaration","scope":2529,"src":"5880:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2512,"name":"address","nodeType":"ElementaryTypeName","src":"5880:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2515,"mutability":"mutable","name":"to","nameLocation":"5910:2:12","nodeType":"VariableDeclaration","scope":2529,"src":"5902:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"5902:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2517,"mutability":"mutable","name":"tokenId","nameLocation":"5930:7:12","nodeType":"VariableDeclaration","scope":2529,"src":"5922:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2516,"name":"uint256","nodeType":"ElementaryTypeName","src":"5922:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5870:73:12"},"returnParameters":{"id":2520,"nodeType":"ParameterList","parameters":[],"src":"5968:0:12"},"scope":3039,"src":"5845:179:12","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[173],"body":{"id":2558,"nodeType":"Block","src":"6240:165:12","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2544,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"6277:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6277:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2546,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"6291:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2543,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2639,"src":"6258:18:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6258:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6301:48:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""},"value":"ERC721: caller is not token owner nor approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","typeString":"literal_string \"ERC721: caller is not token owner nor approved\""}],"id":2542,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6250:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6250:100:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2550,"nodeType":"ExpressionStatement","src":"6250:100:12"},{"expression":{"arguments":[{"id":2552,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2532,"src":"6374:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2553,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2534,"src":"6380:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2554,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2536,"src":"6384:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2555,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2538,"src":"6393:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2551,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2588,"src":"6360:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":2556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6360:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2557,"nodeType":"ExpressionStatement","src":"6360:38:12"}]},"documentation":{"id":2530,"nodeType":"StructuredDocumentation","src":"6030:55:12","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":2559,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"6099:16:12","nodeType":"FunctionDefinition","overrides":{"id":2540,"nodeType":"OverrideSpecifier","overrides":[],"src":"6231:8:12"},"parameters":{"id":2539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2532,"mutability":"mutable","name":"from","nameLocation":"6133:4:12","nodeType":"VariableDeclaration","scope":2559,"src":"6125:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2531,"name":"address","nodeType":"ElementaryTypeName","src":"6125:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2534,"mutability":"mutable","name":"to","nameLocation":"6155:2:12","nodeType":"VariableDeclaration","scope":2559,"src":"6147:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2533,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2536,"mutability":"mutable","name":"tokenId","nameLocation":"6175:7:12","nodeType":"VariableDeclaration","scope":2559,"src":"6167:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2535,"name":"uint256","nodeType":"ElementaryTypeName","src":"6167:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2538,"mutability":"mutable","name":"data","nameLocation":"6205:4:12","nodeType":"VariableDeclaration","scope":2559,"src":"6192:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2537,"name":"bytes","nodeType":"ElementaryTypeName","src":"6192:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6115:100:12"},"returnParameters":{"id":2541,"nodeType":"ParameterList","parameters":[],"src":"6240:0:12"},"scope":3039,"src":"6090:315:12","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2587,"nodeType":"Block","src":"7406:165:12","statements":[{"expression":{"arguments":[{"id":2572,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"7426:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2573,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2564,"src":"7432:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2574,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2566,"src":"7436:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2571,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"7416:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7416:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2576,"nodeType":"ExpressionStatement","src":"7416:28:12"},{"expression":{"arguments":[{"arguments":[{"id":2579,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"7485:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2580,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2564,"src":"7491:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2581,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2566,"src":"7495:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2582,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"7504:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2578,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3016,"src":"7462:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":2583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7462:47:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":2584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7511:52:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":2577,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7454:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7454:110:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2586,"nodeType":"ExpressionStatement","src":"7454:110:12"}]},"documentation":{"id":2560,"nodeType":"StructuredDocumentation","src":"6411:850:12","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":2588,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"7275:13:12","nodeType":"FunctionDefinition","parameters":{"id":2569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2562,"mutability":"mutable","name":"from","nameLocation":"7306:4:12","nodeType":"VariableDeclaration","scope":2588,"src":"7298:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2561,"name":"address","nodeType":"ElementaryTypeName","src":"7298:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2564,"mutability":"mutable","name":"to","nameLocation":"7328:2:12","nodeType":"VariableDeclaration","scope":2588,"src":"7320:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2563,"name":"address","nodeType":"ElementaryTypeName","src":"7320:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2566,"mutability":"mutable","name":"tokenId","nameLocation":"7348:7:12","nodeType":"VariableDeclaration","scope":2588,"src":"7340:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2565,"name":"uint256","nodeType":"ElementaryTypeName","src":"7340:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2568,"mutability":"mutable","name":"data","nameLocation":"7378:4:12","nodeType":"VariableDeclaration","scope":2588,"src":"7365:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2567,"name":"bytes","nodeType":"ElementaryTypeName","src":"7365:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7288:100:12"},"returnParameters":{"id":2570,"nodeType":"ParameterList","parameters":[],"src":"7406:0:12"},"scope":3039,"src":"7266:305:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2605,"nodeType":"Block","src":"7945:54:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2596,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"7962:7:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2598,"indexExpression":{"id":2597,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2591,"src":"7970:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7962:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7990:1:12","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":2600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7982:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2599,"name":"address","nodeType":"ElementaryTypeName","src":"7982:7:12","typeDescriptions":{}}},"id":2602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7982:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7962:30:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2595,"id":2604,"nodeType":"Return","src":"7955:37:12"}]},"documentation":{"id":2589,"nodeType":"StructuredDocumentation","src":"7577:292:12","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":2606,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7883:7:12","nodeType":"FunctionDefinition","parameters":{"id":2592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2591,"mutability":"mutable","name":"tokenId","nameLocation":"7899:7:12","nodeType":"VariableDeclaration","scope":2606,"src":"7891:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2590,"name":"uint256","nodeType":"ElementaryTypeName","src":"7891:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7890:17:12"},"returnParameters":{"id":2595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2594,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2606,"src":"7939:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2593,"name":"bool","nodeType":"ElementaryTypeName","src":"7939:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7938:6:12"},"scope":3039,"src":"7874:125:12","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2638,"nodeType":"Block","src":"8256:155:12","statements":[{"assignments":[2617],"declarations":[{"constant":false,"id":2617,"mutability":"mutable","name":"owner","nameLocation":"8274:5:12","nodeType":"VariableDeclaration","scope":2638,"src":"8266:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2616,"name":"address","nodeType":"ElementaryTypeName","src":"8266:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2621,"initialValue":{"arguments":[{"id":2619,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2611,"src":"8290:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2618,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"8282:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8282:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8266:32:12"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2622,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"8316:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2623,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2617,"src":"8327:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8316:16:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2626,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2617,"src":"8353:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2627,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"8360:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2625,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"8336:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":2628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8336:32:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8316:52:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2631,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2611,"src":"8384:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2630,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2448,"src":"8372:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8372:20:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2633,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"8396:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8372:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8316:87:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2636,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8315:89:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2615,"id":2637,"nodeType":"Return","src":"8308:96:12"}]},"documentation":{"id":2607,"nodeType":"StructuredDocumentation","src":"8005:147:12","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":2639,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"8166:18:12","nodeType":"FunctionDefinition","parameters":{"id":2612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2609,"mutability":"mutable","name":"spender","nameLocation":"8193:7:12","nodeType":"VariableDeclaration","scope":2639,"src":"8185:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2608,"name":"address","nodeType":"ElementaryTypeName","src":"8185:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2611,"mutability":"mutable","name":"tokenId","nameLocation":"8210:7:12","nodeType":"VariableDeclaration","scope":2639,"src":"8202:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2610,"name":"uint256","nodeType":"ElementaryTypeName","src":"8202:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8184:34:12"},"returnParameters":{"id":2615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2639,"src":"8250:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2613,"name":"bool","nodeType":"ElementaryTypeName","src":"8250:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8249:6:12"},"scope":3039,"src":"8157:254:12","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2653,"nodeType":"Block","src":"8806:43:12","statements":[{"expression":{"arguments":[{"id":2648,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2642,"src":"8826:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2649,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"8830:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8839:2:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":2647,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[2654,2683],"referencedDeclaration":2683,"src":"8816:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8816:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2652,"nodeType":"ExpressionStatement","src":"8816:26:12"}]},"documentation":{"id":2640,"nodeType":"StructuredDocumentation","src":"8417:319:12","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":2654,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8750:9:12","nodeType":"FunctionDefinition","parameters":{"id":2645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2642,"mutability":"mutable","name":"to","nameLocation":"8768:2:12","nodeType":"VariableDeclaration","scope":2654,"src":"8760:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2641,"name":"address","nodeType":"ElementaryTypeName","src":"8760:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2644,"mutability":"mutable","name":"tokenId","nameLocation":"8780:7:12","nodeType":"VariableDeclaration","scope":2654,"src":"8772:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2643,"name":"uint256","nodeType":"ElementaryTypeName","src":"8772:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8759:29:12"},"returnParameters":{"id":2646,"nodeType":"ParameterList","parameters":[],"src":"8806:0:12"},"scope":3039,"src":"8741:108:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2682,"nodeType":"Block","src":"9184:195:12","statements":[{"expression":{"arguments":[{"id":2665,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2657,"src":"9200:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2666,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"9204:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2664,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"9194:5:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9194:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2668,"nodeType":"ExpressionStatement","src":"9194:18:12"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":2673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:1:12","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":2672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9266:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2671,"name":"address","nodeType":"ElementaryTypeName","src":"9266:7:12","typeDescriptions":{}}},"id":2674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9266:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2675,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2657,"src":"9278:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2676,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2659,"src":"9282:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2677,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"9291:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2670,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3016,"src":"9243:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":2678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9243:53:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":2679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9310:52:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":2669,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9222:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9222:150:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2681,"nodeType":"ExpressionStatement","src":"9222:150:12"}]},"documentation":{"id":2655,"nodeType":"StructuredDocumentation","src":"8855:210:12","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":2683,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"9079:9:12","nodeType":"FunctionDefinition","parameters":{"id":2662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2657,"mutability":"mutable","name":"to","nameLocation":"9106:2:12","nodeType":"VariableDeclaration","scope":2683,"src":"9098:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2656,"name":"address","nodeType":"ElementaryTypeName","src":"9098:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2659,"mutability":"mutable","name":"tokenId","nameLocation":"9126:7:12","nodeType":"VariableDeclaration","scope":2683,"src":"9118:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2658,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2661,"mutability":"mutable","name":"data","nameLocation":"9156:4:12","nodeType":"VariableDeclaration","scope":2683,"src":"9143:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2660,"name":"bytes","nodeType":"ElementaryTypeName","src":"9143:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9088:78:12"},"returnParameters":{"id":2663,"nodeType":"ParameterList","parameters":[],"src":"9184:0:12"},"scope":3039,"src":"9070:309:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2748,"nodeType":"Block","src":"9762:366:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2692,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"9780:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9794:1:12","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":2694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9786:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2693,"name":"address","nodeType":"ElementaryTypeName","src":"9786:7:12","typeDescriptions":{}}},"id":2696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9786:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9780:16:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":2698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9798:34:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":2691,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9772:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9772:61:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2700,"nodeType":"ExpressionStatement","src":"9772:61:12"},{"expression":{"arguments":[{"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9851:17:12","subExpression":{"arguments":[{"id":2703,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"9860:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2702,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"9852:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9852:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":2706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9870:30:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":2701,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9843:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9843:58:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2708,"nodeType":"ExpressionStatement","src":"9843:58:12"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9941:1:12","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":2711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9933:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2710,"name":"address","nodeType":"ElementaryTypeName","src":"9933:7:12","typeDescriptions":{}}},"id":2713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9933:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2714,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"9945:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2715,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"9949:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2709,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"9912:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9912:45:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2717,"nodeType":"ExpressionStatement","src":"9912:45:12"},{"expression":{"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2718,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"9968:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2720,"indexExpression":{"id":2719,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"9978:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9968:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9985:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9968:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2723,"nodeType":"ExpressionStatement","src":"9968:18:12"},{"expression":{"id":2728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2724,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"9996:7:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2726,"indexExpression":{"id":2725,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"10004:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9996:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2727,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"10015:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9996:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2729,"nodeType":"ExpressionStatement","src":"9996:21:12"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":2733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10050:1:12","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":2732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10042:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2731,"name":"address","nodeType":"ElementaryTypeName","src":"10042:7:12","typeDescriptions":{}}},"id":2734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10042:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2735,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"10054:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2736,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"10058:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2730,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"10033:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10033:33:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2738,"nodeType":"EmitStatement","src":"10028:38:12"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10105:1:12","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":2741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10097:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2740,"name":"address","nodeType":"ElementaryTypeName","src":"10097:7:12","typeDescriptions":{}}},"id":2743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10097:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2744,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"10109:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2745,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"10113:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2739,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"10077:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10077:44:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2747,"nodeType":"ExpressionStatement","src":"10077:44:12"}]},"documentation":{"id":2684,"nodeType":"StructuredDocumentation","src":"9385:311:12","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":2749,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9710:5:12","nodeType":"FunctionDefinition","parameters":{"id":2689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2686,"mutability":"mutable","name":"to","nameLocation":"9724:2:12","nodeType":"VariableDeclaration","scope":2749,"src":"9716:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2685,"name":"address","nodeType":"ElementaryTypeName","src":"9716:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2688,"mutability":"mutable","name":"tokenId","nameLocation":"9736:7:12","nodeType":"VariableDeclaration","scope":2749,"src":"9728:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2687,"name":"uint256","nodeType":"ElementaryTypeName","src":"9728:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9715:29:12"},"returnParameters":{"id":2690,"nodeType":"ParameterList","parameters":[],"src":"9762:0:12"},"scope":3039,"src":"9701:427:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2808,"nodeType":"Block","src":"10394:431:12","statements":[{"assignments":[2756],"declarations":[{"constant":false,"id":2756,"mutability":"mutable","name":"owner","nameLocation":"10412:5:12","nodeType":"VariableDeclaration","scope":2808,"src":"10404:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2755,"name":"address","nodeType":"ElementaryTypeName","src":"10404:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2760,"initialValue":{"arguments":[{"id":2758,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"10428:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2757,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"10420:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10420:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10404:32:12"},{"expression":{"arguments":[{"id":2762,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2756,"src":"10468:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10483:1:12","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":2764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10475:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2763,"name":"address","nodeType":"ElementaryTypeName","src":"10475:7:12","typeDescriptions":{}}},"id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10475:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2767,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"10487:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2761,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"10447:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10447:48:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2769,"nodeType":"ExpressionStatement","src":"10447:48:12"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:12","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":2772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10542:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2771,"name":"address","nodeType":"ElementaryTypeName","src":"10542:7:12","typeDescriptions":{}}},"id":2774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10542:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2775,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"10554:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2770,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"10533:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10533:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2777,"nodeType":"ExpressionStatement","src":"10533:29:12"},{"expression":{"id":2782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2778,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"10573:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2780,"indexExpression":{"id":2779,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2756,"src":"10583:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10573:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10593:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10573:21:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2783,"nodeType":"ExpressionStatement","src":"10573:21:12"},{"expression":{"id":2788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2784,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"10676:7:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2786,"indexExpression":{"id":2785,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"10684:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10676:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2787,"name":"_NULL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2198,"src":"10695:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10676:32:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2789,"nodeType":"ExpressionStatement","src":"10676:32:12"},{"eventCall":{"arguments":[{"id":2791,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2756,"src":"10733:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10748:1:12","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":2793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10740:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2792,"name":"address","nodeType":"ElementaryTypeName","src":"10740:7:12","typeDescriptions":{}}},"id":2795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10740:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2796,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"10752:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2790,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"10724:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10724:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"EmitStatement","src":"10719:41:12"},{"expression":{"arguments":[{"id":2800,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2756,"src":"10791:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10806:1:12","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":2802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10798:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"10798:7:12","typeDescriptions":{}}},"id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10798:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2805,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2752,"src":"10810:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2799,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"10771:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10771:47:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2807,"nodeType":"ExpressionStatement","src":"10771:47:12"}]},"documentation":{"id":2750,"nodeType":"StructuredDocumentation","src":"10134:206:12","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":2809,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10354:5:12","nodeType":"FunctionDefinition","parameters":{"id":2753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2752,"mutability":"mutable","name":"tokenId","nameLocation":"10368:7:12","nodeType":"VariableDeclaration","scope":2809,"src":"10360:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2751,"name":"uint256","nodeType":"ElementaryTypeName","src":"10360:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10359:17:12"},"returnParameters":{"id":2754,"nodeType":"ParameterList","parameters":[],"src":"10394:0:12"},"scope":3039,"src":"10345:480:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2882,"nodeType":"Block","src":"11258:489:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2821,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"11284:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2820,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"11276:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11276:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2823,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"11296:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11276:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":2825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11302:39:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":2819,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11268:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11268:74:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2827,"nodeType":"ExpressionStatement","src":"11268:74:12"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2829,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2814,"src":"11360:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11374:1:12","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":2831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11366:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2830,"name":"address","nodeType":"ElementaryTypeName","src":"11366:7:12","typeDescriptions":{}}},"id":2833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11366:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11360:16:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":2835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11378:38:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":2828,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11352:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11352:65:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2837,"nodeType":"ExpressionStatement","src":"11352:65:12"},{"expression":{"arguments":[{"id":2839,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"11449:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2840,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2814,"src":"11455:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2841,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"11459:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2838,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"11428:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11428:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2843,"nodeType":"ExpressionStatement","src":"11428:39:12"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11546:1:12","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":2846,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11538:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2845,"name":"address","nodeType":"ElementaryTypeName","src":"11538:7:12","typeDescriptions":{}}},"id":2848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11538:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2849,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"11550:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2844,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"11529:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11529:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2851,"nodeType":"ExpressionStatement","src":"11529:29:12"},{"expression":{"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2852,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11569:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2854,"indexExpression":{"id":2853,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"11579:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11569:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":2855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11588:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11569:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2857,"nodeType":"ExpressionStatement","src":"11569:20:12"},{"expression":{"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2858,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11599:9:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2860,"indexExpression":{"id":2859,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2814,"src":"11609:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11599:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11616:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11599:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2863,"nodeType":"ExpressionStatement","src":"11599:18:12"},{"expression":{"id":2868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2864,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"11627:7:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2866,"indexExpression":{"id":2865,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"11635:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11627:16:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2867,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2814,"src":"11646:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11627:21:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2869,"nodeType":"ExpressionStatement","src":"11627:21:12"},{"eventCall":{"arguments":[{"id":2871,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"11673:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2872,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2814,"src":"11679:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2873,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"11683:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2870,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"11664:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11664:27:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2875,"nodeType":"EmitStatement","src":"11659:32:12"},{"expression":{"arguments":[{"id":2877,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"11722:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2878,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2814,"src":"11728:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2879,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2816,"src":"11732:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2876,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3038,"src":"11702:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11702:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2881,"nodeType":"ExpressionStatement","src":"11702:38:12"}]},"documentation":{"id":2810,"nodeType":"StructuredDocumentation","src":"10831:313:12","text":" @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":2883,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11158:9:12","nodeType":"FunctionDefinition","parameters":{"id":2817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"from","nameLocation":"11185:4:12","nodeType":"VariableDeclaration","scope":2883,"src":"11177:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2811,"name":"address","nodeType":"ElementaryTypeName","src":"11177:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2814,"mutability":"mutable","name":"to","nameLocation":"11207:2:12","nodeType":"VariableDeclaration","scope":2883,"src":"11199:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2813,"name":"address","nodeType":"ElementaryTypeName","src":"11199:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2816,"mutability":"mutable","name":"tokenId","nameLocation":"11227:7:12","nodeType":"VariableDeclaration","scope":2883,"src":"11219:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2815,"name":"uint256","nodeType":"ElementaryTypeName","src":"11219:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11167:73:12"},"returnParameters":{"id":2818,"nodeType":"ParameterList","parameters":[],"src":"11258:0:12"},"scope":3039,"src":"11149:598:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2905,"nodeType":"Block","src":"11923:100:12","statements":[{"expression":{"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2891,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2214,"src":"11933:15:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":2893,"indexExpression":{"id":2892,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2888,"src":"11949:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11933:24:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2894,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2886,"src":"11960:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11933:29:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2896,"nodeType":"ExpressionStatement","src":"11933:29:12"},{"eventCall":{"arguments":[{"arguments":[{"id":2899,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2888,"src":"11994:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2898,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"11986:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11986:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2901,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2886,"src":"12004:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2902,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2888,"src":"12008:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2897,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"11977:8:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11977:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2904,"nodeType":"EmitStatement","src":"11972:44:12"}]},"documentation":{"id":2884,"nodeType":"StructuredDocumentation","src":"11753:101:12","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":2906,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"11868:8:12","nodeType":"FunctionDefinition","parameters":{"id":2889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2886,"mutability":"mutable","name":"to","nameLocation":"11885:2:12","nodeType":"VariableDeclaration","scope":2906,"src":"11877:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2885,"name":"address","nodeType":"ElementaryTypeName","src":"11877:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2888,"mutability":"mutable","name":"tokenId","nameLocation":"11897:7:12","nodeType":"VariableDeclaration","scope":2906,"src":"11889:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2887,"name":"uint256","nodeType":"ElementaryTypeName","src":"11889:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11876:29:12"},"returnParameters":{"id":2890,"nodeType":"ParameterList","parameters":[],"src":"11923:0:12"},"scope":3039,"src":"11859:164:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2937,"nodeType":"Block","src":"12282:184:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2917,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2909,"src":"12300:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2918,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"12309:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12300:17:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":2920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12319:27:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":2916,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12292:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12292:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2922,"nodeType":"ExpressionStatement","src":"12292:55:12"},{"expression":{"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2923,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2220,"src":"12357:18:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":2926,"indexExpression":{"id":2924,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2909,"src":"12376:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12357:25:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2927,"indexExpression":{"id":2925,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"12383:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12357:35:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2928,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2913,"src":"12395:8:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12357:46:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2930,"nodeType":"ExpressionStatement","src":"12357:46:12"},{"eventCall":{"arguments":[{"id":2932,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2909,"src":"12433:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2933,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2911,"src":"12440:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2934,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2913,"src":"12450:8:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2931,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"12418:14:12","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12418:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2936,"nodeType":"EmitStatement","src":"12413:46:12"}]},"documentation":{"id":2907,"nodeType":"StructuredDocumentation","src":"12029:125:12","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":2938,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"12168:18:12","nodeType":"FunctionDefinition","parameters":{"id":2914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2909,"mutability":"mutable","name":"owner","nameLocation":"12204:5:12","nodeType":"VariableDeclaration","scope":2938,"src":"12196:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2908,"name":"address","nodeType":"ElementaryTypeName","src":"12196:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2911,"mutability":"mutable","name":"operator","nameLocation":"12227:8:12","nodeType":"VariableDeclaration","scope":2938,"src":"12219:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2910,"name":"address","nodeType":"ElementaryTypeName","src":"12219:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2913,"mutability":"mutable","name":"approved","nameLocation":"12250:8:12","nodeType":"VariableDeclaration","scope":2938,"src":"12245:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2912,"name":"bool","nodeType":"ElementaryTypeName","src":"12245:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12186:78:12"},"returnParameters":{"id":2915,"nodeType":"ParameterList","parameters":[],"src":"12282:0:12"},"scope":3039,"src":"12159:307:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2951,"nodeType":"Block","src":"12613:70:12","statements":[{"expression":{"arguments":[{"arguments":[{"id":2946,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"12639:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2945,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"12631:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":2947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12631:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":2948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12649:26:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":2944,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12623:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12623:53:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2950,"nodeType":"ExpressionStatement","src":"12623:53:12"}]},"documentation":{"id":2939,"nodeType":"StructuredDocumentation","src":"12472:73:12","text":" @dev Reverts if the `tokenId` has not been minted yet."},"id":2952,"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"12559:14:12","nodeType":"FunctionDefinition","parameters":{"id":2942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2941,"mutability":"mutable","name":"tokenId","nameLocation":"12582:7:12","nodeType":"VariableDeclaration","scope":2952,"src":"12574:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2940,"name":"uint256","nodeType":"ElementaryTypeName","src":"12574:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12573:17:12"},"returnParameters":{"id":2943,"nodeType":"ParameterList","parameters":[],"src":"12613:0:12"},"scope":3039,"src":"12550:133:12","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3015,"nodeType":"Block","src":"13390:679:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2966,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"13404:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"13404:7:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13404:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13421:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13404:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3013,"nodeType":"Block","src":"14027:36:12","statements":[{"expression":{"hexValue":"74727565","id":3011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14048:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2965,"id":3012,"nodeType":"Return","src":"14041:11:12"}]},"id":3014,"nodeType":"IfStatement","src":"13400:663:12","trueBody":{"id":3010,"nodeType":"Block","src":"13424:597:12","statements":[{"clauses":[{"block":{"id":2990,"nodeType":"Block","src":"13538:91:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2984,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"13563:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":2985,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"13573:15:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$246_$","typeString":"type(contract IERC721Receiver)"}},"id":2986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":245,"src":"13573:32:12","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":2987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"13573:41:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"13563:51:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2965,"id":2989,"nodeType":"Return","src":"13556:58:12"}]},"errorName":"","id":2991,"nodeType":"TryCatchClause","parameters":{"id":2983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2982,"mutability":"mutable","name":"retval","nameLocation":"13530:6:12","nodeType":"VariableDeclaration","scope":2991,"src":"13523:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2981,"name":"bytes4","nodeType":"ElementaryTypeName","src":"13523:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"13522:15:12"},"src":"13514:115:12"},{"block":{"id":3007,"nodeType":"Block","src":"13658:353:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2995,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"13680:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"13680:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13697:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13680:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3005,"nodeType":"Block","src":"13807:190:12","statements":[{"AST":{"nodeType":"YulBlock","src":"13893:86:12","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"13930:2:12","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"13934:6:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13926:3:12"},"nodeType":"YulFunctionCall","src":"13926:15:12"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"13949:6:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13943:5:12"},"nodeType":"YulFunctionCall","src":"13943:13:12"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"13919:6:12"},"nodeType":"YulFunctionCall","src":"13919:38:12"},"nodeType":"YulExpressionStatement","src":"13919:38:12"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":2993,"isOffset":false,"isSlot":false,"src":"13934:6:12","valueSize":1},{"declaration":2993,"isOffset":false,"isSlot":false,"src":"13949:6:12","valueSize":1}],"id":3004,"nodeType":"InlineAssembly","src":"13884:95:12"}]},"id":3006,"nodeType":"IfStatement","src":"13676:321:12","trueBody":{"id":3003,"nodeType":"Block","src":"13700:101:12","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":3000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13729:52:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":2999,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"13722:6:12","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":3001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13722:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3002,"nodeType":"ExpressionStatement","src":"13722:60:12"}]}}]},"errorName":"","id":3008,"nodeType":"TryCatchClause","parameters":{"id":2994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2993,"mutability":"mutable","name":"reason","nameLocation":"13650:6:12","nodeType":"VariableDeclaration","scope":3008,"src":"13637:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2992,"name":"bytes","nodeType":"ElementaryTypeName","src":"13637:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13636:21:12"},"src":"13630:381:12"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2975,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"13479:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13479:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2977,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2955,"src":"13493:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2978,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"13499:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2979,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2961,"src":"13508:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":2972,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"13458:2:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2971,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"13442:15:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$246_$","typeString":"type(contract IERC721Receiver)"}},"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13442:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$246","typeString":"contract IERC721Receiver"}},"id":2974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":245,"src":"13442:36:12","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":2980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13442:71:12","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":3009,"nodeType":"TryStatement","src":"13438:573:12"}]}}]},"documentation":{"id":2953,"nodeType":"StructuredDocumentation","src":"12689:541:12","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":3016,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"13244:22:12","nodeType":"FunctionDefinition","parameters":{"id":2962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2955,"mutability":"mutable","name":"from","nameLocation":"13284:4:12","nodeType":"VariableDeclaration","scope":3016,"src":"13276:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2954,"name":"address","nodeType":"ElementaryTypeName","src":"13276:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2957,"mutability":"mutable","name":"to","nameLocation":"13306:2:12","nodeType":"VariableDeclaration","scope":3016,"src":"13298:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2956,"name":"address","nodeType":"ElementaryTypeName","src":"13298:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2959,"mutability":"mutable","name":"tokenId","nameLocation":"13326:7:12","nodeType":"VariableDeclaration","scope":3016,"src":"13318:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2958,"name":"uint256","nodeType":"ElementaryTypeName","src":"13318:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2961,"mutability":"mutable","name":"data","nameLocation":"13356:4:12","nodeType":"VariableDeclaration","scope":3016,"src":"13343:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2960,"name":"bytes","nodeType":"ElementaryTypeName","src":"13343:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13266:100:12"},"returnParameters":{"id":2965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2964,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3016,"src":"13384:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2963,"name":"bool","nodeType":"ElementaryTypeName","src":"13384:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13383:6:12"},"scope":3039,"src":"13235:834:12","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":3026,"nodeType":"Block","src":"14745:2:12","statements":[]},"documentation":{"id":3017,"nodeType":"StructuredDocumentation","src":"14075:545:12","text":" @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":3027,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"14634:20:12","nodeType":"FunctionDefinition","parameters":{"id":3024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3019,"mutability":"mutable","name":"from","nameLocation":"14672:4:12","nodeType":"VariableDeclaration","scope":3027,"src":"14664:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3018,"name":"address","nodeType":"ElementaryTypeName","src":"14664:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3021,"mutability":"mutable","name":"to","nameLocation":"14694:2:12","nodeType":"VariableDeclaration","scope":3027,"src":"14686:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3020,"name":"address","nodeType":"ElementaryTypeName","src":"14686:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3023,"mutability":"mutable","name":"tokenId","nameLocation":"14714:7:12","nodeType":"VariableDeclaration","scope":3027,"src":"14706:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3022,"name":"uint256","nodeType":"ElementaryTypeName","src":"14706:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14654:73:12"},"returnParameters":{"id":3025,"nodeType":"ParameterList","parameters":[],"src":"14745:0:12"},"scope":3039,"src":"14625:122:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3037,"nodeType":"Block","src":"15238:2:12","statements":[]},"documentation":{"id":3028,"nodeType":"StructuredDocumentation","src":"14753:361:12","text":" @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":3038,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"15128:19:12","nodeType":"FunctionDefinition","parameters":{"id":3035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3030,"mutability":"mutable","name":"from","nameLocation":"15165:4:12","nodeType":"VariableDeclaration","scope":3038,"src":"15157:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3029,"name":"address","nodeType":"ElementaryTypeName","src":"15157:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3032,"mutability":"mutable","name":"to","nameLocation":"15187:2:12","nodeType":"VariableDeclaration","scope":3038,"src":"15179:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3031,"name":"address","nodeType":"ElementaryTypeName","src":"15179:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3034,"mutability":"mutable","name":"tokenId","nameLocation":"15207:7:12","nodeType":"VariableDeclaration","scope":3038,"src":"15199:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3033,"name":"uint256","nodeType":"ElementaryTypeName","src":"15199:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15147:73:12"},"returnParameters":{"id":3036,"nodeType":"ParameterList","parameters":[],"src":"15238:0:12"},"scope":3039,"src":"15119:121:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3040,"src":"1382:13860:12","usedErrors":[]}],"src":"302:14941:12"},"id":12}},"contracts":{"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.","kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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.13+commit.abaa5c0e\"},\"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 ERC721 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 ERC721 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 caller. 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[EIP 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 ERC721 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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC721 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":"ERC721 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.13+commit.abaa5c0e\"},\"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 ERC721 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\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"See https://eips.ethereum.org/EIPS/eip-721","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}"},"name()":{"details":"Returns the token collection name."},"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"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 ERC721 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."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","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","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"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}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"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 ERC721 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 caller. 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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"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 ERC721 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.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"devdoc":{"details":"Collection of functions related to the address type","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c69445eab20c1bbbd8e32607b6ee96f65377d4a7f653dc7f3367b5ce711236e64736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 0x2C PUSH10 0x445EAB20C1BBBD8E3260 PUSH28 0x6EE96F65377D4A7F653DC7F3367B5CE711236E64736F6C634300080D STOP CALLER ","sourceMap":"194:9169:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202c69445eab20c1bbbd8e32607b6ee96f65377d4a7f653dc7f3367b5ce711236e64736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2C PUSH10 0x445EAB20C1BBBD8E3260 PUSH28 0x6EE96F65377D4A7F653DC7F3367B5CE711236E64736F6C634300080D STOP CALLER ","sourceMap":"194:9169:4:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"_revert(bytes memory,string memory)":"infinite","functionCall(address,bytes memory)":"infinite","functionCall(address,bytes memory,string memory)":"infinite","functionCallWithValue(address,bytes memory,uint256)":"infinite","functionCallWithValue(address,bytes memory,uint256,string memory)":"infinite","functionDelegateCall(address,bytes memory)":"infinite","functionDelegateCall(address,bytes memory,string memory)":"infinite","functionStaticCall(address,bytes memory)":"infinite","functionStaticCall(address,bytes memory,string memory)":"infinite","isContract(address)":"infinite","sendValue(address payable,uint256)":"infinite","verifyCallResult(bool,bytes memory,string memory)":"infinite","verifyCallResultFromTarget(address,bool,bytes memory,string memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"devdoc":{"details":"String operations.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fe33877dc3b543331045a7fad8df6528ca3a558fa500af760ddfe6556fe4a6764736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 0xF 0xE3 CODESIZE PUSH24 0xDC3B543331045A7FAD8DF6528CA3A558FA500AF760DDFE65 JUMP INVALID 0x4A PUSH8 0x64736F6C63430008 0xD STOP CALLER ","sourceMap":"220:2559:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200fe33877dc3b543331045a7fad8df6528ca3a558fa500af760ddfe6556fe4a6764736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF 0xE3 CODESIZE PUSH24 0xDC3B543331045A7FAD8DF6528CA3A558FA500AF760DDFE65 JUMP INVALID 0x4A PUSH8 0x64736F6C63430008 0xD STOP CALLER ","sourceMap":"220:2559:6:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"equal(string memory,string memory)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(int256)":"infinite","toString(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"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.13+commit.abaa5c0e\"},\"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\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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.13+commit.abaa5c0e\"},\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. 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[EIP 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\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ff279c248c865934fc9794769239e1a6a591e89789ec518f51e46031f69ab92a64736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 SELFDESTRUCT 0x27 SWAP13 0x24 DUP13 DUP7 MSIZE CALLVALUE 0xFC SWAP8 SWAP5 PUSH23 0x9239E1A6A591E89789EC518F51E46031F69AB92A64736F PUSH13 0x634300080D0033000000000000 ","sourceMap":"202:12582:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ff279c248c865934fc9794769239e1a6a591e89789ec518f51e46031f69ab92a64736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFDESTRUCT 0x27 SWAP13 0x24 DUP13 DUP7 MSIZE CALLVALUE 0xFC SWAP8 SWAP5 PUSH23 0x9239E1A6A591E89789EC518F51E46031F69AB92A64736F PUSH13 0x634300080D0033000000000000 ","sourceMap":"202:12582:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum Math.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum Math.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum Math.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum Math.Rounding)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum Math.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c616ba86b545d147d95d377117c30fcfaac32d4ba4752e6193d0b63fc60cd3d764736f6c634300080d0033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 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 0xC6 AND 0xBA DUP7 0xB5 GASLIMIT 0xD1 SELFBALANCE 0xD9 0x5D CALLDATACOPY PUSH18 0x17C30FCFAAC32D4BA4752E6193D0B63FC60C 0xD3 0xD7 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"215:1047:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c616ba86b545d147d95d377117c30fcfaac32d4ba4752e6193d0b63fc60cd3d764736f6c634300080d0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 AND 0xBA DUP7 0xB5 GASLIMIT 0xD1 SELFBALANCE 0xD9 0x5D CALLDATACOPY PUSH18 0x17C30FCFAAC32D4BA4752E6193D0B63FC60C 0xD3 0xD7 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ","sourceMap":"215:1047:10:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"97","totalCost":"17297"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ERC721All.sol":{"ERC721All":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"todo...","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"Overrides {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"owner()":{"details":"Returns the address of the current owner."},"ownerOf(uint256)":{"details":"Overrides {IERC721-ownerOf}."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_1888":{"entryPoint":null,"id":1888,"parameterSlots":2,"returnSlots":0},"@_2237":{"entryPoint":null,"id":2237,"parameterSlots":2,"returnSlots":0},"@_23":{"entryPoint":null,"id":23,"parameterSlots":0,"returnSlots":0},"@_msgSender_615":{"entryPoint":149,"id":615,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_111":{"entryPoint":157,"id":111,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr_fromMemory":{"entryPoint":816,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_string_memory_ptr_fromMemory":{"entryPoint":891,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":942,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_memory":{"entryPoint":677,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":529,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":708,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":762,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1122,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":623,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x22":{"entryPoint":1075,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":576,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":549,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":554,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":544,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":539,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":559,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4093:13","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:13","statements":[{"nodeType":"YulAssignment","src":"57:19:13","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:13","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:13"},"nodeType":"YulFunctionCall","src":"67:9:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:13"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:13","type":""}],"src":"7:75:13"},{"body":{"nodeType":"YulBlock","src":"177:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:13"},"nodeType":"YulFunctionCall","src":"187:12:13"},"nodeType":"YulExpressionStatement","src":"187:12:13"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:13"},{"body":{"nodeType":"YulBlock","src":"300:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:13"},"nodeType":"YulFunctionCall","src":"310:12:13"},"nodeType":"YulExpressionStatement","src":"310:12:13"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:13"},{"body":{"nodeType":"YulBlock","src":"423:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"440:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"443:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"433:6:13"},"nodeType":"YulFunctionCall","src":"433:12:13"},"nodeType":"YulExpressionStatement","src":"433:12:13"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"334:117:13"},{"body":{"nodeType":"YulBlock","src":"546:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:13"},"nodeType":"YulFunctionCall","src":"556:12:13"},"nodeType":"YulExpressionStatement","src":"556:12:13"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"457:117:13"},{"body":{"nodeType":"YulBlock","src":"628:54:13","statements":[{"nodeType":"YulAssignment","src":"638:38:13","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"656:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"663:2:13","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"652:3:13"},"nodeType":"YulFunctionCall","src":"652:14:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:13","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"668:3:13"},"nodeType":"YulFunctionCall","src":"668:7:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"648:3:13"},"nodeType":"YulFunctionCall","src":"648:28:13"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"638:6:13"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"611:5:13","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"621:6:13","type":""}],"src":"580:102:13"},{"body":{"nodeType":"YulBlock","src":"716:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"733:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"736:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"726:6:13"},"nodeType":"YulFunctionCall","src":"726:88:13"},"nodeType":"YulExpressionStatement","src":"726:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"830:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"833:4:13","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"823:6:13"},"nodeType":"YulFunctionCall","src":"823:15:13"},"nodeType":"YulExpressionStatement","src":"823:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"854:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"857:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"847:6:13"},"nodeType":"YulFunctionCall","src":"847:15:13"},"nodeType":"YulExpressionStatement","src":"847:15:13"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"688:180:13"},{"body":{"nodeType":"YulBlock","src":"917:238:13","statements":[{"nodeType":"YulVariableDeclaration","src":"927:58:13","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"949:6:13"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"979:4:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"957:21:13"},"nodeType":"YulFunctionCall","src":"957:27:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"945:3:13"},"nodeType":"YulFunctionCall","src":"945:40:13"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"931:10:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1096:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1098:16:13"},"nodeType":"YulFunctionCall","src":"1098:18:13"},"nodeType":"YulExpressionStatement","src":"1098:18:13"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1039:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"1051:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1036:2:13"},"nodeType":"YulFunctionCall","src":"1036:34:13"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1075:10:13"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1087:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:13"},"nodeType":"YulFunctionCall","src":"1072:22:13"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1033:2:13"},"nodeType":"YulFunctionCall","src":"1033:62:13"},"nodeType":"YulIf","src":"1030:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1134:2:13","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1138:10:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1127:6:13"},"nodeType":"YulFunctionCall","src":"1127:22:13"},"nodeType":"YulExpressionStatement","src":"1127:22:13"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"903:6:13","type":""},{"name":"size","nodeType":"YulTypedName","src":"911:4:13","type":""}],"src":"874:281:13"},{"body":{"nodeType":"YulBlock","src":"1202:88:13","statements":[{"nodeType":"YulAssignment","src":"1212:30:13","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1222:18:13"},"nodeType":"YulFunctionCall","src":"1222:20:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1212:6:13"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1271:6:13"},{"name":"size","nodeType":"YulIdentifier","src":"1279:4:13"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1251:19:13"},"nodeType":"YulFunctionCall","src":"1251:33:13"},"nodeType":"YulExpressionStatement","src":"1251:33:13"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1186:4:13","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1195:6:13","type":""}],"src":"1161:129:13"},{"body":{"nodeType":"YulBlock","src":"1363:241:13","statements":[{"body":{"nodeType":"YulBlock","src":"1468:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1470:16:13"},"nodeType":"YulFunctionCall","src":"1470:18:13"},"nodeType":"YulExpressionStatement","src":"1470:18:13"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1440:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"1448:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1437:2:13"},"nodeType":"YulFunctionCall","src":"1437:30:13"},"nodeType":"YulIf","src":"1434:56:13"},{"nodeType":"YulAssignment","src":"1500:37:13","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1530:6:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1508:21:13"},"nodeType":"YulFunctionCall","src":"1508:29:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1500:4:13"}]},{"nodeType":"YulAssignment","src":"1574:23:13","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1586:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"1592:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1582:3:13"},"nodeType":"YulFunctionCall","src":"1582:15:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1574:4:13"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1347:6:13","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1358:4:13","type":""}],"src":"1296:308:13"},{"body":{"nodeType":"YulBlock","src":"1659:258:13","statements":[{"nodeType":"YulVariableDeclaration","src":"1669:10:13","value":{"kind":"number","nodeType":"YulLiteral","src":"1678:1:13","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1673:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1738:63:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1763:3:13"},{"name":"i","nodeType":"YulIdentifier","src":"1768:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1759:3:13"},"nodeType":"YulFunctionCall","src":"1759:11:13"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1782:3:13"},{"name":"i","nodeType":"YulIdentifier","src":"1787:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1778:3:13"},"nodeType":"YulFunctionCall","src":"1778:11:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1772:5:13"},"nodeType":"YulFunctionCall","src":"1772:18:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:13"},"nodeType":"YulFunctionCall","src":"1752:39:13"},"nodeType":"YulExpressionStatement","src":"1752:39:13"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1699:1:13"},{"name":"length","nodeType":"YulIdentifier","src":"1702:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1696:2:13"},"nodeType":"YulFunctionCall","src":"1696:13:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1710:19:13","statements":[{"nodeType":"YulAssignment","src":"1712:15:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1721:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"1724:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1717:3:13"},"nodeType":"YulFunctionCall","src":"1717:10:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1712:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"1692:3:13","statements":[]},"src":"1688:113:13"},{"body":{"nodeType":"YulBlock","src":"1835:76:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1885:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1881:3:13"},"nodeType":"YulFunctionCall","src":"1881:16:13"},{"kind":"number","nodeType":"YulLiteral","src":"1899:1:13","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1874:6:13"},"nodeType":"YulFunctionCall","src":"1874:27:13"},"nodeType":"YulExpressionStatement","src":"1874:27:13"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1816:1:13"},{"name":"length","nodeType":"YulIdentifier","src":"1819:6:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1813:2:13"},"nodeType":"YulFunctionCall","src":"1813:13:13"},"nodeType":"YulIf","src":"1810:101:13"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1641:3:13","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1646:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"1651:6:13","type":""}],"src":"1610:307:13"},{"body":{"nodeType":"YulBlock","src":"2018:326:13","statements":[{"nodeType":"YulAssignment","src":"2028:75:13","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2095:6:13"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2053:41:13"},"nodeType":"YulFunctionCall","src":"2053:49:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2037:15:13"},"nodeType":"YulFunctionCall","src":"2037:66:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2028:5:13"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2119:5:13"},{"name":"length","nodeType":"YulIdentifier","src":"2126:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2112:6:13"},"nodeType":"YulFunctionCall","src":"2112:21:13"},"nodeType":"YulExpressionStatement","src":"2112:21:13"},{"nodeType":"YulVariableDeclaration","src":"2142:27:13","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2157:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"2164:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2153:3:13"},"nodeType":"YulFunctionCall","src":"2153:16:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2146:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"2207:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"2209:77:13"},"nodeType":"YulFunctionCall","src":"2209:79:13"},"nodeType":"YulExpressionStatement","src":"2209:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2188:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"2193:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:13"},"nodeType":"YulFunctionCall","src":"2184:16:13"},{"name":"end","nodeType":"YulIdentifier","src":"2202:3:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2181:2:13"},"nodeType":"YulFunctionCall","src":"2181:25:13"},"nodeType":"YulIf","src":"2178:112:13"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2321:3:13"},{"name":"dst","nodeType":"YulIdentifier","src":"2326:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"2331:6:13"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2299:21:13"},"nodeType":"YulFunctionCall","src":"2299:39:13"},"nodeType":"YulExpressionStatement","src":"2299:39:13"}]},"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1991:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"1996:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"2004:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2012:5:13","type":""}],"src":"1923:421:13"},{"body":{"nodeType":"YulBlock","src":"2437:282:13","statements":[{"body":{"nodeType":"YulBlock","src":"2486:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"2488:77:13"},"nodeType":"YulFunctionCall","src":"2488:79:13"},"nodeType":"YulExpressionStatement","src":"2488:79:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2465:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"2473:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2461:3:13"},"nodeType":"YulFunctionCall","src":"2461:17:13"},{"name":"end","nodeType":"YulIdentifier","src":"2480:3:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2457:3:13"},"nodeType":"YulFunctionCall","src":"2457:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2450:6:13"},"nodeType":"YulFunctionCall","src":"2450:35:13"},"nodeType":"YulIf","src":"2447:122:13"},{"nodeType":"YulVariableDeclaration","src":"2578:27:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2598:6:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2592:5:13"},"nodeType":"YulFunctionCall","src":"2592:13:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2582:6:13","type":""}]},{"nodeType":"YulAssignment","src":"2614:99:13","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2686:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"2694:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2682:3:13"},"nodeType":"YulFunctionCall","src":"2682:17:13"},{"name":"length","nodeType":"YulIdentifier","src":"2701:6:13"},{"name":"end","nodeType":"YulIdentifier","src":"2709:3:13"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"2623:58:13"},"nodeType":"YulFunctionCall","src":"2623:90:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2614:5:13"}]}]},"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2415:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"2423:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2431:5:13","type":""}],"src":"2364:355:13"},{"body":{"nodeType":"YulBlock","src":"2839:739:13","statements":[{"body":{"nodeType":"YulBlock","src":"2885:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2887:77:13"},"nodeType":"YulFunctionCall","src":"2887:79:13"},"nodeType":"YulExpressionStatement","src":"2887:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2860:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"2869:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2856:3:13"},"nodeType":"YulFunctionCall","src":"2856:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"2881:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2852:3:13"},"nodeType":"YulFunctionCall","src":"2852:32:13"},"nodeType":"YulIf","src":"2849:119:13"},{"nodeType":"YulBlock","src":"2978:291:13","statements":[{"nodeType":"YulVariableDeclaration","src":"2993:38:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3017:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"3028:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3013:3:13"},"nodeType":"YulFunctionCall","src":"3013:17:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3007:5:13"},"nodeType":"YulFunctionCall","src":"3007:24:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2997:6:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3078:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3080:77:13"},"nodeType":"YulFunctionCall","src":"3080:79:13"},"nodeType":"YulExpressionStatement","src":"3080:79:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3050:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"3058:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3047:2:13"},"nodeType":"YulFunctionCall","src":"3047:30:13"},"nodeType":"YulIf","src":"3044:117:13"},{"nodeType":"YulAssignment","src":"3175:84:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3231:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"3242:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3227:3:13"},"nodeType":"YulFunctionCall","src":"3227:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3251:7:13"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3185:41:13"},"nodeType":"YulFunctionCall","src":"3185:74:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3175:6:13"}]}]},{"nodeType":"YulBlock","src":"3279:292:13","statements":[{"nodeType":"YulVariableDeclaration","src":"3294:39:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3318:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"3329:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3314:3:13"},"nodeType":"YulFunctionCall","src":"3314:18:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3308:5:13"},"nodeType":"YulFunctionCall","src":"3308:25:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3298:6:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3380:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3382:77:13"},"nodeType":"YulFunctionCall","src":"3382:79:13"},"nodeType":"YulExpressionStatement","src":"3382:79:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3352:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"3360:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3349:2:13"},"nodeType":"YulFunctionCall","src":"3349:30:13"},"nodeType":"YulIf","src":"3346:117:13"},{"nodeType":"YulAssignment","src":"3477:84:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3533:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"3544:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3529:3:13"},"nodeType":"YulFunctionCall","src":"3529:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3553:7:13"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3487:41:13"},"nodeType":"YulFunctionCall","src":"3487:74:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3477:6:13"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2801:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2812:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2824:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2832:6:13","type":""}],"src":"2725:853:13"},{"body":{"nodeType":"YulBlock","src":"3612:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3629:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3632:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:13"},"nodeType":"YulFunctionCall","src":"3622:88:13"},"nodeType":"YulExpressionStatement","src":"3622:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3726:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3729:4:13","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3719:6:13"},"nodeType":"YulFunctionCall","src":"3719:15:13"},"nodeType":"YulExpressionStatement","src":"3719:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3750:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3753:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3743:6:13"},"nodeType":"YulFunctionCall","src":"3743:15:13"},"nodeType":"YulExpressionStatement","src":"3743:15:13"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"3584:180:13"},{"body":{"nodeType":"YulBlock","src":"3821:269:13","statements":[{"nodeType":"YulAssignment","src":"3831:22:13","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3845:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"3851:1:13","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3841:3:13"},"nodeType":"YulFunctionCall","src":"3841:12:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3831:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"3862:38:13","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3892:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"3898:1:13","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3888:3:13"},"nodeType":"YulFunctionCall","src":"3888:12:13"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"3866:18:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3939:51:13","statements":[{"nodeType":"YulAssignment","src":"3953:27:13","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3967:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"3975:4:13","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3963:3:13"},"nodeType":"YulFunctionCall","src":"3963:17:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3953:6:13"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3919:18:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3912:6:13"},"nodeType":"YulFunctionCall","src":"3912:26:13"},"nodeType":"YulIf","src":"3909:81:13"},{"body":{"nodeType":"YulBlock","src":"4042:42:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"4056:16:13"},"nodeType":"YulFunctionCall","src":"4056:18:13"},"nodeType":"YulExpressionStatement","src":"4056:18:13"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4006:18:13"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4029:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"4037:2:13","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4026:2:13"},"nodeType":"YulFunctionCall","src":"4026:14:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4003:2:13"},"nodeType":"YulFunctionCall","src":"4003:38:13"},"nodeType":"YulIf","src":"4000:84:13"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"3805:4:13","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3814:6:13","type":""}],"src":"3770:320:13"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n}\n","id":13,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162002e0038038062002e008339818101604052810190620000379190620003ae565b8181620000596200004d6200009560201b60201c565b6200009d60201b60201c565b81600190805190602001906200007192919062000161565b5080600290805190602001906200008a92919062000161565b505050505062000497565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200016f9062000462565b90600052602060002090601f016020900481019282620001935760008555620001df565b82601f10620001ae57805160ff1916838001178555620001df565b82800160010185558215620001df579182015b82811115620001de578251825591602001919060010190620001c1565b5b509050620001ee9190620001f2565b5090565b5b808211156200020d576000816000905550600101620001f3565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200027a826200022f565b810181811067ffffffffffffffff821117156200029c576200029b62000240565b5b80604052505050565b6000620002b162000211565b9050620002bf82826200026f565b919050565b600067ffffffffffffffff821115620002e257620002e162000240565b5b620002ed826200022f565b9050602081019050919050565b60005b838110156200031a578082015181840152602081019050620002fd565b838111156200032a576000848401525b50505050565b6000620003476200034184620002c4565b620002a5565b9050828152602081018484840111156200036657620003656200022a565b5b62000373848285620002fa565b509392505050565b600082601f83011262000393576200039262000225565b5b8151620003a584826020860162000330565b91505092915050565b60008060408385031215620003c857620003c76200021b565b5b600083015167ffffffffffffffff811115620003e957620003e862000220565b5b620003f7858286016200037b565b925050602083015167ffffffffffffffff8111156200041b576200041a62000220565b5b62000429858286016200037b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200047b57607f821691505b60208210810362000491576200049062000433565b5b50919050565b61295980620004a76000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a22cb46511610071578063a22cb46514610292578063b88d4fde146102ae578063c87b56dd146102ca578063e985e9c5146102fa578063f2fde38b1461032a5761010b565b806370a082311461021c578063715018a61461024c5780638da5cb5b1461025657806395d89b41146102745761010b565b80631249c58b116100de5780631249c58b146101aa57806323b872dd146101b457806342842e0e146101d05780636352211e146101ec5761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611a95565b610346565b6040516101379190611add565b60405180910390f35b610148610428565b6040516101559190611b91565b60405180910390f35b61017860048036038101906101739190611be9565b6104ba565b6040516101859190611c57565b60405180910390f35b6101a860048036038101906101a39190611c9e565b610500565b005b6101b2610617565b005b6101ce60048036038101906101c99190611cde565b610629565b005b6101ea60048036038101906101e59190611cde565b610689565b005b61020660048036038101906102019190611be9565b6106a9565b6040516102139190611c57565b60405180910390f35b61023660048036038101906102319190611d31565b61076c565b6040516102439190611d6d565b60405180910390f35b610254610886565b005b61025e61089a565b60405161026b9190611c57565b60405180910390f35b61027c6108c3565b6040516102899190611b91565b60405180910390f35b6102ac60048036038101906102a79190611db4565b610955565b005b6102c860048036038101906102c39190611f29565b61096b565b005b6102e460048036038101906102df9190611be9565b6109cd565b6040516102f19190611b91565b60405180910390f35b610314600480360381019061030f9190611fac565b610a35565b6040516103219190611add565b60405180910390f35b610344600480360381019061033f9190611d31565b610ac9565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061041157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610421575061042082610b4c565b5b9050919050565b6060600180546104379061201b565b80601f01602080910402602001604051908101604052809291908181526020018280546104639061201b565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b60006104c582610bb6565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061050b826106a9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361057b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610572906120be565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661059a610c01565b73ffffffffffffffffffffffffffffffffffffffff1614806105c957506105c8816105c3610c01565b610a35565b5b610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90612150565b60405180910390fd5b6106128383610c09565b505050565b610627610622610c01565b610cc2565b565b61063a610634610c01565b82610e21565b610679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610670906121e2565b60405180910390fd5b610684838383610eb6565b505050565b6106a48383836040518060200160405280600081525061096b565b505050565b60006106b482611184565b6106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea9061224e565b60405180910390fd5b60006003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610763578290505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d3906122e0565b60405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148015610830575061082f8261121b565b5b1561083e5760019050610881565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b61088e6112ef565b610898600061136d565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546108d29061201b565b80601f01602080910402602001604051908101604052809291908181526020018280546108fe9061201b565b801561094b5780601f106109205761010080835404028352916020019161094b565b820191906000526020600020905b81548152906001019060200180831161092e57829003601f168201915b5050505050905090565b610967610960610c01565b8383611431565b5050565b61097c610976610c01565b83610e21565b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b2906121e2565b60405180910390fd5b6109c78484848461159d565b50505050565b60606109d882610bb6565b60006109e26115f9565b90506000815111610a025760405180602001604052806000815250610a2d565b80610a0c84611610565b604051602001610a1d92919061233c565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610ad16112ef565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b37906123d2565b60405180910390fd5b610b498161136d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610bbf816116de565b610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf59061224e565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610c7c836106a9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008173ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d439061243e565b60405180910390fd5b610d5581611184565b15610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c906124aa565b60405180910390fd5b60016007600083815260200190815260200160002060006101000a81548160ff021916908315150217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080610e2d836106a9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e6f5750610e6e8185610a35565b5b80610ead57508373ffffffffffffffffffffffffffffffffffffffff16610e95846104ba565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ed6826106a9565b73ffffffffffffffffffffffffffffffffffffffff1614610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f239061253c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f92906125ce565b60405180910390fd5b610fa683838361174a565b610fb1600082610c09565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611068919061261d565b925050819055505b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110c09190612651565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461117f83838361174f565b505050565b60006007600083815260200190815260200160002060009054906101000a900460ff168015611214575061dead73ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff16905060006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061127882611184565b80156112e657508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806112e55750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b5b92505050919050565b6112f7610c01565b73ffffffffffffffffffffffffffffffffffffffff1661131561089a565b73ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611362906126f3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361149f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114969061275f565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115909190611add565b60405180910390a3505050565b6115a8848484610eb6565b6115b484848484611754565b6115f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ea906127f1565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000600161161f846118d6565b01905060008167ffffffffffffffff81111561163e5761163d611dfe565b5b6040519080825280601f01601f1916602001820160405280156116705781602001600182028036833780820191505090505b509050600082602001820190505b6001156116d3578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816116c7576116c6612811565b5b0494506000850361167e575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b11156118c9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611799610c01565b8786866040518563ffffffff1660e01b81526004016117bb9493929190612895565b6020604051808303816000875af19250505080156117f757506040513d601f19601f820116820180604052508101906117f491906128f6565b60015b611879573d8060008114611827576040519150601f19603f3d011682016040523d82523d6000602084013e61182c565b606091505b506000815103611871576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611868906127f1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506118ce565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611934577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161192a57611929612811565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611971576d04ee2d6d415b85acef8100000000838161196757611966612811565b5b0492506020810190505b662386f26fc1000083106119a057662386f26fc10000838161199657611995612811565b5b0492506010810190505b6305f5e10083106119c9576305f5e10083816119bf576119be612811565b5b0492506008810190505b61271083106119ee5761271083816119e4576119e3612811565b5b0492506004810190505b60648310611a115760648381611a0757611a06612811565b5b0492506002810190505b600a8310611a20576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a7281611a3d565b8114611a7d57600080fd5b50565b600081359050611a8f81611a69565b92915050565b600060208284031215611aab57611aaa611a33565b5b6000611ab984828501611a80565b91505092915050565b60008115159050919050565b611ad781611ac2565b82525050565b6000602082019050611af26000830184611ace565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b32578082015181840152602081019050611b17565b83811115611b41576000848401525b50505050565b6000601f19601f8301169050919050565b6000611b6382611af8565b611b6d8185611b03565b9350611b7d818560208601611b14565b611b8681611b47565b840191505092915050565b60006020820190508181036000830152611bab8184611b58565b905092915050565b6000819050919050565b611bc681611bb3565b8114611bd157600080fd5b50565b600081359050611be381611bbd565b92915050565b600060208284031215611bff57611bfe611a33565b5b6000611c0d84828501611bd4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c4182611c16565b9050919050565b611c5181611c36565b82525050565b6000602082019050611c6c6000830184611c48565b92915050565b611c7b81611c36565b8114611c8657600080fd5b50565b600081359050611c9881611c72565b92915050565b60008060408385031215611cb557611cb4611a33565b5b6000611cc385828601611c89565b9250506020611cd485828601611bd4565b9150509250929050565b600080600060608486031215611cf757611cf6611a33565b5b6000611d0586828701611c89565b9350506020611d1686828701611c89565b9250506040611d2786828701611bd4565b9150509250925092565b600060208284031215611d4757611d46611a33565b5b6000611d5584828501611c89565b91505092915050565b611d6781611bb3565b82525050565b6000602082019050611d826000830184611d5e565b92915050565b611d9181611ac2565b8114611d9c57600080fd5b50565b600081359050611dae81611d88565b92915050565b60008060408385031215611dcb57611dca611a33565b5b6000611dd985828601611c89565b9250506020611dea85828601611d9f565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e3682611b47565b810181811067ffffffffffffffff82111715611e5557611e54611dfe565b5b80604052505050565b6000611e68611a29565b9050611e748282611e2d565b919050565b600067ffffffffffffffff821115611e9457611e93611dfe565b5b611e9d82611b47565b9050602081019050919050565b82818337600083830152505050565b6000611ecc611ec784611e79565b611e5e565b905082815260208101848484011115611ee857611ee7611df9565b5b611ef3848285611eaa565b509392505050565b600082601f830112611f1057611f0f611df4565b5b8135611f20848260208601611eb9565b91505092915050565b60008060008060808587031215611f4357611f42611a33565b5b6000611f5187828801611c89565b9450506020611f6287828801611c89565b9350506040611f7387828801611bd4565b925050606085013567ffffffffffffffff811115611f9457611f93611a38565b5b611fa087828801611efb565b91505092959194509250565b60008060408385031215611fc357611fc2611a33565b5b6000611fd185828601611c89565b9250506020611fe285828601611c89565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061203357607f821691505b60208210810361204657612045611fec565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006120a8602183611b03565b91506120b38261204c565b604082019050919050565b600060208201905081810360008301526120d78161209b565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b600061213a603e83611b03565b9150612145826120de565b604082019050919050565b600060208201905081810360008301526121698161212d565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b60006121cc602e83611b03565b91506121d782612170565b604082019050919050565b600060208201905081810360008301526121fb816121bf565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612238601883611b03565b915061224382612202565b602082019050919050565b600060208201905081810360008301526122678161222b565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006122ca602983611b03565b91506122d58261226e565b604082019050919050565b600060208201905081810360008301526122f9816122bd565b9050919050565b600081905092915050565b600061231682611af8565b6123208185612300565b9350612330818560208601611b14565b80840191505092915050565b6000612348828561230b565b9150612354828461230b565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006123bc602683611b03565b91506123c782612360565b604082019050919050565b600060208201905081810360008301526123eb816123af565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612428602083611b03565b9150612433826123f2565b602082019050919050565b600060208201905081810360008301526124578161241b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000612494601c83611b03565b915061249f8261245e565b602082019050919050565b600060208201905081810360008301526124c381612487565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612526602583611b03565b9150612531826124ca565b604082019050919050565b6000602082019050818103600083015261255581612519565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125b8602483611b03565b91506125c38261255c565b604082019050919050565b600060208201905081810360008301526125e7816125ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061262882611bb3565b915061263383611bb3565b925082821015612646576126456125ee565b5b828203905092915050565b600061265c82611bb3565b915061266783611bb3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561269c5761269b6125ee565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126dd602083611b03565b91506126e8826126a7565b602082019050919050565b6000602082019050818103600083015261270c816126d0565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612749601983611b03565b915061275482612713565b602082019050919050565b600060208201905081810360008301526127788161273c565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006127db603283611b03565b91506127e68261277f565b604082019050919050565b6000602082019050818103600083015261280a816127ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061286782612840565b612871818561284b565b9350612881818560208601611b14565b61288a81611b47565b840191505092915050565b60006080820190506128aa6000830187611c48565b6128b76020830186611c48565b6128c46040830185611d5e565b81810360608301526128d6818461285c565b905095945050505050565b6000815190506128f081611a69565b92915050565b60006020828403121561290c5761290b611a33565b5b600061291a848285016128e1565b9150509291505056fea264697066735822122085c7d608a0fb21c4e9f5bd82509de0ddc1df85607191f40e67d6d8caf3978ded64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2E00 CODESIZE SUB DUP1 PUSH3 0x2E00 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x3AE JUMP JUMPDEST DUP2 DUP2 PUSH3 0x59 PUSH3 0x4D PUSH3 0x95 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x9D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x71 SWAP3 SWAP2 SWAP1 PUSH3 0x161 JUMP JUMPDEST POP DUP1 PUSH1 0x2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x8A SWAP3 SWAP2 SWAP1 PUSH3 0x161 JUMP JUMPDEST POP POP POP POP POP PUSH3 0x497 JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x16F SWAP1 PUSH3 0x462 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x193 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x1DF JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x1AE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x1DF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x1DF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x1DE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1C1 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x1EE SWAP2 SWAP1 PUSH3 0x1F2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x20D JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x1F3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH3 0x27A DUP3 PUSH3 0x22F JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x29C JUMPI PUSH3 0x29B PUSH3 0x240 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2B1 PUSH3 0x211 JUMP JUMPDEST SWAP1 POP PUSH3 0x2BF DUP3 DUP3 PUSH3 0x26F JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x2E2 JUMPI PUSH3 0x2E1 PUSH3 0x240 JUMP JUMPDEST JUMPDEST PUSH3 0x2ED DUP3 PUSH3 0x22F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x31A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x2FD JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x32A JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x347 PUSH3 0x341 DUP5 PUSH3 0x2C4 JUMP JUMPDEST PUSH3 0x2A5 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x366 JUMPI PUSH3 0x365 PUSH3 0x22A JUMP JUMPDEST JUMPDEST PUSH3 0x373 DUP5 DUP3 DUP6 PUSH3 0x2FA JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x393 JUMPI PUSH3 0x392 PUSH3 0x225 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0x3A5 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x330 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x3C8 JUMPI PUSH3 0x3C7 PUSH3 0x21B JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x3E9 JUMPI PUSH3 0x3E8 PUSH3 0x220 JUMP JUMPDEST JUMPDEST PUSH3 0x3F7 DUP6 DUP3 DUP7 ADD PUSH3 0x37B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x41B JUMPI PUSH3 0x41A PUSH3 0x220 JUMP JUMPDEST JUMPDEST PUSH3 0x429 DUP6 DUP3 DUP7 ADD PUSH3 0x37B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x47B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x491 JUMPI PUSH3 0x490 PUSH3 0x433 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2959 DUP1 PUSH3 0x4A7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x32A JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x274 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1249C58B GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x1EC JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x140 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x18E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x1A95 JUMP JUMPDEST PUSH2 0x346 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x137 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x148 PUSH2 0x428 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x155 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x173 SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x185 SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1A3 SWAP2 SWAP1 PUSH2 0x1C9E JUMP JUMPDEST PUSH2 0x500 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B2 PUSH2 0x617 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C9 SWAP2 SWAP1 PUSH2 0x1CDE JUMP JUMPDEST PUSH2 0x629 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x1CDE JUMP JUMPDEST PUSH2 0x689 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x201 SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x6A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x213 SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x231 SWAP2 SWAP1 PUSH2 0x1D31 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x243 SWAP2 SWAP1 PUSH2 0x1D6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x254 PUSH2 0x886 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25E PUSH2 0x89A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27C PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x289 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x1DB4 JUMP JUMPDEST PUSH2 0x955 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C3 SWAP2 SWAP1 PUSH2 0x1F29 JUMP JUMPDEST PUSH2 0x96B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x9CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F1 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x314 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30F SWAP2 SWAP1 PUSH2 0x1FAC JUMP JUMPDEST PUSH2 0xA35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x321 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x344 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x1D31 JUMP JUMPDEST PUSH2 0xAC9 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x411 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x421 JUMPI POP PUSH2 0x420 DUP3 PUSH2 0xB4C JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x437 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x463 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4B0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x485 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x493 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5 DUP3 PUSH2 0xBB6 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50B DUP3 PUSH2 0x6A9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x57B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x572 SWAP1 PUSH2 0x20BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x59A PUSH2 0xC01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x5C9 JUMPI POP PUSH2 0x5C8 DUP2 PUSH2 0x5C3 PUSH2 0xC01 JUMP JUMPDEST PUSH2 0xA35 JUMP JUMPDEST JUMPDEST PUSH2 0x608 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5FF SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x612 DUP4 DUP4 PUSH2 0xC09 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x627 PUSH2 0x622 PUSH2 0xC01 JUMP JUMPDEST PUSH2 0xCC2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x63A PUSH2 0x634 PUSH2 0xC01 JUMP JUMPDEST DUP3 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x679 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x670 SWAP1 PUSH2 0x21E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x684 DUP4 DUP4 DUP4 PUSH2 0xEB6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6A4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x96B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B4 DUP3 PUSH2 0x1184 JUMP JUMPDEST PUSH2 0x6F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6EA SWAP1 PUSH2 0x224E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x763 JUMPI DUP3 SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D3 SWAP1 PUSH2 0x22E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ DUP1 ISZERO PUSH2 0x830 JUMPI POP PUSH2 0x82F DUP3 PUSH2 0x121B JUMP JUMPDEST JUMPDEST ISZERO PUSH2 0x83E JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x881 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x88E PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x898 PUSH1 0x0 PUSH2 0x136D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x8D2 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x8FE SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x94B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x920 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x94B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x92E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x967 PUSH2 0x960 PUSH2 0xC01 JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1431 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x97C PUSH2 0x976 PUSH2 0xC01 JUMP JUMPDEST DUP4 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x9BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B2 SWAP1 PUSH2 0x21E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9C7 DUP5 DUP5 DUP5 DUP5 PUSH2 0x159D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9D8 DUP3 PUSH2 0xBB6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E2 PUSH2 0x15F9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xA02 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xA2D JUMP JUMPDEST DUP1 PUSH2 0xA0C DUP5 PUSH2 0x1610 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA1D SWAP3 SWAP2 SWAP1 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAD1 PUSH2 0x12EF JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB37 SWAP1 PUSH2 0x23D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB49 DUP2 PUSH2 0x136D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBBF DUP2 PUSH2 0x16DE JUMP JUMPDEST PUSH2 0xBFE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF5 SWAP1 PUSH2 0x224E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC7C DUP4 PUSH2 0x6A9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD43 SWAP1 PUSH2 0x243E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD55 DUP2 PUSH2 0x1184 JUMP JUMPDEST ISZERO PUSH2 0xD95 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD8C SWAP1 PUSH2 0x24AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x7 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE2D DUP4 PUSH2 0x6A9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xE6F JUMPI POP PUSH2 0xE6E DUP2 DUP6 PUSH2 0xA35 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xEAD JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE95 DUP5 PUSH2 0x4BA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xED6 DUP3 PUSH2 0x6A9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xF2C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF23 SWAP1 PUSH2 0x253C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xF9B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP1 PUSH2 0x25CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFA6 DUP4 DUP4 DUP4 PUSH2 0x174A JUMP JUMPDEST PUSH2 0xFB1 PUSH1 0x0 DUP3 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1070 JUMPI PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1068 SWAP2 SWAP1 PUSH2 0x261D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x10C0 SWAP2 SWAP1 PUSH2 0x2651 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x117F DUP4 DUP4 DUP4 PUSH2 0x174F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1214 JUMPI POP PUSH2 0xDEAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x1278 DUP3 PUSH2 0x1184 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x12E6 JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x12E5 JUMPI POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST JUMPDEST SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x12F7 PUSH2 0xC01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1315 PUSH2 0x89A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x136B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1362 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x149F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1496 SWAP1 PUSH2 0x275F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1590 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x15A8 DUP5 DUP5 DUP5 PUSH2 0xEB6 JUMP JUMPDEST PUSH2 0x15B4 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1754 JUMP JUMPDEST PUSH2 0x15F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15EA SWAP1 PUSH2 0x27F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0x161F DUP5 PUSH2 0x18D6 JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x163E JUMPI PUSH2 0x163D PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1670 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x16D3 JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x16C7 JUMPI PUSH2 0x16C6 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x167E JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x18C9 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x1799 PUSH2 0xC01 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17BB SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2895 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x17F7 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17F4 SWAP2 SWAP1 PUSH2 0x28F6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1879 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1827 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 0x182C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x1871 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1868 SWAP1 PUSH2 0x27F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1934 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x192A JUMPI PUSH2 0x1929 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1971 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1967 JUMPI PUSH2 0x1966 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x19A0 JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1996 JUMPI PUSH2 0x1995 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x19C9 JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x19BF JUMPI PUSH2 0x19BE PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x19EE JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x19E4 JUMPI PUSH2 0x19E3 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1A11 JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x1A07 JUMPI PUSH2 0x1A06 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x1A20 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1A72 DUP2 PUSH2 0x1A3D JUMP JUMPDEST DUP2 EQ PUSH2 0x1A7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1A8F DUP2 PUSH2 0x1A69 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AAB JUMPI PUSH2 0x1AAA PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1AB9 DUP5 DUP3 DUP6 ADD PUSH2 0x1A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1AD7 DUP2 PUSH2 0x1AC2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1AF2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1ACE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B32 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1B17 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1B41 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP3 PUSH2 0x1AF8 JUMP JUMPDEST PUSH2 0x1B6D DUP2 DUP6 PUSH2 0x1B03 JUMP JUMPDEST SWAP4 POP PUSH2 0x1B7D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x1B86 DUP2 PUSH2 0x1B47 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BAB DUP2 DUP5 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BC6 DUP2 PUSH2 0x1BB3 JUMP JUMPDEST DUP2 EQ PUSH2 0x1BD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1BE3 DUP2 PUSH2 0x1BBD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BFF JUMPI PUSH2 0x1BFE PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1C0D DUP5 DUP3 DUP6 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C41 DUP3 PUSH2 0x1C16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1C51 DUP2 PUSH2 0x1C36 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1C6C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1C48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1C7B DUP2 PUSH2 0x1C36 JUMP JUMPDEST DUP2 EQ PUSH2 0x1C86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1C98 DUP2 PUSH2 0x1C72 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CB5 JUMPI PUSH2 0x1CB4 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1CC3 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1CD4 DUP6 DUP3 DUP7 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1CF7 JUMPI PUSH2 0x1CF6 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1D05 DUP7 DUP3 DUP8 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1D16 DUP7 DUP3 DUP8 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1D27 DUP7 DUP3 DUP8 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D47 JUMPI PUSH2 0x1D46 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1D55 DUP5 DUP3 DUP6 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D67 DUP2 PUSH2 0x1BB3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1D82 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1D5E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D91 DUP2 PUSH2 0x1AC2 JUMP JUMPDEST DUP2 EQ PUSH2 0x1D9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1DAE DUP2 PUSH2 0x1D88 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DCB JUMPI PUSH2 0x1DCA PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1DD9 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1DEA DUP6 DUP3 DUP7 ADD PUSH2 0x1D9F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E36 DUP3 PUSH2 0x1B47 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1E55 JUMPI PUSH2 0x1E54 PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E68 PUSH2 0x1A29 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E74 DUP3 DUP3 PUSH2 0x1E2D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1E94 JUMPI PUSH2 0x1E93 PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST PUSH2 0x1E9D DUP3 PUSH2 0x1B47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ECC PUSH2 0x1EC7 DUP5 PUSH2 0x1E79 JUMP JUMPDEST PUSH2 0x1E5E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x1EE8 JUMPI PUSH2 0x1EE7 PUSH2 0x1DF9 JUMP JUMPDEST JUMPDEST PUSH2 0x1EF3 DUP5 DUP3 DUP6 PUSH2 0x1EAA JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1F10 JUMPI PUSH2 0x1F0F PUSH2 0x1DF4 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F20 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1EB9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1F43 JUMPI PUSH2 0x1F42 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1F51 DUP8 DUP3 DUP9 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x1F62 DUP8 DUP3 DUP9 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x1F73 DUP8 DUP3 DUP9 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F94 JUMPI PUSH2 0x1F93 PUSH2 0x1A38 JUMP JUMPDEST JUMPDEST PUSH2 0x1FA0 DUP8 DUP3 DUP9 ADD PUSH2 0x1EFB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1FC3 JUMPI PUSH2 0x1FC2 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1FD1 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1FE2 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2033 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2046 JUMPI PUSH2 0x2045 PUSH2 0x1FEC JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20A8 PUSH1 0x21 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x20B3 DUP3 PUSH2 0x204C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x20D7 DUP2 PUSH2 0x209B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x213A PUSH1 0x3E DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2145 DUP3 PUSH2 0x20DE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2169 DUP2 PUSH2 0x212D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21CC PUSH1 0x2E DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x21D7 DUP3 PUSH2 0x2170 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x21FB DUP2 PUSH2 0x21BF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2238 PUSH1 0x18 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2243 DUP3 PUSH2 0x2202 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2267 DUP2 PUSH2 0x222B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22CA PUSH1 0x29 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x22D5 DUP3 PUSH2 0x226E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x22F9 DUP2 PUSH2 0x22BD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2316 DUP3 PUSH2 0x1AF8 JUMP JUMPDEST PUSH2 0x2320 DUP2 DUP6 PUSH2 0x2300 JUMP JUMPDEST SWAP4 POP PUSH2 0x2330 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2348 DUP3 DUP6 PUSH2 0x230B JUMP JUMPDEST SWAP2 POP PUSH2 0x2354 DUP3 DUP5 PUSH2 0x230B JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23BC PUSH1 0x26 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x23C7 DUP3 PUSH2 0x2360 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x23EB DUP2 PUSH2 0x23AF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2428 PUSH1 0x20 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2433 DUP3 PUSH2 0x23F2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2457 DUP2 PUSH2 0x241B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2494 PUSH1 0x1C DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x249F DUP3 PUSH2 0x245E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x24C3 DUP2 PUSH2 0x2487 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2526 PUSH1 0x25 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2531 DUP3 PUSH2 0x24CA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2555 DUP2 PUSH2 0x2519 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25B8 PUSH1 0x24 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x25C3 DUP3 PUSH2 0x255C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x25E7 DUP2 PUSH2 0x25AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2628 DUP3 PUSH2 0x1BB3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2633 DUP4 PUSH2 0x1BB3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x2646 JUMPI PUSH2 0x2645 PUSH2 0x25EE JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265C DUP3 PUSH2 0x1BB3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2667 DUP4 PUSH2 0x1BB3 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x269C JUMPI PUSH2 0x269B PUSH2 0x25EE JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26DD PUSH1 0x20 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x26E8 DUP3 PUSH2 0x26A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x270C DUP2 PUSH2 0x26D0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2749 PUSH1 0x19 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2754 DUP3 PUSH2 0x2713 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2778 DUP2 PUSH2 0x273C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27DB PUSH1 0x32 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x27E6 DUP3 PUSH2 0x277F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x280A DUP2 PUSH2 0x27CE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2867 DUP3 PUSH2 0x2840 JUMP JUMPDEST PUSH2 0x2871 DUP2 DUP6 PUSH2 0x284B JUMP JUMPDEST SWAP4 POP PUSH2 0x2881 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x288A DUP2 PUSH2 0x1B47 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x28AA PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1C48 JUMP JUMPDEST PUSH2 0x28B7 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH2 0x28C4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1D5E JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x28D6 DUP2 DUP5 PUSH2 0x285C JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x28F0 DUP2 PUSH2 0x1A69 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x290C JUMPI PUSH2 0x290B PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x291A DUP5 DUP3 DUP6 ADD PUSH2 0x28E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 0xC7 0xD6 ADDMOD LOG0 0xFB 0x21 0xC4 0xE9 CREATE2 0xBD DUP3 POP SWAP14 0xE0 0xDD 0xC1 0xDF DUP6 PUSH1 0x71 SWAP2 DELEGATECALL 0xE PUSH8 0xD6D8CAF3978DED64 PUSH20 0x6F6C634300080D00330000000000000000000000 ","sourceMap":"344:2581:11:-:0;;;438:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;499:4;505:6;936:32:0;955:12;:10;;;:12;;:::i;:::-;936:18;;;:32;;:::i;:::-;2311:5:12;2303;:13;;;;;;;;;;;;:::i;:::-;;2336:7;2326;:17;;;;;;;;;;;;:::i;:::-;;2237:113;;438:87:11;;344:2581;;640:96:5;693:7;719:10;712:17;;640:96;:::o;2426:187:0:-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;344:2581:11:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:13:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:853::-;2824:6;2832;2881:2;2869:9;2860:7;2856:23;2852:32;2849:119;;;2887:79;;:::i;:::-;2849:119;3028:1;3017:9;3013:17;3007:24;3058:18;3050:6;3047:30;3044:117;;;3080:79;;:::i;:::-;3044:117;3185:74;3251:7;3242:6;3231:9;3227:22;3185:74;:::i;:::-;3175:84;;2978:291;3329:2;3318:9;3314:18;3308:25;3360:18;3352:6;3349:30;3346:117;;;3382:79;;:::i;:::-;3346:117;3487:74;3553:7;3544:6;3533:9;3529:22;3487:74;:::i;:::-;3477:84;;3279:292;2725:853;;;;;:::o;3584:180::-;3632:77;3629:1;3622:88;3729:4;3726:1;3719:15;3753:4;3750:1;3743:15;3770:320;3814:6;3851:1;3845:4;3841:12;3831:22;;3898:1;3892:4;3888:12;3919:18;3909:81;;3975:4;3967:6;3963:17;3953:27;;3909:81;4037:2;4029:6;4026:14;4006:18;4003:38;4000:84;;4056:18;;:::i;:::-;4000:84;3821:269;3770:320;;;:::o;344:2581:11:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_3038":{"entryPoint":5967,"id":3038,"parameterSlots":3,"returnSlots":0},"@_approve_2906":{"entryPoint":3081,"id":2906,"parameterSlots":2,"returnSlots":0},"@_baseURI_2388":{"entryPoint":5625,"id":2388,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_3027":{"entryPoint":5962,"id":3027,"parameterSlots":3,"returnSlots":0},"@_checkOnERC721Received_3016":{"entryPoint":5972,"id":3016,"parameterSlots":4,"returnSlots":1},"@_checkOwner_54":{"entryPoint":4847,"id":54,"parameterSlots":0,"returnSlots":0},"@_exists_2606":{"entryPoint":5854,"id":2606,"parameterSlots":1,"returnSlots":1},"@_hasOwnToken_2151":{"entryPoint":4635,"id":2151,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_2639":{"entryPoint":3617,"id":2639,"parameterSlots":2,"returnSlots":1},"@_isTokenActive_2170":{"entryPoint":4484,"id":2170,"parameterSlots":1,"returnSlots":1},"@_mint_2026":{"entryPoint":3266,"id":2026,"parameterSlots":1,"returnSlots":0},"@_msgSender_615":{"entryPoint":3073,"id":615,"parameterSlots":0,"returnSlots":1},"@_requireMinted_2952":{"entryPoint":2998,"id":2952,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_2588":{"entryPoint":5533,"id":2588,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_2938":{"entryPoint":5169,"id":2938,"parameterSlots":3,"returnSlots":0},"@_transferOwnership_111":{"entryPoint":4973,"id":111,"parameterSlots":1,"returnSlots":0},"@_transfer_2110":{"entryPoint":3766,"id":2110,"parameterSlots":3,"returnSlots":0},"@approve_2430":{"entryPoint":1280,"id":2430,"parameterSlots":2,"returnSlots":0},"@balanceOf_1925":{"entryPoint":1900,"id":1925,"parameterSlots":1,"returnSlots":1},"@getApproved_2448":{"entryPoint":1210,"id":2448,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_2483":{"entryPoint":2613,"id":2483,"parameterSlots":2,"returnSlots":1},"@log10_1593":{"entryPoint":6358,"id":1593,"parameterSlots":1,"returnSlots":1},"@mint_1977":{"entryPoint":1559,"id":1977,"parameterSlots":0,"returnSlots":0},"@name_2330":{"entryPoint":1064,"id":2330,"parameterSlots":0,"returnSlots":1},"@ownerOf_1968":{"entryPoint":1705,"id":1968,"parameterSlots":1,"returnSlots":1},"@owner_40":{"entryPoint":2202,"id":40,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_68":{"entryPoint":2182,"id":68,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_2529":{"entryPoint":1673,"id":2529,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_2559":{"entryPoint":2411,"id":2559,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_2465":{"entryPoint":2389,"id":2465,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2268":{"entryPoint":838,"id":2268,"parameterSlots":1,"returnSlots":1},"@supportsInterface_877":{"entryPoint":2892,"id":877,"parameterSlots":1,"returnSlots":1},"@symbol_2340":{"entryPoint":2243,"id":2340,"parameterSlots":0,"returnSlots":1},"@toString_684":{"entryPoint":5648,"id":684,"parameterSlots":1,"returnSlots":1},"@tokenURI_2379":{"entryPoint":2509,"id":2379,"parameterSlots":1,"returnSlots":1},"@transferFrom_2510":{"entryPoint":1577,"id":2510,"parameterSlots":3,"returnSlots":0},"@transferOwnership_91":{"entryPoint":2761,"id":91,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_bytes_memory_ptr":{"entryPoint":7865,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":7305,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":7583,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4":{"entryPoint":6784,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4_fromMemory":{"entryPoint":10465,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr":{"entryPoint":7931,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":7124,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":7473,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":8108,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":7390,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":7977,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":7604,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":7326,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":6805,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":10486,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":7145,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":7240,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":6862,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":10332,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":7000,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":8971,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack":{"entryPoint":10190,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack":{"entryPoint":9135,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack":{"entryPoint":9497,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack":{"entryPoint":9351,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack":{"entryPoint":9643,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack":{"entryPoint":10044,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack":{"entryPoint":8893,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack":{"entryPoint":8493,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack":{"entryPoint":9243,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack":{"entryPoint":9936,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack":{"entryPoint":8747,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack":{"entryPoint":8347,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack":{"entryPoint":8639,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":7518,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":9020,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":7255,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":10389,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":6877,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7057,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10225,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9170,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9532,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9386,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9678,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10079,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8928,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8528,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9278,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9971,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8782,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8382,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8674,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":7533,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":7774,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":6697,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":7801,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":10304,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":6904,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":10315,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":6915,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":8960,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":9809,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":9757,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":7222,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":6850,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":6717,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":7190,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":7091,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory":{"entryPoint":7850,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory":{"entryPoint":6932,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":8219,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":7725,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":9710,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":10257,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":8172,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":7678,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":7668,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":7673,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":6712,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":6707,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":6983,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e":{"entryPoint":10111,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe":{"entryPoint":9056,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48":{"entryPoint":9418,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57":{"entryPoint":9310,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4":{"entryPoint":9564,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05":{"entryPoint":10003,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159":{"entryPoint":8814,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304":{"entryPoint":8414,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6":{"entryPoint":9202,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe":{"entryPoint":9895,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f":{"entryPoint":8706,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942":{"entryPoint":8268,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b":{"entryPoint":8560,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":7282,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":7560,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes4":{"entryPoint":6761,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":7101,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:27842:13","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:13","statements":[{"nodeType":"YulAssignment","src":"57:19:13","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:13","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:13"},"nodeType":"YulFunctionCall","src":"67:9:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:13"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:13","type":""}],"src":"7:75:13"},{"body":{"nodeType":"YulBlock","src":"177:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:13"},"nodeType":"YulFunctionCall","src":"187:12:13"},"nodeType":"YulExpressionStatement","src":"187:12:13"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:13"},{"body":{"nodeType":"YulBlock","src":"300:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:13"},"nodeType":"YulFunctionCall","src":"310:12:13"},"nodeType":"YulExpressionStatement","src":"310:12:13"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:13"},{"body":{"nodeType":"YulBlock","src":"378:105:13","statements":[{"nodeType":"YulAssignment","src":"388:89:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"410:66:13","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"399:3:13"},"nodeType":"YulFunctionCall","src":"399:78:13"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"388:7:13"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"360:5:13","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"370:7:13","type":""}],"src":"334:149:13"},{"body":{"nodeType":"YulBlock","src":"531:78:13","statements":[{"body":{"nodeType":"YulBlock","src":"587:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"596:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"599:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"589:6:13"},"nodeType":"YulFunctionCall","src":"589:12:13"},"nodeType":"YulExpressionStatement","src":"589:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"554:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"578:5:13"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"561:16:13"},"nodeType":"YulFunctionCall","src":"561:23:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"551:2:13"},"nodeType":"YulFunctionCall","src":"551:34:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"544:6:13"},"nodeType":"YulFunctionCall","src":"544:42:13"},"nodeType":"YulIf","src":"541:62:13"}]},"name":"validator_revert_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"524:5:13","type":""}],"src":"489:120:13"},{"body":{"nodeType":"YulBlock","src":"666:86:13","statements":[{"nodeType":"YulAssignment","src":"676:29:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"698:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:13"},"nodeType":"YulFunctionCall","src":"685:20:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"676:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"740:5:13"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"714:25:13"},"nodeType":"YulFunctionCall","src":"714:32:13"},"nodeType":"YulExpressionStatement","src":"714:32:13"}]},"name":"abi_decode_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"644:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"652:3:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"660:5:13","type":""}],"src":"615:137:13"},{"body":{"nodeType":"YulBlock","src":"823:262:13","statements":[{"body":{"nodeType":"YulBlock","src":"869:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"871:77:13"},"nodeType":"YulFunctionCall","src":"871:79:13"},"nodeType":"YulExpressionStatement","src":"871:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"844:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"853:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"840:3:13"},"nodeType":"YulFunctionCall","src":"840:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"865:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"836:3:13"},"nodeType":"YulFunctionCall","src":"836:32:13"},"nodeType":"YulIf","src":"833:119:13"},{"nodeType":"YulBlock","src":"962:116:13","statements":[{"nodeType":"YulVariableDeclaration","src":"977:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"991:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"981:6:13","type":""}]},{"nodeType":"YulAssignment","src":"1006:62:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1040:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"1051:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1036:3:13"},"nodeType":"YulFunctionCall","src":"1036:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1060:7:13"}],"functionName":{"name":"abi_decode_t_bytes4","nodeType":"YulIdentifier","src":"1016:19:13"},"nodeType":"YulFunctionCall","src":"1016:52:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1006:6:13"}]}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"793:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"804:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"816:6:13","type":""}],"src":"758:327:13"},{"body":{"nodeType":"YulBlock","src":"1133:48:13","statements":[{"nodeType":"YulAssignment","src":"1143:32:13","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1161:6:13"},"nodeType":"YulFunctionCall","src":"1161:13:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1154:6:13"},"nodeType":"YulFunctionCall","src":"1154:21:13"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1143:7:13"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1115:5:13","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1125:7:13","type":""}],"src":"1091:90:13"},{"body":{"nodeType":"YulBlock","src":"1246:50:13","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1283:5:13"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"1268:14:13"},"nodeType":"YulFunctionCall","src":"1268:21:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1256:6:13"},"nodeType":"YulFunctionCall","src":"1256:34:13"},"nodeType":"YulExpressionStatement","src":"1256:34:13"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1234:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1241:3:13","type":""}],"src":"1187:109:13"},{"body":{"nodeType":"YulBlock","src":"1394:118:13","statements":[{"nodeType":"YulAssignment","src":"1404:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:13"},"nodeType":"YulFunctionCall","src":"1412:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1404:4:13"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1478:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1491:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1502:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1487:3:13"},"nodeType":"YulFunctionCall","src":"1487:17:13"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"1440:37:13"},"nodeType":"YulFunctionCall","src":"1440:65:13"},"nodeType":"YulExpressionStatement","src":"1440:65:13"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1366:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1378:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1389:4:13","type":""}],"src":"1302:210:13"},{"body":{"nodeType":"YulBlock","src":"1577:40:13","statements":[{"nodeType":"YulAssignment","src":"1588:22:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1604:5:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1598:5:13"},"nodeType":"YulFunctionCall","src":"1598:12:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1588:6:13"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1560:5:13","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1570:6:13","type":""}],"src":"1518:99:13"},{"body":{"nodeType":"YulBlock","src":"1719:73:13","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1736:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"1741:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1729:6:13"},"nodeType":"YulFunctionCall","src":"1729:19:13"},"nodeType":"YulExpressionStatement","src":"1729:19:13"},{"nodeType":"YulAssignment","src":"1757:29:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1776:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"1781:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1772:3:13"},"nodeType":"YulFunctionCall","src":"1772:14:13"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1757:11:13"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1691:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"1696:6:13","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1707:11:13","type":""}],"src":"1623:169:13"},{"body":{"nodeType":"YulBlock","src":"1847:258:13","statements":[{"nodeType":"YulVariableDeclaration","src":"1857:10:13","value":{"kind":"number","nodeType":"YulLiteral","src":"1866:1:13","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1861:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1926:63:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1951:3:13"},{"name":"i","nodeType":"YulIdentifier","src":"1956:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1947:3:13"},"nodeType":"YulFunctionCall","src":"1947:11:13"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1970:3:13"},{"name":"i","nodeType":"YulIdentifier","src":"1975:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:13"},"nodeType":"YulFunctionCall","src":"1966:11:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1960:5:13"},"nodeType":"YulFunctionCall","src":"1960:18:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1940:6:13"},"nodeType":"YulFunctionCall","src":"1940:39:13"},"nodeType":"YulExpressionStatement","src":"1940:39:13"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1887:1:13"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1884:2:13"},"nodeType":"YulFunctionCall","src":"1884:13:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1898:19:13","statements":[{"nodeType":"YulAssignment","src":"1900:15:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1909:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"1912:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1905:3:13"},"nodeType":"YulFunctionCall","src":"1905:10:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1900:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"1880:3:13","statements":[]},"src":"1876:113:13"},{"body":{"nodeType":"YulBlock","src":"2023:76:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2073:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"2078:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2069:3:13"},"nodeType":"YulFunctionCall","src":"2069:16:13"},{"kind":"number","nodeType":"YulLiteral","src":"2087:1:13","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2062:6:13"},"nodeType":"YulFunctionCall","src":"2062:27:13"},"nodeType":"YulExpressionStatement","src":"2062:27:13"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2004:1:13"},{"name":"length","nodeType":"YulIdentifier","src":"2007:6:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2001:2:13"},"nodeType":"YulFunctionCall","src":"2001:13:13"},"nodeType":"YulIf","src":"1998:101:13"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1829:3:13","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1834:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"1839:6:13","type":""}],"src":"1798:307:13"},{"body":{"nodeType":"YulBlock","src":"2159:54:13","statements":[{"nodeType":"YulAssignment","src":"2169:38:13","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2187:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"2194:2:13","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2183:3:13"},"nodeType":"YulFunctionCall","src":"2183:14:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2203:2:13","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2199:3:13"},"nodeType":"YulFunctionCall","src":"2199:7:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2179:3:13"},"nodeType":"YulFunctionCall","src":"2179:28:13"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2169:6:13"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2142:5:13","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"2152:6:13","type":""}],"src":"2111:102:13"},{"body":{"nodeType":"YulBlock","src":"2311:272:13","statements":[{"nodeType":"YulVariableDeclaration","src":"2321:53:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2368:5:13"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2335:32:13"},"nodeType":"YulFunctionCall","src":"2335:39:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2325:6:13","type":""}]},{"nodeType":"YulAssignment","src":"2383:78:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2449:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"2454:6:13"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2390:58:13"},"nodeType":"YulFunctionCall","src":"2390:71:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2383:3:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2496:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"2503:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:13"},"nodeType":"YulFunctionCall","src":"2492:16:13"},{"name":"pos","nodeType":"YulIdentifier","src":"2510:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"2515:6:13"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2470:21:13"},"nodeType":"YulFunctionCall","src":"2470:52:13"},"nodeType":"YulExpressionStatement","src":"2470:52:13"},{"nodeType":"YulAssignment","src":"2531:46:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2542:3:13"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2569:6:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2547:21:13"},"nodeType":"YulFunctionCall","src":"2547:29:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2538:3:13"},"nodeType":"YulFunctionCall","src":"2538:39:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2531:3:13"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2292:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2299:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2307:3:13","type":""}],"src":"2219:364:13"},{"body":{"nodeType":"YulBlock","src":"2707:195:13","statements":[{"nodeType":"YulAssignment","src":"2717:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2729:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2740:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2725:3:13"},"nodeType":"YulFunctionCall","src":"2725:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2717:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2764:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2775:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2760:3:13"},"nodeType":"YulFunctionCall","src":"2760:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2783:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"2789:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2779:3:13"},"nodeType":"YulFunctionCall","src":"2779:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2753:6:13"},"nodeType":"YulFunctionCall","src":"2753:47:13"},"nodeType":"YulExpressionStatement","src":"2753:47:13"},{"nodeType":"YulAssignment","src":"2809:86:13","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2881:6:13"},{"name":"tail","nodeType":"YulIdentifier","src":"2890:4:13"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2817:63:13"},"nodeType":"YulFunctionCall","src":"2817:78:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2809:4:13"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2679:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2691:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2702:4:13","type":""}],"src":"2589:313:13"},{"body":{"nodeType":"YulBlock","src":"2953:32:13","statements":[{"nodeType":"YulAssignment","src":"2963:16:13","value":{"name":"value","nodeType":"YulIdentifier","src":"2974:5:13"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2963:7:13"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2935:5:13","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2945:7:13","type":""}],"src":"2908:77:13"},{"body":{"nodeType":"YulBlock","src":"3034:79:13","statements":[{"body":{"nodeType":"YulBlock","src":"3091:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3100:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3103:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3093:6:13"},"nodeType":"YulFunctionCall","src":"3093:12:13"},"nodeType":"YulExpressionStatement","src":"3093:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3057:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3082:5:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3064:17:13"},"nodeType":"YulFunctionCall","src":"3064:24:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3054:2:13"},"nodeType":"YulFunctionCall","src":"3054:35:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3047:6:13"},"nodeType":"YulFunctionCall","src":"3047:43:13"},"nodeType":"YulIf","src":"3044:63:13"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3027:5:13","type":""}],"src":"2991:122:13"},{"body":{"nodeType":"YulBlock","src":"3171:87:13","statements":[{"nodeType":"YulAssignment","src":"3181:29:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3203:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3190:12:13"},"nodeType":"YulFunctionCall","src":"3190:20:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3181:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3246:5:13"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"3219:26:13"},"nodeType":"YulFunctionCall","src":"3219:33:13"},"nodeType":"YulExpressionStatement","src":"3219:33:13"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3149:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"3157:3:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3165:5:13","type":""}],"src":"3119:139:13"},{"body":{"nodeType":"YulBlock","src":"3330:263:13","statements":[{"body":{"nodeType":"YulBlock","src":"3376:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3378:77:13"},"nodeType":"YulFunctionCall","src":"3378:79:13"},"nodeType":"YulExpressionStatement","src":"3378:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3351:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"3360:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3347:3:13"},"nodeType":"YulFunctionCall","src":"3347:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"3372:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3343:3:13"},"nodeType":"YulFunctionCall","src":"3343:32:13"},"nodeType":"YulIf","src":"3340:119:13"},{"nodeType":"YulBlock","src":"3469:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"3484:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"3498:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3488:6:13","type":""}]},{"nodeType":"YulAssignment","src":"3513:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"3559:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3544:3:13"},"nodeType":"YulFunctionCall","src":"3544:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3568:7:13"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3523:20:13"},"nodeType":"YulFunctionCall","src":"3523:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3513:6:13"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3300:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3311:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3323:6:13","type":""}],"src":"3264:329:13"},{"body":{"nodeType":"YulBlock","src":"3644:81:13","statements":[{"nodeType":"YulAssignment","src":"3654:65:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3669:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"3676:42:13","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3665:3:13"},"nodeType":"YulFunctionCall","src":"3665:54:13"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3654:7:13"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3626:5:13","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3636:7:13","type":""}],"src":"3599:126:13"},{"body":{"nodeType":"YulBlock","src":"3776:51:13","statements":[{"nodeType":"YulAssignment","src":"3786:35:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3815:5:13"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"3797:17:13"},"nodeType":"YulFunctionCall","src":"3797:24:13"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3786:7:13"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3758:5:13","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3768:7:13","type":""}],"src":"3731:96:13"},{"body":{"nodeType":"YulBlock","src":"3898:53:13","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3915:3:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3938:5:13"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"3920:17:13"},"nodeType":"YulFunctionCall","src":"3920:24:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3908:6:13"},"nodeType":"YulFunctionCall","src":"3908:37:13"},"nodeType":"YulExpressionStatement","src":"3908:37:13"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3886:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3893:3:13","type":""}],"src":"3833:118:13"},{"body":{"nodeType":"YulBlock","src":"4055:124:13","statements":[{"nodeType":"YulAssignment","src":"4065:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4077:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4088:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4073:3:13"},"nodeType":"YulFunctionCall","src":"4073:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4065:4:13"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4145:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4158:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4169:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4154:3:13"},"nodeType":"YulFunctionCall","src":"4154:17:13"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"4101:43:13"},"nodeType":"YulFunctionCall","src":"4101:71:13"},"nodeType":"YulExpressionStatement","src":"4101:71:13"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4027:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4039:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4050:4:13","type":""}],"src":"3957:222:13"},{"body":{"nodeType":"YulBlock","src":"4228:79:13","statements":[{"body":{"nodeType":"YulBlock","src":"4285:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4294:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4297:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4287:6:13"},"nodeType":"YulFunctionCall","src":"4287:12:13"},"nodeType":"YulExpressionStatement","src":"4287:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4251:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4276:5:13"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"4258:17:13"},"nodeType":"YulFunctionCall","src":"4258:24:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4248:2:13"},"nodeType":"YulFunctionCall","src":"4248:35:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4241:6:13"},"nodeType":"YulFunctionCall","src":"4241:43:13"},"nodeType":"YulIf","src":"4238:63:13"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4221:5:13","type":""}],"src":"4185:122:13"},{"body":{"nodeType":"YulBlock","src":"4365:87:13","statements":[{"nodeType":"YulAssignment","src":"4375:29:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4397:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4384:12:13"},"nodeType":"YulFunctionCall","src":"4384:20:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4375:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4440:5:13"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4413:26:13"},"nodeType":"YulFunctionCall","src":"4413:33:13"},"nodeType":"YulExpressionStatement","src":"4413:33:13"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4343:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"4351:3:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4359:5:13","type":""}],"src":"4313:139:13"},{"body":{"nodeType":"YulBlock","src":"4541:391:13","statements":[{"body":{"nodeType":"YulBlock","src":"4587:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4589:77:13"},"nodeType":"YulFunctionCall","src":"4589:79:13"},"nodeType":"YulExpressionStatement","src":"4589:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4562:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4558:3:13"},"nodeType":"YulFunctionCall","src":"4558:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"4583:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4554:3:13"},"nodeType":"YulFunctionCall","src":"4554:32:13"},"nodeType":"YulIf","src":"4551:119:13"},{"nodeType":"YulBlock","src":"4680:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"4695:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"4709:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4699:6:13","type":""}]},{"nodeType":"YulAssignment","src":"4724:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4759:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"4770:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4755:3:13"},"nodeType":"YulFunctionCall","src":"4755:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4779:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4734:20:13"},"nodeType":"YulFunctionCall","src":"4734:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4724:6:13"}]}]},{"nodeType":"YulBlock","src":"4807:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"4822:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"4836:2:13","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4826:6:13","type":""}]},{"nodeType":"YulAssignment","src":"4852:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"4898:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4883:3:13"},"nodeType":"YulFunctionCall","src":"4883:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4907:7:13"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4862:20:13"},"nodeType":"YulFunctionCall","src":"4862:53:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4852:6:13"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4503:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4514:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4526:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4534:6:13","type":""}],"src":"4458:474:13"},{"body":{"nodeType":"YulBlock","src":"5038:519:13","statements":[{"body":{"nodeType":"YulBlock","src":"5084:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5086:77:13"},"nodeType":"YulFunctionCall","src":"5086:79:13"},"nodeType":"YulExpressionStatement","src":"5086:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5059:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"5068:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5055:3:13"},"nodeType":"YulFunctionCall","src":"5055:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"5080:2:13","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5051:3:13"},"nodeType":"YulFunctionCall","src":"5051:32:13"},"nodeType":"YulIf","src":"5048:119:13"},{"nodeType":"YulBlock","src":"5177:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"5192:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"5206:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5196:6:13","type":""}]},{"nodeType":"YulAssignment","src":"5221:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5256:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"5267:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5252:3:13"},"nodeType":"YulFunctionCall","src":"5252:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5276:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5231:20:13"},"nodeType":"YulFunctionCall","src":"5231:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5221:6:13"}]}]},{"nodeType":"YulBlock","src":"5304:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"5319:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"5333:2:13","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5323:6:13","type":""}]},{"nodeType":"YulAssignment","src":"5349:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5384:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"5395:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5380:3:13"},"nodeType":"YulFunctionCall","src":"5380:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5404:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5359:20:13"},"nodeType":"YulFunctionCall","src":"5359:53:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5349:6:13"}]}]},{"nodeType":"YulBlock","src":"5432:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"5447:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"5461:2:13","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5451:6:13","type":""}]},{"nodeType":"YulAssignment","src":"5477:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5512:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"5523:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5508:3:13"},"nodeType":"YulFunctionCall","src":"5508:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5532:7:13"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5487:20:13"},"nodeType":"YulFunctionCall","src":"5487:53:13"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5477:6:13"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4992:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5003:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5015:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5023:6:13","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5031:6:13","type":""}],"src":"4938:619:13"},{"body":{"nodeType":"YulBlock","src":"5629:263:13","statements":[{"body":{"nodeType":"YulBlock","src":"5675:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5677:77:13"},"nodeType":"YulFunctionCall","src":"5677:79:13"},"nodeType":"YulExpressionStatement","src":"5677:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5650:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"5659:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5646:3:13"},"nodeType":"YulFunctionCall","src":"5646:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"5671:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5642:3:13"},"nodeType":"YulFunctionCall","src":"5642:32:13"},"nodeType":"YulIf","src":"5639:119:13"},{"nodeType":"YulBlock","src":"5768:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"5783:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"5797:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5787:6:13","type":""}]},{"nodeType":"YulAssignment","src":"5812:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5847:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"5858:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5843:3:13"},"nodeType":"YulFunctionCall","src":"5843:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5867:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5822:20:13"},"nodeType":"YulFunctionCall","src":"5822:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5812:6:13"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5599:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5610:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5622:6:13","type":""}],"src":"5563:329:13"},{"body":{"nodeType":"YulBlock","src":"5963:53:13","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5980:3:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6003:5:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5985:17:13"},"nodeType":"YulFunctionCall","src":"5985:24:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5973:6:13"},"nodeType":"YulFunctionCall","src":"5973:37:13"},"nodeType":"YulExpressionStatement","src":"5973:37:13"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5951:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5958:3:13","type":""}],"src":"5898:118:13"},{"body":{"nodeType":"YulBlock","src":"6120:124:13","statements":[{"nodeType":"YulAssignment","src":"6130:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6142:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6153:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6138:3:13"},"nodeType":"YulFunctionCall","src":"6138:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6130:4:13"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6210:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6223:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6234:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6219:3:13"},"nodeType":"YulFunctionCall","src":"6219:17:13"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6166:43:13"},"nodeType":"YulFunctionCall","src":"6166:71:13"},"nodeType":"YulExpressionStatement","src":"6166:71:13"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6092:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6104:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6115:4:13","type":""}],"src":"6022:222:13"},{"body":{"nodeType":"YulBlock","src":"6290:76:13","statements":[{"body":{"nodeType":"YulBlock","src":"6344:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6353:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6356:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6346:6:13"},"nodeType":"YulFunctionCall","src":"6346:12:13"},"nodeType":"YulExpressionStatement","src":"6346:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6313:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6335:5:13"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6320:14:13"},"nodeType":"YulFunctionCall","src":"6320:21:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6310:2:13"},"nodeType":"YulFunctionCall","src":"6310:32:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6303:6:13"},"nodeType":"YulFunctionCall","src":"6303:40:13"},"nodeType":"YulIf","src":"6300:60:13"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6283:5:13","type":""}],"src":"6250:116:13"},{"body":{"nodeType":"YulBlock","src":"6421:84:13","statements":[{"nodeType":"YulAssignment","src":"6431:29:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6453:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6440:12:13"},"nodeType":"YulFunctionCall","src":"6440:20:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6431:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6493:5:13"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6469:23:13"},"nodeType":"YulFunctionCall","src":"6469:30:13"},"nodeType":"YulExpressionStatement","src":"6469:30:13"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6399:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"6407:3:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6415:5:13","type":""}],"src":"6372:133:13"},{"body":{"nodeType":"YulBlock","src":"6591:388:13","statements":[{"body":{"nodeType":"YulBlock","src":"6637:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6639:77:13"},"nodeType":"YulFunctionCall","src":"6639:79:13"},"nodeType":"YulExpressionStatement","src":"6639:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6612:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"6621:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6608:3:13"},"nodeType":"YulFunctionCall","src":"6608:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"6633:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6604:3:13"},"nodeType":"YulFunctionCall","src":"6604:32:13"},"nodeType":"YulIf","src":"6601:119:13"},{"nodeType":"YulBlock","src":"6730:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"6745:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"6759:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6749:6:13","type":""}]},{"nodeType":"YulAssignment","src":"6774:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6809:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"6820:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6805:3:13"},"nodeType":"YulFunctionCall","src":"6805:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6829:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6784:20:13"},"nodeType":"YulFunctionCall","src":"6784:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6774:6:13"}]}]},{"nodeType":"YulBlock","src":"6857:115:13","statements":[{"nodeType":"YulVariableDeclaration","src":"6872:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"6886:2:13","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6876:6:13","type":""}]},{"nodeType":"YulAssignment","src":"6902:60:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6934:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"6945:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6930:3:13"},"nodeType":"YulFunctionCall","src":"6930:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6954:7:13"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"6912:17:13"},"nodeType":"YulFunctionCall","src":"6912:50:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6902:6:13"}]}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6553:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6564:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6576:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6584:6:13","type":""}],"src":"6511:468:13"},{"body":{"nodeType":"YulBlock","src":"7074:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7091:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7094:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7084:6:13"},"nodeType":"YulFunctionCall","src":"7084:12:13"},"nodeType":"YulExpressionStatement","src":"7084:12:13"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"6985:117:13"},{"body":{"nodeType":"YulBlock","src":"7197:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7214:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7217:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7207:6:13"},"nodeType":"YulFunctionCall","src":"7207:12:13"},"nodeType":"YulExpressionStatement","src":"7207:12:13"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"7108:117:13"},{"body":{"nodeType":"YulBlock","src":"7259:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7276:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7279:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7269:6:13"},"nodeType":"YulFunctionCall","src":"7269:88:13"},"nodeType":"YulExpressionStatement","src":"7269:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7373:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7376:4:13","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7366:6:13"},"nodeType":"YulFunctionCall","src":"7366:15:13"},"nodeType":"YulExpressionStatement","src":"7366:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7397:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7400:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7390:6:13"},"nodeType":"YulFunctionCall","src":"7390:15:13"},"nodeType":"YulExpressionStatement","src":"7390:15:13"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7231:180:13"},{"body":{"nodeType":"YulBlock","src":"7460:238:13","statements":[{"nodeType":"YulVariableDeclaration","src":"7470:58:13","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7492:6:13"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7522:4:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7500:21:13"},"nodeType":"YulFunctionCall","src":"7500:27:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7488:3:13"},"nodeType":"YulFunctionCall","src":"7488:40:13"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7474:10:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"7639:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7641:16:13"},"nodeType":"YulFunctionCall","src":"7641:18:13"},"nodeType":"YulExpressionStatement","src":"7641:18:13"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7582:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"7594:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7579:2:13"},"nodeType":"YulFunctionCall","src":"7579:34:13"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7618:10:13"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7630:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7615:2:13"},"nodeType":"YulFunctionCall","src":"7615:22:13"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7576:2:13"},"nodeType":"YulFunctionCall","src":"7576:62:13"},"nodeType":"YulIf","src":"7573:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7677:2:13","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7681:10:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7670:6:13"},"nodeType":"YulFunctionCall","src":"7670:22:13"},"nodeType":"YulExpressionStatement","src":"7670:22:13"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7446:6:13","type":""},{"name":"size","nodeType":"YulTypedName","src":"7454:4:13","type":""}],"src":"7417:281:13"},{"body":{"nodeType":"YulBlock","src":"7745:88:13","statements":[{"nodeType":"YulAssignment","src":"7755:30:13","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7765:18:13"},"nodeType":"YulFunctionCall","src":"7765:20:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7755:6:13"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7814:6:13"},{"name":"size","nodeType":"YulIdentifier","src":"7822:4:13"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7794:19:13"},"nodeType":"YulFunctionCall","src":"7794:33:13"},"nodeType":"YulExpressionStatement","src":"7794:33:13"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7729:4:13","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7738:6:13","type":""}],"src":"7704:129:13"},{"body":{"nodeType":"YulBlock","src":"7905:241:13","statements":[{"body":{"nodeType":"YulBlock","src":"8010:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"8012:16:13"},"nodeType":"YulFunctionCall","src":"8012:18:13"},"nodeType":"YulExpressionStatement","src":"8012:18:13"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7982:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"7990:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7979:2:13"},"nodeType":"YulFunctionCall","src":"7979:30:13"},"nodeType":"YulIf","src":"7976:56:13"},{"nodeType":"YulAssignment","src":"8042:37:13","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8072:6:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8050:21:13"},"nodeType":"YulFunctionCall","src":"8050:29:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8042:4:13"}]},{"nodeType":"YulAssignment","src":"8116:23:13","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"8128:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"8134:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8124:3:13"},"nodeType":"YulFunctionCall","src":"8124:15:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8116:4:13"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7889:6:13","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7900:4:13","type":""}],"src":"7839:307:13"},{"body":{"nodeType":"YulBlock","src":"8203:103:13","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8226:3:13"},{"name":"src","nodeType":"YulIdentifier","src":"8231:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"8236:6:13"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8213:12:13"},"nodeType":"YulFunctionCall","src":"8213:30:13"},"nodeType":"YulExpressionStatement","src":"8213:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8284:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"8289:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8280:3:13"},"nodeType":"YulFunctionCall","src":"8280:16:13"},{"kind":"number","nodeType":"YulLiteral","src":"8298:1:13","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8273:6:13"},"nodeType":"YulFunctionCall","src":"8273:27:13"},"nodeType":"YulExpressionStatement","src":"8273:27:13"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8185:3:13","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8190:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"8195:6:13","type":""}],"src":"8152:154:13"},{"body":{"nodeType":"YulBlock","src":"8395:327:13","statements":[{"nodeType":"YulAssignment","src":"8405:74:13","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8471:6:13"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8430:40:13"},"nodeType":"YulFunctionCall","src":"8430:48:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8414:15:13"},"nodeType":"YulFunctionCall","src":"8414:65:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8405:5:13"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8495:5:13"},{"name":"length","nodeType":"YulIdentifier","src":"8502:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8488:6:13"},"nodeType":"YulFunctionCall","src":"8488:21:13"},"nodeType":"YulExpressionStatement","src":"8488:21:13"},{"nodeType":"YulVariableDeclaration","src":"8518:27:13","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8533:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"8540:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8529:3:13"},"nodeType":"YulFunctionCall","src":"8529:16:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8522:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"8583:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"8585:77:13"},"nodeType":"YulFunctionCall","src":"8585:79:13"},"nodeType":"YulExpressionStatement","src":"8585:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8564:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"8569:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8560:3:13"},"nodeType":"YulFunctionCall","src":"8560:16:13"},{"name":"end","nodeType":"YulIdentifier","src":"8578:3:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8557:2:13"},"nodeType":"YulFunctionCall","src":"8557:25:13"},"nodeType":"YulIf","src":"8554:112:13"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8699:3:13"},{"name":"dst","nodeType":"YulIdentifier","src":"8704:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"8709:6:13"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"8675:23:13"},"nodeType":"YulFunctionCall","src":"8675:41:13"},"nodeType":"YulExpressionStatement","src":"8675:41:13"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8368:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"8373:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"8381:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8389:5:13","type":""}],"src":"8312:410:13"},{"body":{"nodeType":"YulBlock","src":"8802:277:13","statements":[{"body":{"nodeType":"YulBlock","src":"8851:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"8853:77:13"},"nodeType":"YulFunctionCall","src":"8853:79:13"},"nodeType":"YulExpressionStatement","src":"8853:79:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8830:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"8838:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8826:3:13"},"nodeType":"YulFunctionCall","src":"8826:17:13"},{"name":"end","nodeType":"YulIdentifier","src":"8845:3:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8822:3:13"},"nodeType":"YulFunctionCall","src":"8822:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8815:6:13"},"nodeType":"YulFunctionCall","src":"8815:35:13"},"nodeType":"YulIf","src":"8812:122:13"},{"nodeType":"YulVariableDeclaration","src":"8943:34:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8970:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8957:12:13"},"nodeType":"YulFunctionCall","src":"8957:20:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8947:6:13","type":""}]},{"nodeType":"YulAssignment","src":"8986:87:13","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9046:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"9054:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9042:3:13"},"nodeType":"YulFunctionCall","src":"9042:17:13"},{"name":"length","nodeType":"YulIdentifier","src":"9061:6:13"},{"name":"end","nodeType":"YulIdentifier","src":"9069:3:13"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8995:46:13"},"nodeType":"YulFunctionCall","src":"8995:78:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8986:5:13"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8780:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"8788:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8796:5:13","type":""}],"src":"8741:338:13"},{"body":{"nodeType":"YulBlock","src":"9211:817:13","statements":[{"body":{"nodeType":"YulBlock","src":"9258:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9260:77:13"},"nodeType":"YulFunctionCall","src":"9260:79:13"},"nodeType":"YulExpressionStatement","src":"9260:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9232:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"9241:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9228:3:13"},"nodeType":"YulFunctionCall","src":"9228:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"9253:3:13","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9224:3:13"},"nodeType":"YulFunctionCall","src":"9224:33:13"},"nodeType":"YulIf","src":"9221:120:13"},{"nodeType":"YulBlock","src":"9351:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"9366:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"9380:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9370:6:13","type":""}]},{"nodeType":"YulAssignment","src":"9395:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9430:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"9441:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9426:3:13"},"nodeType":"YulFunctionCall","src":"9426:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9450:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9405:20:13"},"nodeType":"YulFunctionCall","src":"9405:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9395:6:13"}]}]},{"nodeType":"YulBlock","src":"9478:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"9493:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"9507:2:13","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9497:6:13","type":""}]},{"nodeType":"YulAssignment","src":"9523:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9558:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"9569:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9554:3:13"},"nodeType":"YulFunctionCall","src":"9554:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9578:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9533:20:13"},"nodeType":"YulFunctionCall","src":"9533:53:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9523:6:13"}]}]},{"nodeType":"YulBlock","src":"9606:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"9621:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"9635:2:13","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9625:6:13","type":""}]},{"nodeType":"YulAssignment","src":"9651:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9686:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"9697:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9682:3:13"},"nodeType":"YulFunctionCall","src":"9682:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9706:7:13"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"9661:20:13"},"nodeType":"YulFunctionCall","src":"9661:53:13"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9651:6:13"}]}]},{"nodeType":"YulBlock","src":"9734:287:13","statements":[{"nodeType":"YulVariableDeclaration","src":"9749:46:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9780:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"9791:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9776:3:13"},"nodeType":"YulFunctionCall","src":"9776:18:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9763:12:13"},"nodeType":"YulFunctionCall","src":"9763:32:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9753:6:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"9842:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9844:77:13"},"nodeType":"YulFunctionCall","src":"9844:79:13"},"nodeType":"YulExpressionStatement","src":"9844:79:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9814:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"9822:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9811:2:13"},"nodeType":"YulFunctionCall","src":"9811:30:13"},"nodeType":"YulIf","src":"9808:117:13"},{"nodeType":"YulAssignment","src":"9939:72:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9983:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"9994:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:13"},"nodeType":"YulFunctionCall","src":"9979:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10003:7:13"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"9949:29:13"},"nodeType":"YulFunctionCall","src":"9949:62:13"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9939:6:13"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9157:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9168:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9180:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9188:6:13","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9196:6:13","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9204:6:13","type":""}],"src":"9085:943:13"},{"body":{"nodeType":"YulBlock","src":"10117:391:13","statements":[{"body":{"nodeType":"YulBlock","src":"10163:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10165:77:13"},"nodeType":"YulFunctionCall","src":"10165:79:13"},"nodeType":"YulExpressionStatement","src":"10165:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10138:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"10147:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10134:3:13"},"nodeType":"YulFunctionCall","src":"10134:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"10159:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10130:3:13"},"nodeType":"YulFunctionCall","src":"10130:32:13"},"nodeType":"YulIf","src":"10127:119:13"},{"nodeType":"YulBlock","src":"10256:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"10271:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"10285:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10275:6:13","type":""}]},{"nodeType":"YulAssignment","src":"10300:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10335:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"10346:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10331:3:13"},"nodeType":"YulFunctionCall","src":"10331:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10355:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10310:20:13"},"nodeType":"YulFunctionCall","src":"10310:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10300:6:13"}]}]},{"nodeType":"YulBlock","src":"10383:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"10398:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"10412:2:13","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10402:6:13","type":""}]},{"nodeType":"YulAssignment","src":"10428:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10463:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"10474:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10459:3:13"},"nodeType":"YulFunctionCall","src":"10459:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10483:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10438:20:13"},"nodeType":"YulFunctionCall","src":"10438:53:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10428:6:13"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10079:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10090:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10102:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10110:6:13","type":""}],"src":"10034:474:13"},{"body":{"nodeType":"YulBlock","src":"10542:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10559:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10562:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10552:6:13"},"nodeType":"YulFunctionCall","src":"10552:88:13"},"nodeType":"YulExpressionStatement","src":"10552:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10656:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10659:4:13","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10649:6:13"},"nodeType":"YulFunctionCall","src":"10649:15:13"},"nodeType":"YulExpressionStatement","src":"10649:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10680:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10683:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10673:6:13"},"nodeType":"YulFunctionCall","src":"10673:15:13"},"nodeType":"YulExpressionStatement","src":"10673:15:13"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"10514:180:13"},{"body":{"nodeType":"YulBlock","src":"10751:269:13","statements":[{"nodeType":"YulAssignment","src":"10761:22:13","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10775:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"10781:1:13","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10771:3:13"},"nodeType":"YulFunctionCall","src":"10771:12:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10761:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"10792:38:13","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10822:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"10828:1:13","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10818:3:13"},"nodeType":"YulFunctionCall","src":"10818:12:13"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"10796:18:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"10869:51:13","statements":[{"nodeType":"YulAssignment","src":"10883:27:13","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10897:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"10905:4:13","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10893:3:13"},"nodeType":"YulFunctionCall","src":"10893:17:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10883:6:13"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10849:18:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10842:6:13"},"nodeType":"YulFunctionCall","src":"10842:26:13"},"nodeType":"YulIf","src":"10839:81:13"},{"body":{"nodeType":"YulBlock","src":"10972:42:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"10986:16:13"},"nodeType":"YulFunctionCall","src":"10986:18:13"},"nodeType":"YulExpressionStatement","src":"10986:18:13"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10936:18:13"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10959:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"10967:2:13","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10956:2:13"},"nodeType":"YulFunctionCall","src":"10956:14:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10933:2:13"},"nodeType":"YulFunctionCall","src":"10933:38:13"},"nodeType":"YulIf","src":"10930:84:13"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"10735:4:13","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"10744:6:13","type":""}],"src":"10700:320:13"},{"body":{"nodeType":"YulBlock","src":"11132:114:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11154:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"11162:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11150:3:13"},"nodeType":"YulFunctionCall","src":"11150:14:13"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"11166:34:13","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11143:6:13"},"nodeType":"YulFunctionCall","src":"11143:58:13"},"nodeType":"YulExpressionStatement","src":"11143:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11222:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"11230:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11218:3:13"},"nodeType":"YulFunctionCall","src":"11218:15:13"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"11235:3:13","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11211:6:13"},"nodeType":"YulFunctionCall","src":"11211:28:13"},"nodeType":"YulExpressionStatement","src":"11211:28:13"}]},"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11124:6:13","type":""}],"src":"11026:220:13"},{"body":{"nodeType":"YulBlock","src":"11398:220:13","statements":[{"nodeType":"YulAssignment","src":"11408:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11474:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"11479:2:13","type":"","value":"33"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11415:58:13"},"nodeType":"YulFunctionCall","src":"11415:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11408:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11580:3:13"}],"functionName":{"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulIdentifier","src":"11491:88:13"},"nodeType":"YulFunctionCall","src":"11491:93:13"},"nodeType":"YulExpressionStatement","src":"11491:93:13"},{"nodeType":"YulAssignment","src":"11593:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11604:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"11609:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11600:3:13"},"nodeType":"YulFunctionCall","src":"11600:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11593:3:13"}]}]},"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11386:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11394:3:13","type":""}],"src":"11252:366:13"},{"body":{"nodeType":"YulBlock","src":"11795:248:13","statements":[{"nodeType":"YulAssignment","src":"11805:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11817:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"11828:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11813:3:13"},"nodeType":"YulFunctionCall","src":"11813:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11805:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11852:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"11863:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11848:3:13"},"nodeType":"YulFunctionCall","src":"11848:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11871:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"11877:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11867:3:13"},"nodeType":"YulFunctionCall","src":"11867:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11841:6:13"},"nodeType":"YulFunctionCall","src":"11841:47:13"},"nodeType":"YulExpressionStatement","src":"11841:47:13"},{"nodeType":"YulAssignment","src":"11897:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12031:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11905:124:13"},"nodeType":"YulFunctionCall","src":"11905:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11897:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11775:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11790:4:13","type":""}],"src":"11624:419:13"},{"body":{"nodeType":"YulBlock","src":"12155:143:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12177:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"12185:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12173:3:13"},"nodeType":"YulFunctionCall","src":"12173:14:13"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"12189:34:13","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12166:6:13"},"nodeType":"YulFunctionCall","src":"12166:58:13"},"nodeType":"YulExpressionStatement","src":"12166:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12245:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"12253:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12241:3:13"},"nodeType":"YulFunctionCall","src":"12241:15:13"},{"hexValue":"6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"12258:32:13","type":"","value":"ken owner nor approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12234:6:13"},"nodeType":"YulFunctionCall","src":"12234:57:13"},"nodeType":"YulExpressionStatement","src":"12234:57:13"}]},"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12147:6:13","type":""}],"src":"12049:249:13"},{"body":{"nodeType":"YulBlock","src":"12450:220:13","statements":[{"nodeType":"YulAssignment","src":"12460:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12526:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"12531:2:13","type":"","value":"62"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12467:58:13"},"nodeType":"YulFunctionCall","src":"12467:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12460:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12632:3:13"}],"functionName":{"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulIdentifier","src":"12543:88:13"},"nodeType":"YulFunctionCall","src":"12543:93:13"},"nodeType":"YulExpressionStatement","src":"12543:93:13"},{"nodeType":"YulAssignment","src":"12645:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12656:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"12661:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12652:3:13"},"nodeType":"YulFunctionCall","src":"12652:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12645:3:13"}]}]},"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12438:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12446:3:13","type":""}],"src":"12304:366:13"},{"body":{"nodeType":"YulBlock","src":"12847:248:13","statements":[{"nodeType":"YulAssignment","src":"12857:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12869:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"12880:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12865:3:13"},"nodeType":"YulFunctionCall","src":"12865:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12857:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12904:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"12915:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12900:3:13"},"nodeType":"YulFunctionCall","src":"12900:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12923:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"12929:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12919:3:13"},"nodeType":"YulFunctionCall","src":"12919:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12893:6:13"},"nodeType":"YulFunctionCall","src":"12893:47:13"},"nodeType":"YulExpressionStatement","src":"12893:47:13"},{"nodeType":"YulAssignment","src":"12949:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13083:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12957:124:13"},"nodeType":"YulFunctionCall","src":"12957:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12949:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12827:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12842:4:13","type":""}],"src":"12676:419:13"},{"body":{"nodeType":"YulBlock","src":"13207:127:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13229:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"13237:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13225:3:13"},"nodeType":"YulFunctionCall","src":"13225:14:13"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"13241:34:13","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13218:6:13"},"nodeType":"YulFunctionCall","src":"13218:58:13"},"nodeType":"YulExpressionStatement","src":"13218:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13297:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"13305:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13293:3:13"},"nodeType":"YulFunctionCall","src":"13293:15:13"},{"hexValue":"72206e6f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"13310:16:13","type":"","value":"r nor approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13286:6:13"},"nodeType":"YulFunctionCall","src":"13286:41:13"},"nodeType":"YulExpressionStatement","src":"13286:41:13"}]},"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"13199:6:13","type":""}],"src":"13101:233:13"},{"body":{"nodeType":"YulBlock","src":"13486:220:13","statements":[{"nodeType":"YulAssignment","src":"13496:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13562:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"13567:2:13","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13503:58:13"},"nodeType":"YulFunctionCall","src":"13503:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13496:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13668:3:13"}],"functionName":{"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulIdentifier","src":"13579:88:13"},"nodeType":"YulFunctionCall","src":"13579:93:13"},"nodeType":"YulExpressionStatement","src":"13579:93:13"},{"nodeType":"YulAssignment","src":"13681:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13692:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"13697:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13688:3:13"},"nodeType":"YulFunctionCall","src":"13688:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13681:3:13"}]}]},"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13474:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13482:3:13","type":""}],"src":"13340:366:13"},{"body":{"nodeType":"YulBlock","src":"13883:248:13","statements":[{"nodeType":"YulAssignment","src":"13893:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13905:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"13916:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13901:3:13"},"nodeType":"YulFunctionCall","src":"13901:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13893:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13940:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"13951:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13936:3:13"},"nodeType":"YulFunctionCall","src":"13936:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13959:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"13965:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13955:3:13"},"nodeType":"YulFunctionCall","src":"13955:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13929:6:13"},"nodeType":"YulFunctionCall","src":"13929:47:13"},"nodeType":"YulExpressionStatement","src":"13929:47:13"},{"nodeType":"YulAssignment","src":"13985:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14119:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13993:124:13"},"nodeType":"YulFunctionCall","src":"13993:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13985:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13863:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13878:4:13","type":""}],"src":"13712:419:13"},{"body":{"nodeType":"YulBlock","src":"14243:68:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14265:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"14273:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14261:3:13"},"nodeType":"YulFunctionCall","src":"14261:14:13"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"14277:26:13","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14254:6:13"},"nodeType":"YulFunctionCall","src":"14254:50:13"},"nodeType":"YulExpressionStatement","src":"14254:50:13"}]},"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14235:6:13","type":""}],"src":"14137:174:13"},{"body":{"nodeType":"YulBlock","src":"14463:220:13","statements":[{"nodeType":"YulAssignment","src":"14473:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14539:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"14544:2:13","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14480:58:13"},"nodeType":"YulFunctionCall","src":"14480:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14473:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14645:3:13"}],"functionName":{"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulIdentifier","src":"14556:88:13"},"nodeType":"YulFunctionCall","src":"14556:93:13"},"nodeType":"YulExpressionStatement","src":"14556:93:13"},{"nodeType":"YulAssignment","src":"14658:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14669:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"14674:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14665:3:13"},"nodeType":"YulFunctionCall","src":"14665:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14658:3:13"}]}]},"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14451:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14459:3:13","type":""}],"src":"14317:366:13"},{"body":{"nodeType":"YulBlock","src":"14860:248:13","statements":[{"nodeType":"YulAssignment","src":"14870:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14882:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"14893:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14878:3:13"},"nodeType":"YulFunctionCall","src":"14878:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14870:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14917:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"14928:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14913:3:13"},"nodeType":"YulFunctionCall","src":"14913:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14936:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"14942:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14932:3:13"},"nodeType":"YulFunctionCall","src":"14932:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14906:6:13"},"nodeType":"YulFunctionCall","src":"14906:47:13"},"nodeType":"YulExpressionStatement","src":"14906:47:13"},{"nodeType":"YulAssignment","src":"14962:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15096:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14970:124:13"},"nodeType":"YulFunctionCall","src":"14970:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14962:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14840:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14855:4:13","type":""}],"src":"14689:419:13"},{"body":{"nodeType":"YulBlock","src":"15220:122:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15242:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"15250:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15238:3:13"},"nodeType":"YulFunctionCall","src":"15238:14:13"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"15254:34:13","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15231:6:13"},"nodeType":"YulFunctionCall","src":"15231:58:13"},"nodeType":"YulExpressionStatement","src":"15231:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15310:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"15318:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15306:3:13"},"nodeType":"YulFunctionCall","src":"15306:15:13"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"15323:11:13","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15299:6:13"},"nodeType":"YulFunctionCall","src":"15299:36:13"},"nodeType":"YulExpressionStatement","src":"15299:36:13"}]},"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"15212:6:13","type":""}],"src":"15114:228:13"},{"body":{"nodeType":"YulBlock","src":"15494:220:13","statements":[{"nodeType":"YulAssignment","src":"15504:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15570:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"15575:2:13","type":"","value":"41"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15511:58:13"},"nodeType":"YulFunctionCall","src":"15511:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15504:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15676:3:13"}],"functionName":{"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulIdentifier","src":"15587:88:13"},"nodeType":"YulFunctionCall","src":"15587:93:13"},"nodeType":"YulExpressionStatement","src":"15587:93:13"},{"nodeType":"YulAssignment","src":"15689:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15700:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"15705:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15696:3:13"},"nodeType":"YulFunctionCall","src":"15696:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15689:3:13"}]}]},"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15482:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15490:3:13","type":""}],"src":"15348:366:13"},{"body":{"nodeType":"YulBlock","src":"15891:248:13","statements":[{"nodeType":"YulAssignment","src":"15901:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15913:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"15924:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15909:3:13"},"nodeType":"YulFunctionCall","src":"15909:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15901:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15948:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"15959:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15944:3:13"},"nodeType":"YulFunctionCall","src":"15944:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15967:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"15973:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15963:3:13"},"nodeType":"YulFunctionCall","src":"15963:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15937:6:13"},"nodeType":"YulFunctionCall","src":"15937:47:13"},"nodeType":"YulExpressionStatement","src":"15937:47:13"},{"nodeType":"YulAssignment","src":"15993:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16127:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16001:124:13"},"nodeType":"YulFunctionCall","src":"16001:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15993:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15871:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15886:4:13","type":""}],"src":"15720:419:13"},{"body":{"nodeType":"YulBlock","src":"16259:34:13","statements":[{"nodeType":"YulAssignment","src":"16269:18:13","value":{"name":"pos","nodeType":"YulIdentifier","src":"16284:3:13"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16269:11:13"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16231:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"16236:6:13","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16247:11:13","type":""}],"src":"16145:148:13"},{"body":{"nodeType":"YulBlock","src":"16409:267:13","statements":[{"nodeType":"YulVariableDeclaration","src":"16419:53:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16466:5:13"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"16433:32:13"},"nodeType":"YulFunctionCall","src":"16433:39:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16423:6:13","type":""}]},{"nodeType":"YulAssignment","src":"16481:96:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16565:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"16570:6:13"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16488:76:13"},"nodeType":"YulFunctionCall","src":"16488:89:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16481:3:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16612:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"16619:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16608:3:13"},"nodeType":"YulFunctionCall","src":"16608:16:13"},{"name":"pos","nodeType":"YulIdentifier","src":"16626:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"16631:6:13"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"16586:21:13"},"nodeType":"YulFunctionCall","src":"16586:52:13"},"nodeType":"YulExpressionStatement","src":"16586:52:13"},{"nodeType":"YulAssignment","src":"16647:23:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16658:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"16663:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16654:3:13"},"nodeType":"YulFunctionCall","src":"16654:16:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16647:3:13"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16390:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16397:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16405:3:13","type":""}],"src":"16299:377:13"},{"body":{"nodeType":"YulBlock","src":"16866:251:13","statements":[{"nodeType":"YulAssignment","src":"16877:102:13","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16966:6:13"},{"name":"pos","nodeType":"YulIdentifier","src":"16975:3:13"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16884:81:13"},"nodeType":"YulFunctionCall","src":"16884:95:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16877:3:13"}]},{"nodeType":"YulAssignment","src":"16989:102:13","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"17078:6:13"},{"name":"pos","nodeType":"YulIdentifier","src":"17087:3:13"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16996:81:13"},"nodeType":"YulFunctionCall","src":"16996:95:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16989:3:13"}]},{"nodeType":"YulAssignment","src":"17101:10:13","value":{"name":"pos","nodeType":"YulIdentifier","src":"17108:3:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17101:3:13"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16837:3:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16843:6:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16851:6:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16862:3:13","type":""}],"src":"16682:435:13"},{"body":{"nodeType":"YulBlock","src":"17229:119:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17251:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"17259:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17247:3:13"},"nodeType":"YulFunctionCall","src":"17247:14:13"},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061","kind":"string","nodeType":"YulLiteral","src":"17263:34:13","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17240:6:13"},"nodeType":"YulFunctionCall","src":"17240:58:13"},"nodeType":"YulExpressionStatement","src":"17240:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17319:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"17327:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17315:3:13"},"nodeType":"YulFunctionCall","src":"17315:15:13"},{"hexValue":"646472657373","kind":"string","nodeType":"YulLiteral","src":"17332:8:13","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17308:6:13"},"nodeType":"YulFunctionCall","src":"17308:33:13"},"nodeType":"YulExpressionStatement","src":"17308:33:13"}]},"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17221:6:13","type":""}],"src":"17123:225:13"},{"body":{"nodeType":"YulBlock","src":"17500:220:13","statements":[{"nodeType":"YulAssignment","src":"17510:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17576:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"17581:2:13","type":"","value":"38"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17517:58:13"},"nodeType":"YulFunctionCall","src":"17517:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17510:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17682:3:13"}],"functionName":{"name":"store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","nodeType":"YulIdentifier","src":"17593:88:13"},"nodeType":"YulFunctionCall","src":"17593:93:13"},"nodeType":"YulExpressionStatement","src":"17593:93:13"},{"nodeType":"YulAssignment","src":"17695:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17706:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"17711:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17702:3:13"},"nodeType":"YulFunctionCall","src":"17702:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17695:3:13"}]}]},"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17488:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17496:3:13","type":""}],"src":"17354:366:13"},{"body":{"nodeType":"YulBlock","src":"17897:248:13","statements":[{"nodeType":"YulAssignment","src":"17907:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17919:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"17930:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17915:3:13"},"nodeType":"YulFunctionCall","src":"17915:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17907:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17954:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"17965:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17950:3:13"},"nodeType":"YulFunctionCall","src":"17950:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17973:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"17979:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17969:3:13"},"nodeType":"YulFunctionCall","src":"17969:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17943:6:13"},"nodeType":"YulFunctionCall","src":"17943:47:13"},"nodeType":"YulExpressionStatement","src":"17943:47:13"},{"nodeType":"YulAssignment","src":"17999:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18133:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18007:124:13"},"nodeType":"YulFunctionCall","src":"18007:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17999:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17877:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17892:4:13","type":""}],"src":"17726:419:13"},{"body":{"nodeType":"YulBlock","src":"18257:76:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18279:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"18287:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18275:3:13"},"nodeType":"YulFunctionCall","src":"18275:14:13"},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"18291:34:13","type":"","value":"ERC721: mint to the zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18268:6:13"},"nodeType":"YulFunctionCall","src":"18268:58:13"},"nodeType":"YulExpressionStatement","src":"18268:58:13"}]},"name":"store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18249:6:13","type":""}],"src":"18151:182:13"},{"body":{"nodeType":"YulBlock","src":"18485:220:13","statements":[{"nodeType":"YulAssignment","src":"18495:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18561:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"18566:2:13","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18502:58:13"},"nodeType":"YulFunctionCall","src":"18502:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18495:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18667:3:13"}],"functionName":{"name":"store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","nodeType":"YulIdentifier","src":"18578:88:13"},"nodeType":"YulFunctionCall","src":"18578:93:13"},"nodeType":"YulExpressionStatement","src":"18578:93:13"},{"nodeType":"YulAssignment","src":"18680:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18691:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"18696:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18687:3:13"},"nodeType":"YulFunctionCall","src":"18687:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18680:3:13"}]}]},"name":"abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18473:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18481:3:13","type":""}],"src":"18339:366:13"},{"body":{"nodeType":"YulBlock","src":"18882:248:13","statements":[{"nodeType":"YulAssignment","src":"18892:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18904:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"18915:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18900:3:13"},"nodeType":"YulFunctionCall","src":"18900:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18892:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18939:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"18950:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18935:3:13"},"nodeType":"YulFunctionCall","src":"18935:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18958:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"18964:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18954:3:13"},"nodeType":"YulFunctionCall","src":"18954:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18928:6:13"},"nodeType":"YulFunctionCall","src":"18928:47:13"},"nodeType":"YulExpressionStatement","src":"18928:47:13"},{"nodeType":"YulAssignment","src":"18984:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19118:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18992:124:13"},"nodeType":"YulFunctionCall","src":"18992:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18984:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18862:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18877:4:13","type":""}],"src":"18711:419:13"},{"body":{"nodeType":"YulBlock","src":"19242:72:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19264:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"19272:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19260:3:13"},"nodeType":"YulFunctionCall","src":"19260:14:13"},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","kind":"string","nodeType":"YulLiteral","src":"19276:30:13","type":"","value":"ERC721: token already minted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19253:6:13"},"nodeType":"YulFunctionCall","src":"19253:54:13"},"nodeType":"YulExpressionStatement","src":"19253:54:13"}]},"name":"store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19234:6:13","type":""}],"src":"19136:178:13"},{"body":{"nodeType":"YulBlock","src":"19466:220:13","statements":[{"nodeType":"YulAssignment","src":"19476:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19542:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"19547:2:13","type":"","value":"28"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19483:58:13"},"nodeType":"YulFunctionCall","src":"19483:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19476:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19648:3:13"}],"functionName":{"name":"store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","nodeType":"YulIdentifier","src":"19559:88:13"},"nodeType":"YulFunctionCall","src":"19559:93:13"},"nodeType":"YulExpressionStatement","src":"19559:93:13"},{"nodeType":"YulAssignment","src":"19661:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19672:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"19677:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19668:3:13"},"nodeType":"YulFunctionCall","src":"19668:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19661:3:13"}]}]},"name":"abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"19454:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"19462:3:13","type":""}],"src":"19320:366:13"},{"body":{"nodeType":"YulBlock","src":"19863:248:13","statements":[{"nodeType":"YulAssignment","src":"19873:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19885:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"19896:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19881:3:13"},"nodeType":"YulFunctionCall","src":"19881:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19873:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19920:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"19931:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19916:3:13"},"nodeType":"YulFunctionCall","src":"19916:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19939:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"19945:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19935:3:13"},"nodeType":"YulFunctionCall","src":"19935:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19909:6:13"},"nodeType":"YulFunctionCall","src":"19909:47:13"},"nodeType":"YulExpressionStatement","src":"19909:47:13"},{"nodeType":"YulAssignment","src":"19965:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20099:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19973:124:13"},"nodeType":"YulFunctionCall","src":"19973:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19965:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19843:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19858:4:13","type":""}],"src":"19692:419:13"},{"body":{"nodeType":"YulBlock","src":"20223:118:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20245:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"20253:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20241:3:13"},"nodeType":"YulFunctionCall","src":"20241:14:13"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"20257:34:13","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20234:6:13"},"nodeType":"YulFunctionCall","src":"20234:58:13"},"nodeType":"YulExpressionStatement","src":"20234:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20313:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"20321:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20309:3:13"},"nodeType":"YulFunctionCall","src":"20309:15:13"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"20326:7:13","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20302:6:13"},"nodeType":"YulFunctionCall","src":"20302:32:13"},"nodeType":"YulExpressionStatement","src":"20302:32:13"}]},"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"20215:6:13","type":""}],"src":"20117:224:13"},{"body":{"nodeType":"YulBlock","src":"20493:220:13","statements":[{"nodeType":"YulAssignment","src":"20503:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20569:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"20574:2:13","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20510:58:13"},"nodeType":"YulFunctionCall","src":"20510:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"20503:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20675:3:13"}],"functionName":{"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulIdentifier","src":"20586:88:13"},"nodeType":"YulFunctionCall","src":"20586:93:13"},"nodeType":"YulExpressionStatement","src":"20586:93:13"},{"nodeType":"YulAssignment","src":"20688:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20699:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"20704:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20695:3:13"},"nodeType":"YulFunctionCall","src":"20695:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"20688:3:13"}]}]},"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"20481:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"20489:3:13","type":""}],"src":"20347:366:13"},{"body":{"nodeType":"YulBlock","src":"20890:248:13","statements":[{"nodeType":"YulAssignment","src":"20900:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20912:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"20923:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20908:3:13"},"nodeType":"YulFunctionCall","src":"20908:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20900:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20947:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"20958:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20943:3:13"},"nodeType":"YulFunctionCall","src":"20943:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20966:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"20972:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20962:3:13"},"nodeType":"YulFunctionCall","src":"20962:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20936:6:13"},"nodeType":"YulFunctionCall","src":"20936:47:13"},"nodeType":"YulExpressionStatement","src":"20936:47:13"},{"nodeType":"YulAssignment","src":"20992:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21126:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21000:124:13"},"nodeType":"YulFunctionCall","src":"21000:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20992:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20870:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20885:4:13","type":""}],"src":"20719:419:13"},{"body":{"nodeType":"YulBlock","src":"21250:117:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21272:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"21280:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21268:3:13"},"nodeType":"YulFunctionCall","src":"21268:14:13"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"21284:34:13","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21261:6:13"},"nodeType":"YulFunctionCall","src":"21261:58:13"},"nodeType":"YulExpressionStatement","src":"21261:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21340:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"21348:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21336:3:13"},"nodeType":"YulFunctionCall","src":"21336:15:13"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"21353:6:13","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21329:6:13"},"nodeType":"YulFunctionCall","src":"21329:31:13"},"nodeType":"YulExpressionStatement","src":"21329:31:13"}]},"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"21242:6:13","type":""}],"src":"21144:223:13"},{"body":{"nodeType":"YulBlock","src":"21519:220:13","statements":[{"nodeType":"YulAssignment","src":"21529:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21595:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"21600:2:13","type":"","value":"36"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21536:58:13"},"nodeType":"YulFunctionCall","src":"21536:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"21529:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21701:3:13"}],"functionName":{"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulIdentifier","src":"21612:88:13"},"nodeType":"YulFunctionCall","src":"21612:93:13"},"nodeType":"YulExpressionStatement","src":"21612:93:13"},{"nodeType":"YulAssignment","src":"21714:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21725:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"21730:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21721:3:13"},"nodeType":"YulFunctionCall","src":"21721:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21714:3:13"}]}]},"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21507:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21515:3:13","type":""}],"src":"21373:366:13"},{"body":{"nodeType":"YulBlock","src":"21916:248:13","statements":[{"nodeType":"YulAssignment","src":"21926:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21938:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"21949:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21934:3:13"},"nodeType":"YulFunctionCall","src":"21934:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21926:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21973:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"21984:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21969:3:13"},"nodeType":"YulFunctionCall","src":"21969:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21992:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"21998:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21988:3:13"},"nodeType":"YulFunctionCall","src":"21988:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21962:6:13"},"nodeType":"YulFunctionCall","src":"21962:47:13"},"nodeType":"YulExpressionStatement","src":"21962:47:13"},{"nodeType":"YulAssignment","src":"22018:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22152:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22026:124:13"},"nodeType":"YulFunctionCall","src":"22026:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22018:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21896:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21911:4:13","type":""}],"src":"21745:419:13"},{"body":{"nodeType":"YulBlock","src":"22198:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22215:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22218:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22208:6:13"},"nodeType":"YulFunctionCall","src":"22208:88:13"},"nodeType":"YulExpressionStatement","src":"22208:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22312:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"22315:4:13","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22305:6:13"},"nodeType":"YulFunctionCall","src":"22305:15:13"},"nodeType":"YulExpressionStatement","src":"22305:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22336:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22339:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"22329:6:13"},"nodeType":"YulFunctionCall","src":"22329:15:13"},"nodeType":"YulExpressionStatement","src":"22329:15:13"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"22170:180:13"},{"body":{"nodeType":"YulBlock","src":"22401:146:13","statements":[{"nodeType":"YulAssignment","src":"22411:25:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22434:1:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22416:17:13"},"nodeType":"YulFunctionCall","src":"22416:20:13"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"22411:1:13"}]},{"nodeType":"YulAssignment","src":"22445:25:13","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"22468:1:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22450:17:13"},"nodeType":"YulFunctionCall","src":"22450:20:13"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"22445:1:13"}]},{"body":{"nodeType":"YulBlock","src":"22492:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"22494:16:13"},"nodeType":"YulFunctionCall","src":"22494:18:13"},"nodeType":"YulExpressionStatement","src":"22494:18:13"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22486:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"22489:1:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"22483:2:13"},"nodeType":"YulFunctionCall","src":"22483:8:13"},"nodeType":"YulIf","src":"22480:34:13"},{"nodeType":"YulAssignment","src":"22524:17:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22536:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"22539:1:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22532:3:13"},"nodeType":"YulFunctionCall","src":"22532:9:13"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"22524:4:13"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"22387:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"22390:1:13","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"22396:4:13","type":""}],"src":"22356:191:13"},{"body":{"nodeType":"YulBlock","src":"22597:261:13","statements":[{"nodeType":"YulAssignment","src":"22607:25:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22630:1:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22612:17:13"},"nodeType":"YulFunctionCall","src":"22612:20:13"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"22607:1:13"}]},{"nodeType":"YulAssignment","src":"22641:25:13","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"22664:1:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22646:17:13"},"nodeType":"YulFunctionCall","src":"22646:20:13"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"22641:1:13"}]},{"body":{"nodeType":"YulBlock","src":"22804:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"22806:16:13"},"nodeType":"YulFunctionCall","src":"22806:18:13"},"nodeType":"YulExpressionStatement","src":"22806:18:13"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22725:1:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22732:66:13","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"22800:1:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22728:3:13"},"nodeType":"YulFunctionCall","src":"22728:74:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"22722:2:13"},"nodeType":"YulFunctionCall","src":"22722:81:13"},"nodeType":"YulIf","src":"22719:107:13"},{"nodeType":"YulAssignment","src":"22836:16:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22847:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"22850:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22843:3:13"},"nodeType":"YulFunctionCall","src":"22843:9:13"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"22836:3:13"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"22584:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"22587:1:13","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"22593:3:13","type":""}],"src":"22553:305:13"},{"body":{"nodeType":"YulBlock","src":"22970:76:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"22992:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"23000:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22988:3:13"},"nodeType":"YulFunctionCall","src":"22988:14:13"},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","kind":"string","nodeType":"YulLiteral","src":"23004:34:13","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22981:6:13"},"nodeType":"YulFunctionCall","src":"22981:58:13"},"nodeType":"YulExpressionStatement","src":"22981:58:13"}]},"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"22962:6:13","type":""}],"src":"22864:182:13"},{"body":{"nodeType":"YulBlock","src":"23198:220:13","statements":[{"nodeType":"YulAssignment","src":"23208:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23274:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"23279:2:13","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23215:58:13"},"nodeType":"YulFunctionCall","src":"23215:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"23208:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23380:3:13"}],"functionName":{"name":"store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","nodeType":"YulIdentifier","src":"23291:88:13"},"nodeType":"YulFunctionCall","src":"23291:93:13"},"nodeType":"YulExpressionStatement","src":"23291:93:13"},{"nodeType":"YulAssignment","src":"23393:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23404:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"23409:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23400:3:13"},"nodeType":"YulFunctionCall","src":"23400:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"23393:3:13"}]}]},"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"23186:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"23194:3:13","type":""}],"src":"23052:366:13"},{"body":{"nodeType":"YulBlock","src":"23595:248:13","statements":[{"nodeType":"YulAssignment","src":"23605:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23617:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"23628:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23613:3:13"},"nodeType":"YulFunctionCall","src":"23613:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23605:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23652:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"23663:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23648:3:13"},"nodeType":"YulFunctionCall","src":"23648:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23671:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"23677:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23667:3:13"},"nodeType":"YulFunctionCall","src":"23667:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23641:6:13"},"nodeType":"YulFunctionCall","src":"23641:47:13"},"nodeType":"YulExpressionStatement","src":"23641:47:13"},{"nodeType":"YulAssignment","src":"23697:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23831:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23705:124:13"},"nodeType":"YulFunctionCall","src":"23705:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23697:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23575:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23590:4:13","type":""}],"src":"23424:419:13"},{"body":{"nodeType":"YulBlock","src":"23955:69:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23977:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"23985:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23973:3:13"},"nodeType":"YulFunctionCall","src":"23973:14:13"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"23989:27:13","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23966:6:13"},"nodeType":"YulFunctionCall","src":"23966:51:13"},"nodeType":"YulExpressionStatement","src":"23966:51:13"}]},"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"23947:6:13","type":""}],"src":"23849:175:13"},{"body":{"nodeType":"YulBlock","src":"24176:220:13","statements":[{"nodeType":"YulAssignment","src":"24186:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24252:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"24257:2:13","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24193:58:13"},"nodeType":"YulFunctionCall","src":"24193:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"24186:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24358:3:13"}],"functionName":{"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulIdentifier","src":"24269:88:13"},"nodeType":"YulFunctionCall","src":"24269:93:13"},"nodeType":"YulExpressionStatement","src":"24269:93:13"},{"nodeType":"YulAssignment","src":"24371:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24382:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"24387:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24378:3:13"},"nodeType":"YulFunctionCall","src":"24378:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"24371:3:13"}]}]},"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"24164:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"24172:3:13","type":""}],"src":"24030:366:13"},{"body":{"nodeType":"YulBlock","src":"24573:248:13","statements":[{"nodeType":"YulAssignment","src":"24583:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24595:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"24606:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24591:3:13"},"nodeType":"YulFunctionCall","src":"24591:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24583:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24630:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"24641:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24626:3:13"},"nodeType":"YulFunctionCall","src":"24626:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24649:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"24655:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24645:3:13"},"nodeType":"YulFunctionCall","src":"24645:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24619:6:13"},"nodeType":"YulFunctionCall","src":"24619:47:13"},"nodeType":"YulExpressionStatement","src":"24619:47:13"},{"nodeType":"YulAssignment","src":"24675:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24809:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24683:124:13"},"nodeType":"YulFunctionCall","src":"24683:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24675:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24553:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24568:4:13","type":""}],"src":"24402:419:13"},{"body":{"nodeType":"YulBlock","src":"24933:131:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24955:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"24963:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24951:3:13"},"nodeType":"YulFunctionCall","src":"24951:14:13"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"24967:34:13","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24944:6:13"},"nodeType":"YulFunctionCall","src":"24944:58:13"},"nodeType":"YulExpressionStatement","src":"24944:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"25023:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"25031:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25019:3:13"},"nodeType":"YulFunctionCall","src":"25019:15:13"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"25036:20:13","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25012:6:13"},"nodeType":"YulFunctionCall","src":"25012:45:13"},"nodeType":"YulExpressionStatement","src":"25012:45:13"}]},"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"24925:6:13","type":""}],"src":"24827:237:13"},{"body":{"nodeType":"YulBlock","src":"25216:220:13","statements":[{"nodeType":"YulAssignment","src":"25226:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25292:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"25297:2:13","type":"","value":"50"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"25233:58:13"},"nodeType":"YulFunctionCall","src":"25233:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25226:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25398:3:13"}],"functionName":{"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulIdentifier","src":"25309:88:13"},"nodeType":"YulFunctionCall","src":"25309:93:13"},"nodeType":"YulExpressionStatement","src":"25309:93:13"},{"nodeType":"YulAssignment","src":"25411:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25422:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"25427:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25418:3:13"},"nodeType":"YulFunctionCall","src":"25418:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"25411:3:13"}]}]},"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"25204:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"25212:3:13","type":""}],"src":"25070:366:13"},{"body":{"nodeType":"YulBlock","src":"25613:248:13","statements":[{"nodeType":"YulAssignment","src":"25623:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25635:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"25646:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25631:3:13"},"nodeType":"YulFunctionCall","src":"25631:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"25623:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25670:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"25681:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25666:3:13"},"nodeType":"YulFunctionCall","src":"25666:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"25689:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"25695:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25685:3:13"},"nodeType":"YulFunctionCall","src":"25685:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25659:6:13"},"nodeType":"YulFunctionCall","src":"25659:47:13"},"nodeType":"YulExpressionStatement","src":"25659:47:13"},{"nodeType":"YulAssignment","src":"25715:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"25849:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"25723:124:13"},"nodeType":"YulFunctionCall","src":"25723:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"25715:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25593:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"25608:4:13","type":""}],"src":"25442:419:13"},{"body":{"nodeType":"YulBlock","src":"25895:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25912:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25915:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25905:6:13"},"nodeType":"YulFunctionCall","src":"25905:88:13"},"nodeType":"YulExpressionStatement","src":"25905:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26009:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"26012:4:13","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26002:6:13"},"nodeType":"YulFunctionCall","src":"26002:15:13"},"nodeType":"YulExpressionStatement","src":"26002:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"26033:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"26036:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"26026:6:13"},"nodeType":"YulFunctionCall","src":"26026:15:13"},"nodeType":"YulExpressionStatement","src":"26026:15:13"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"25867:180:13"},{"body":{"nodeType":"YulBlock","src":"26111:40:13","statements":[{"nodeType":"YulAssignment","src":"26122:22:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26138:5:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26132:5:13"},"nodeType":"YulFunctionCall","src":"26132:12:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"26122:6:13"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26094:5:13","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"26104:6:13","type":""}],"src":"26053:98:13"},{"body":{"nodeType":"YulBlock","src":"26252:73:13","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26269:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"26274:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26262:6:13"},"nodeType":"YulFunctionCall","src":"26262:19:13"},"nodeType":"YulExpressionStatement","src":"26262:19:13"},{"nodeType":"YulAssignment","src":"26290:29:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26309:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"26314:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26305:3:13"},"nodeType":"YulFunctionCall","src":"26305:14:13"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"26290:11:13"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"26224:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"26229:6:13","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"26240:11:13","type":""}],"src":"26157:168:13"},{"body":{"nodeType":"YulBlock","src":"26421:270:13","statements":[{"nodeType":"YulVariableDeclaration","src":"26431:52:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26477:5:13"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"26445:31:13"},"nodeType":"YulFunctionCall","src":"26445:38:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"26435:6:13","type":""}]},{"nodeType":"YulAssignment","src":"26492:77:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26557:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"26562:6:13"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26499:57:13"},"nodeType":"YulFunctionCall","src":"26499:70:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"26492:3:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26604:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"26611:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26600:3:13"},"nodeType":"YulFunctionCall","src":"26600:16:13"},{"name":"pos","nodeType":"YulIdentifier","src":"26618:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"26623:6:13"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"26578:21:13"},"nodeType":"YulFunctionCall","src":"26578:52:13"},"nodeType":"YulExpressionStatement","src":"26578:52:13"},{"nodeType":"YulAssignment","src":"26639:46:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26650:3:13"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"26677:6:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"26655:21:13"},"nodeType":"YulFunctionCall","src":"26655:29:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26646:3:13"},"nodeType":"YulFunctionCall","src":"26646:39:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"26639:3:13"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"26402:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"26409:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"26417:3:13","type":""}],"src":"26331:360:13"},{"body":{"nodeType":"YulBlock","src":"26897:440:13","statements":[{"nodeType":"YulAssignment","src":"26907:27:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26919:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"26930:3:13","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26915:3:13"},"nodeType":"YulFunctionCall","src":"26915:19:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26907:4:13"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"26988:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27001:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"27012:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26997:3:13"},"nodeType":"YulFunctionCall","src":"26997:17:13"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"26944:43:13"},"nodeType":"YulFunctionCall","src":"26944:71:13"},"nodeType":"YulExpressionStatement","src":"26944:71:13"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"27069:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27082:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"27093:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27078:3:13"},"nodeType":"YulFunctionCall","src":"27078:18:13"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27025:43:13"},"nodeType":"YulFunctionCall","src":"27025:72:13"},"nodeType":"YulExpressionStatement","src":"27025:72:13"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"27151:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27164:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"27175:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27160:3:13"},"nodeType":"YulFunctionCall","src":"27160:18:13"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"27107:43:13"},"nodeType":"YulFunctionCall","src":"27107:72:13"},"nodeType":"YulExpressionStatement","src":"27107:72:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27200:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"27211:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27196:3:13"},"nodeType":"YulFunctionCall","src":"27196:18:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27220:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"27226:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27216:3:13"},"nodeType":"YulFunctionCall","src":"27216:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27189:6:13"},"nodeType":"YulFunctionCall","src":"27189:48:13"},"nodeType":"YulExpressionStatement","src":"27189:48:13"},{"nodeType":"YulAssignment","src":"27246:84:13","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"27316:6:13"},{"name":"tail","nodeType":"YulIdentifier","src":"27325:4:13"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27254:61:13"},"nodeType":"YulFunctionCall","src":"27254:76:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27246:4:13"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26845:9:13","type":""},{"name":"value3","nodeType":"YulTypedName","src":"26857:6:13","type":""},{"name":"value2","nodeType":"YulTypedName","src":"26865:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"26873:6:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"26881:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"26892:4:13","type":""}],"src":"26697:640:13"},{"body":{"nodeType":"YulBlock","src":"27405:79:13","statements":[{"nodeType":"YulAssignment","src":"27415:22:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"27430:6:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27424:5:13"},"nodeType":"YulFunctionCall","src":"27424:13:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"27415:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"27472:5:13"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"27446:25:13"},"nodeType":"YulFunctionCall","src":"27446:32:13"},"nodeType":"YulExpressionStatement","src":"27446:32:13"}]},"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"27383:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"27391:3:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"27399:5:13","type":""}],"src":"27343:141:13"},{"body":{"nodeType":"YulBlock","src":"27566:273:13","statements":[{"body":{"nodeType":"YulBlock","src":"27612:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"27614:77:13"},"nodeType":"YulFunctionCall","src":"27614:79:13"},"nodeType":"YulExpressionStatement","src":"27614:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"27587:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"27596:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27583:3:13"},"nodeType":"YulFunctionCall","src":"27583:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"27608:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"27579:3:13"},"nodeType":"YulFunctionCall","src":"27579:32:13"},"nodeType":"YulIf","src":"27576:119:13"},{"nodeType":"YulBlock","src":"27705:127:13","statements":[{"nodeType":"YulVariableDeclaration","src":"27720:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"27734:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"27724:6:13","type":""}]},{"nodeType":"YulAssignment","src":"27749:73:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27794:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"27805:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27790:3:13"},"nodeType":"YulFunctionCall","src":"27790:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"27814:7:13"}],"functionName":{"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulIdentifier","src":"27759:30:13"},"nodeType":"YulFunctionCall","src":"27759:63:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"27749:6:13"}]}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27536:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"27547:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"27559:6:13","type":""}],"src":"27490:349:13"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approval to current owne\")\n\n mstore(add(memPtr, 32), \"r\")\n\n }\n\n function abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve caller is not to\")\n\n mstore(add(memPtr, 32), \"ken owner nor approved for all\")\n\n }\n\n function abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 62)\n store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: caller is not token owne\")\n\n mstore(add(memPtr, 32), \"r nor approved\")\n\n }\n\n function abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: invalid token ID\")\n\n }\n\n function abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: address zero is not a va\")\n\n mstore(add(memPtr, 32), \"lid owner\")\n\n }\n\n function abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: new owner is the zero a\")\n\n mstore(add(memPtr, 32), \"ddress\")\n\n }\n\n function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n store_literal_in_memory_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: mint to the zero address\")\n\n }\n\n function abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: token already minted\")\n\n }\n\n function abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n store_literal_in_memory_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer from incorrect \")\n\n mstore(add(memPtr, 32), \"owner\")\n\n }\n\n function abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(memPtr) {\n\n mstore(add(memPtr, 0), \"Ownable: caller is not the owner\")\n\n }\n\n function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve to caller\")\n\n }\n\n function abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to non ERC721Re\")\n\n mstore(add(memPtr, 32), \"ceiver implementer\")\n\n }\n\n function abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 50)\n store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_decode_t_bytes4_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":13,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a22cb46511610071578063a22cb46514610292578063b88d4fde146102ae578063c87b56dd146102ca578063e985e9c5146102fa578063f2fde38b1461032a5761010b565b806370a082311461021c578063715018a61461024c5780638da5cb5b1461025657806395d89b41146102745761010b565b80631249c58b116100de5780631249c58b146101aa57806323b872dd146101b457806342842e0e146101d05780636352211e146101ec5761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611a95565b610346565b6040516101379190611add565b60405180910390f35b610148610428565b6040516101559190611b91565b60405180910390f35b61017860048036038101906101739190611be9565b6104ba565b6040516101859190611c57565b60405180910390f35b6101a860048036038101906101a39190611c9e565b610500565b005b6101b2610617565b005b6101ce60048036038101906101c99190611cde565b610629565b005b6101ea60048036038101906101e59190611cde565b610689565b005b61020660048036038101906102019190611be9565b6106a9565b6040516102139190611c57565b60405180910390f35b61023660048036038101906102319190611d31565b61076c565b6040516102439190611d6d565b60405180910390f35b610254610886565b005b61025e61089a565b60405161026b9190611c57565b60405180910390f35b61027c6108c3565b6040516102899190611b91565b60405180910390f35b6102ac60048036038101906102a79190611db4565b610955565b005b6102c860048036038101906102c39190611f29565b61096b565b005b6102e460048036038101906102df9190611be9565b6109cd565b6040516102f19190611b91565b60405180910390f35b610314600480360381019061030f9190611fac565b610a35565b6040516103219190611add565b60405180910390f35b610344600480360381019061033f9190611d31565b610ac9565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061041157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610421575061042082610b4c565b5b9050919050565b6060600180546104379061201b565b80601f01602080910402602001604051908101604052809291908181526020018280546104639061201b565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b60006104c582610bb6565b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061050b826106a9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361057b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610572906120be565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661059a610c01565b73ffffffffffffffffffffffffffffffffffffffff1614806105c957506105c8816105c3610c01565b610a35565b5b610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90612150565b60405180910390fd5b6106128383610c09565b505050565b610627610622610c01565b610cc2565b565b61063a610634610c01565b82610e21565b610679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610670906121e2565b60405180910390fd5b610684838383610eb6565b505050565b6106a48383836040518060200160405280600081525061096b565b505050565b60006106b482611184565b6106f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ea9061224e565b60405180910390fd5b60006003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610763578290505b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d3906122e0565b60405180910390fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148015610830575061082f8261121b565b5b1561083e5760019050610881565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b61088e6112ef565b610898600061136d565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546108d29061201b565b80601f01602080910402602001604051908101604052809291908181526020018280546108fe9061201b565b801561094b5780601f106109205761010080835404028352916020019161094b565b820191906000526020600020905b81548152906001019060200180831161092e57829003601f168201915b5050505050905090565b610967610960610c01565b8383611431565b5050565b61097c610976610c01565b83610e21565b6109bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b2906121e2565b60405180910390fd5b6109c78484848461159d565b50505050565b60606109d882610bb6565b60006109e26115f9565b90506000815111610a025760405180602001604052806000815250610a2d565b80610a0c84611610565b604051602001610a1d92919061233c565b6040516020818303038152906040525b915050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610ad16112ef565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b37906123d2565b60405180910390fd5b610b498161136d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610bbf816116de565b610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf59061224e565b60405180910390fd5b50565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610c7c836106a9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008173ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d439061243e565b60405180910390fd5b610d5581611184565b15610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c906124aa565b60405180910390fd5b60016007600083815260200190815260200160002060006101000a81548160ff021916908315150217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080610e2d836106a9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610e6f5750610e6e8185610a35565b5b80610ead57508373ffffffffffffffffffffffffffffffffffffffff16610e95846104ba565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ed6826106a9565b73ffffffffffffffffffffffffffffffffffffffff1614610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f239061253c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f92906125ce565b60405180910390fd5b610fa683838361174a565b610fb1600082610c09565b600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611070576001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611068919061261d565b925050819055505b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110c09190612651565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461117f83838361174f565b505050565b60006007600083815260200190815260200160002060009054906101000a900460ff168015611214575061dead73ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff16905060006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061127882611184565b80156112e657508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806112e55750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b5b92505050919050565b6112f7610c01565b73ffffffffffffffffffffffffffffffffffffffff1661131561089a565b73ffffffffffffffffffffffffffffffffffffffff161461136b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611362906126f3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361149f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114969061275f565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115909190611add565b60405180910390a3505050565b6115a8848484610eb6565b6115b484848484611754565b6115f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ea906127f1565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000600161161f846118d6565b01905060008167ffffffffffffffff81111561163e5761163d611dfe565b5b6040519080825280601f01601f1916602001820160405280156116705781602001600182028036833780820191505090505b509050600082602001820190505b6001156116d3578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816116c7576116c6612811565b5b0494506000850361167e575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b11156118c9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611799610c01565b8786866040518563ffffffff1660e01b81526004016117bb9493929190612895565b6020604051808303816000875af19250505080156117f757506040513d601f19601f820116820180604052508101906117f491906128f6565b60015b611879573d8060008114611827576040519150601f19603f3d011682016040523d82523d6000602084013e61182c565b606091505b506000815103611871576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611868906127f1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506118ce565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611934577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161192a57611929612811565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611971576d04ee2d6d415b85acef8100000000838161196757611966612811565b5b0492506020810190505b662386f26fc1000083106119a057662386f26fc10000838161199657611995612811565b5b0492506010810190505b6305f5e10083106119c9576305f5e10083816119bf576119be612811565b5b0492506008810190505b61271083106119ee5761271083816119e4576119e3612811565b5b0492506004810190505b60648310611a115760648381611a0757611a06612811565b5b0492506002810190505b600a8310611a20576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a7281611a3d565b8114611a7d57600080fd5b50565b600081359050611a8f81611a69565b92915050565b600060208284031215611aab57611aaa611a33565b5b6000611ab984828501611a80565b91505092915050565b60008115159050919050565b611ad781611ac2565b82525050565b6000602082019050611af26000830184611ace565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b32578082015181840152602081019050611b17565b83811115611b41576000848401525b50505050565b6000601f19601f8301169050919050565b6000611b6382611af8565b611b6d8185611b03565b9350611b7d818560208601611b14565b611b8681611b47565b840191505092915050565b60006020820190508181036000830152611bab8184611b58565b905092915050565b6000819050919050565b611bc681611bb3565b8114611bd157600080fd5b50565b600081359050611be381611bbd565b92915050565b600060208284031215611bff57611bfe611a33565b5b6000611c0d84828501611bd4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c4182611c16565b9050919050565b611c5181611c36565b82525050565b6000602082019050611c6c6000830184611c48565b92915050565b611c7b81611c36565b8114611c8657600080fd5b50565b600081359050611c9881611c72565b92915050565b60008060408385031215611cb557611cb4611a33565b5b6000611cc385828601611c89565b9250506020611cd485828601611bd4565b9150509250929050565b600080600060608486031215611cf757611cf6611a33565b5b6000611d0586828701611c89565b9350506020611d1686828701611c89565b9250506040611d2786828701611bd4565b9150509250925092565b600060208284031215611d4757611d46611a33565b5b6000611d5584828501611c89565b91505092915050565b611d6781611bb3565b82525050565b6000602082019050611d826000830184611d5e565b92915050565b611d9181611ac2565b8114611d9c57600080fd5b50565b600081359050611dae81611d88565b92915050565b60008060408385031215611dcb57611dca611a33565b5b6000611dd985828601611c89565b9250506020611dea85828601611d9f565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e3682611b47565b810181811067ffffffffffffffff82111715611e5557611e54611dfe565b5b80604052505050565b6000611e68611a29565b9050611e748282611e2d565b919050565b600067ffffffffffffffff821115611e9457611e93611dfe565b5b611e9d82611b47565b9050602081019050919050565b82818337600083830152505050565b6000611ecc611ec784611e79565b611e5e565b905082815260208101848484011115611ee857611ee7611df9565b5b611ef3848285611eaa565b509392505050565b600082601f830112611f1057611f0f611df4565b5b8135611f20848260208601611eb9565b91505092915050565b60008060008060808587031215611f4357611f42611a33565b5b6000611f5187828801611c89565b9450506020611f6287828801611c89565b9350506040611f7387828801611bd4565b925050606085013567ffffffffffffffff811115611f9457611f93611a38565b5b611fa087828801611efb565b91505092959194509250565b60008060408385031215611fc357611fc2611a33565b5b6000611fd185828601611c89565b9250506020611fe285828601611c89565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061203357607f821691505b60208210810361204657612045611fec565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006120a8602183611b03565b91506120b38261204c565b604082019050919050565b600060208201905081810360008301526120d78161209b565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b600061213a603e83611b03565b9150612145826120de565b604082019050919050565b600060208201905081810360008301526121698161212d565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b60006121cc602e83611b03565b91506121d782612170565b604082019050919050565b600060208201905081810360008301526121fb816121bf565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612238601883611b03565b915061224382612202565b602082019050919050565b600060208201905081810360008301526122678161222b565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006122ca602983611b03565b91506122d58261226e565b604082019050919050565b600060208201905081810360008301526122f9816122bd565b9050919050565b600081905092915050565b600061231682611af8565b6123208185612300565b9350612330818560208601611b14565b80840191505092915050565b6000612348828561230b565b9150612354828461230b565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006123bc602683611b03565b91506123c782612360565b604082019050919050565b600060208201905081810360008301526123eb816123af565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612428602083611b03565b9150612433826123f2565b602082019050919050565b600060208201905081810360008301526124578161241b565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000612494601c83611b03565b915061249f8261245e565b602082019050919050565b600060208201905081810360008301526124c381612487565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612526602583611b03565b9150612531826124ca565b604082019050919050565b6000602082019050818103600083015261255581612519565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125b8602483611b03565b91506125c38261255c565b604082019050919050565b600060208201905081810360008301526125e7816125ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061262882611bb3565b915061263383611bb3565b925082821015612646576126456125ee565b5b828203905092915050565b600061265c82611bb3565b915061266783611bb3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561269c5761269b6125ee565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126dd602083611b03565b91506126e8826126a7565b602082019050919050565b6000602082019050818103600083015261270c816126d0565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000612749601983611b03565b915061275482612713565b602082019050919050565b600060208201905081810360008301526127788161273c565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006127db603283611b03565b91506127e68261277f565b604082019050919050565b6000602082019050818103600083015261280a816127ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061286782612840565b612871818561284b565b9350612881818560208601611b14565b61288a81611b47565b840191505092915050565b60006080820190506128aa6000830187611c48565b6128b76020830186611c48565b6128c46040830185611d5e565b81810360608301526128d6818461285c565b905095945050505050565b6000815190506128f081611a69565b92915050565b60006020828403121561290c5761290b611a33565b5b600061291a848285016128e1565b9150509291505056fea264697066735822122085c7d608a0fb21c4e9f5bd82509de0ddc1df85607191f40e67d6d8caf3978ded64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x292 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x2AE JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x32A JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x256 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x274 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1249C58B GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x1249C58B EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B4 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x1EC JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x140 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x15E JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x18E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x125 SWAP2 SWAP1 PUSH2 0x1A95 JUMP JUMPDEST PUSH2 0x346 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x137 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x148 PUSH2 0x428 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x155 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x178 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x173 SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x185 SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1A3 SWAP2 SWAP1 PUSH2 0x1C9E JUMP JUMPDEST PUSH2 0x500 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B2 PUSH2 0x617 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1C9 SWAP2 SWAP1 PUSH2 0x1CDE JUMP JUMPDEST PUSH2 0x629 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1EA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E5 SWAP2 SWAP1 PUSH2 0x1CDE JUMP JUMPDEST PUSH2 0x689 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x206 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x201 SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x6A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x213 SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x236 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x231 SWAP2 SWAP1 PUSH2 0x1D31 JUMP JUMPDEST PUSH2 0x76C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x243 SWAP2 SWAP1 PUSH2 0x1D6D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x254 PUSH2 0x886 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25E PUSH2 0x89A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x1C57 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27C PUSH2 0x8C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x289 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A7 SWAP2 SWAP1 PUSH2 0x1DB4 JUMP JUMPDEST PUSH2 0x955 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C3 SWAP2 SWAP1 PUSH2 0x1F29 JUMP JUMPDEST PUSH2 0x96B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x1BE9 JUMP JUMPDEST PUSH2 0x9CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2F1 SWAP2 SWAP1 PUSH2 0x1B91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x314 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x30F SWAP2 SWAP1 PUSH2 0x1FAC JUMP JUMPDEST PUSH2 0xA35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x321 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x344 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x33F SWAP2 SWAP1 PUSH2 0x1D31 JUMP JUMPDEST PUSH2 0xAC9 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x411 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x421 JUMPI POP PUSH2 0x420 DUP3 PUSH2 0xB4C JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x437 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x463 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x4B0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x485 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x493 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5 DUP3 PUSH2 0xBB6 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x50B DUP3 PUSH2 0x6A9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x57B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x572 SWAP1 PUSH2 0x20BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x59A PUSH2 0xC01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x5C9 JUMPI POP PUSH2 0x5C8 DUP2 PUSH2 0x5C3 PUSH2 0xC01 JUMP JUMPDEST PUSH2 0xA35 JUMP JUMPDEST JUMPDEST PUSH2 0x608 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5FF SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x612 DUP4 DUP4 PUSH2 0xC09 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x627 PUSH2 0x622 PUSH2 0xC01 JUMP JUMPDEST PUSH2 0xCC2 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x63A PUSH2 0x634 PUSH2 0xC01 JUMP JUMPDEST DUP3 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x679 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x670 SWAP1 PUSH2 0x21E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x684 DUP4 DUP4 DUP4 PUSH2 0xEB6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x6A4 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x96B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B4 DUP3 PUSH2 0x1184 JUMP JUMPDEST PUSH2 0x6F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6EA SWAP1 PUSH2 0x224E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x763 JUMPI DUP3 SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D3 SWAP1 PUSH2 0x22E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ DUP1 ISZERO PUSH2 0x830 JUMPI POP PUSH2 0x82F DUP3 PUSH2 0x121B JUMP JUMPDEST JUMPDEST ISZERO PUSH2 0x83E JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x881 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x88E PUSH2 0x12EF JUMP JUMPDEST PUSH2 0x898 PUSH1 0x0 PUSH2 0x136D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP1 SLOAD PUSH2 0x8D2 SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x8FE SWAP1 PUSH2 0x201B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x94B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x920 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x94B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x92E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x967 PUSH2 0x960 PUSH2 0xC01 JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1431 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x97C PUSH2 0x976 PUSH2 0xC01 JUMP JUMPDEST DUP4 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x9BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9B2 SWAP1 PUSH2 0x21E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9C7 DUP5 DUP5 DUP5 DUP5 PUSH2 0x159D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9D8 DUP3 PUSH2 0xBB6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E2 PUSH2 0x15F9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xA02 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xA2D JUMP JUMPDEST DUP1 PUSH2 0xA0C DUP5 PUSH2 0x1610 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA1D SWAP3 SWAP2 SWAP1 PUSH2 0x233C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAD1 PUSH2 0x12EF JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xB40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB37 SWAP1 PUSH2 0x23D2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB49 DUP2 PUSH2 0x136D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xBBF DUP2 PUSH2 0x16DE JUMP JUMPDEST PUSH2 0xBFE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF5 SWAP1 PUSH2 0x224E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x5 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC7C DUP4 PUSH2 0x6A9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xD4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD43 SWAP1 PUSH2 0x243E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD55 DUP2 PUSH2 0x1184 JUMP JUMPDEST ISZERO PUSH2 0xD95 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD8C SWAP1 PUSH2 0x24AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x7 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE2D DUP4 PUSH2 0x6A9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xE6F JUMPI POP PUSH2 0xE6E DUP2 DUP6 PUSH2 0xA35 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xEAD JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE95 DUP5 PUSH2 0x4BA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xED6 DUP3 PUSH2 0x6A9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xF2C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF23 SWAP1 PUSH2 0x253C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xF9B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF92 SWAP1 PUSH2 0x25CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xFA6 DUP4 DUP4 DUP4 PUSH2 0x174A JUMP JUMPDEST PUSH2 0xFB1 PUSH1 0x0 DUP3 PUSH2 0xC09 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1070 JUMPI PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1068 SWAP2 SWAP1 PUSH2 0x261D JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x10C0 SWAP2 SWAP1 PUSH2 0x2651 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x117F DUP4 DUP4 DUP4 PUSH2 0x174F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1214 JUMPI POP PUSH2 0xDEAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x1278 DUP3 PUSH2 0x1184 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x12E6 JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x12E5 JUMPI POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST JUMPDEST SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x12F7 PUSH2 0xC01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1315 PUSH2 0x89A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x136B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1362 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x149F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1496 SWAP1 PUSH2 0x275F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x6 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1590 SWAP2 SWAP1 PUSH2 0x1ADD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x15A8 DUP5 DUP5 DUP5 PUSH2 0xEB6 JUMP JUMPDEST PUSH2 0x15B4 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1754 JUMP JUMPDEST PUSH2 0x15F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15EA SWAP1 PUSH2 0x27F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0x161F DUP5 PUSH2 0x18D6 JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x163E JUMPI PUSH2 0x163D PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1670 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x16D3 JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x16C7 JUMPI PUSH2 0x16C6 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x167E JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x3 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x18C9 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x1799 PUSH2 0xC01 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17BB SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2895 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x17F7 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17F4 SWAP2 SWAP1 PUSH2 0x28F6 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1879 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1827 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 0x182C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x1871 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1868 SWAP1 PUSH2 0x27F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x18CE JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x1934 JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x192A JUMPI PUSH2 0x1929 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1971 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1967 JUMPI PUSH2 0x1966 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x19A0 JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1996 JUMPI PUSH2 0x1995 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x19C9 JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x19BF JUMPI PUSH2 0x19BE PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x19EE JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x19E4 JUMPI PUSH2 0x19E3 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x1A11 JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x1A07 JUMPI PUSH2 0x1A06 PUSH2 0x2811 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x1A20 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1A72 DUP2 PUSH2 0x1A3D JUMP JUMPDEST DUP2 EQ PUSH2 0x1A7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1A8F DUP2 PUSH2 0x1A69 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AAB JUMPI PUSH2 0x1AAA PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1AB9 DUP5 DUP3 DUP6 ADD PUSH2 0x1A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1AD7 DUP2 PUSH2 0x1AC2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1AF2 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1ACE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B32 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1B17 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x1B41 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B63 DUP3 PUSH2 0x1AF8 JUMP JUMPDEST PUSH2 0x1B6D DUP2 DUP6 PUSH2 0x1B03 JUMP JUMPDEST SWAP4 POP PUSH2 0x1B7D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x1B86 DUP2 PUSH2 0x1B47 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BAB DUP2 DUP5 PUSH2 0x1B58 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BC6 DUP2 PUSH2 0x1BB3 JUMP JUMPDEST DUP2 EQ PUSH2 0x1BD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1BE3 DUP2 PUSH2 0x1BBD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BFF JUMPI PUSH2 0x1BFE PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1C0D DUP5 DUP3 DUP6 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C41 DUP3 PUSH2 0x1C16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1C51 DUP2 PUSH2 0x1C36 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1C6C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1C48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1C7B DUP2 PUSH2 0x1C36 JUMP JUMPDEST DUP2 EQ PUSH2 0x1C86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1C98 DUP2 PUSH2 0x1C72 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CB5 JUMPI PUSH2 0x1CB4 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1CC3 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1CD4 DUP6 DUP3 DUP7 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1CF7 JUMPI PUSH2 0x1CF6 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1D05 DUP7 DUP3 DUP8 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1D16 DUP7 DUP3 DUP8 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1D27 DUP7 DUP3 DUP8 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D47 JUMPI PUSH2 0x1D46 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1D55 DUP5 DUP3 DUP6 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D67 DUP2 PUSH2 0x1BB3 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1D82 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1D5E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1D91 DUP2 PUSH2 0x1AC2 JUMP JUMPDEST DUP2 EQ PUSH2 0x1D9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1DAE DUP2 PUSH2 0x1D88 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DCB JUMPI PUSH2 0x1DCA PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1DD9 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1DEA DUP6 DUP3 DUP7 ADD PUSH2 0x1D9F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1E36 DUP3 PUSH2 0x1B47 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1E55 JUMPI PUSH2 0x1E54 PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E68 PUSH2 0x1A29 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E74 DUP3 DUP3 PUSH2 0x1E2D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1E94 JUMPI PUSH2 0x1E93 PUSH2 0x1DFE JUMP JUMPDEST JUMPDEST PUSH2 0x1E9D DUP3 PUSH2 0x1B47 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1ECC PUSH2 0x1EC7 DUP5 PUSH2 0x1E79 JUMP JUMPDEST PUSH2 0x1E5E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x1EE8 JUMPI PUSH2 0x1EE7 PUSH2 0x1DF9 JUMP JUMPDEST JUMPDEST PUSH2 0x1EF3 DUP5 DUP3 DUP6 PUSH2 0x1EAA JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1F10 JUMPI PUSH2 0x1F0F PUSH2 0x1DF4 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F20 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1EB9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1F43 JUMPI PUSH2 0x1F42 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1F51 DUP8 DUP3 DUP9 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x1F62 DUP8 DUP3 DUP9 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x1F73 DUP8 DUP3 DUP9 ADD PUSH2 0x1BD4 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F94 JUMPI PUSH2 0x1F93 PUSH2 0x1A38 JUMP JUMPDEST JUMPDEST PUSH2 0x1FA0 DUP8 DUP3 DUP9 ADD PUSH2 0x1EFB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1FC3 JUMPI PUSH2 0x1FC2 PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1FD1 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x1FE2 DUP6 DUP3 DUP7 ADD PUSH2 0x1C89 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x2033 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2046 JUMPI PUSH2 0x2045 PUSH2 0x1FEC JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20A8 PUSH1 0x21 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x20B3 DUP3 PUSH2 0x204C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x20D7 DUP2 PUSH2 0x209B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x213A PUSH1 0x3E DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2145 DUP3 PUSH2 0x20DE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2169 DUP2 PUSH2 0x212D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21CC PUSH1 0x2E DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x21D7 DUP3 PUSH2 0x2170 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x21FB DUP2 PUSH2 0x21BF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2238 PUSH1 0x18 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2243 DUP3 PUSH2 0x2202 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2267 DUP2 PUSH2 0x222B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22CA PUSH1 0x29 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x22D5 DUP3 PUSH2 0x226E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x22F9 DUP2 PUSH2 0x22BD JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2316 DUP3 PUSH2 0x1AF8 JUMP JUMPDEST PUSH2 0x2320 DUP2 DUP6 PUSH2 0x2300 JUMP JUMPDEST SWAP4 POP PUSH2 0x2330 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2348 DUP3 DUP6 PUSH2 0x230B JUMP JUMPDEST SWAP2 POP PUSH2 0x2354 DUP3 DUP5 PUSH2 0x230B JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23BC PUSH1 0x26 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x23C7 DUP3 PUSH2 0x2360 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x23EB DUP2 PUSH2 0x23AF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A206D696E7420746F20746865207A65726F2061646472657373 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2428 PUSH1 0x20 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2433 DUP3 PUSH2 0x23F2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2457 DUP2 PUSH2 0x241B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20746F6B656E20616C7265616479206D696E74656400000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2494 PUSH1 0x1C DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x249F DUP3 PUSH2 0x245E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x24C3 DUP2 PUSH2 0x2487 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2526 PUSH1 0x25 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2531 DUP3 PUSH2 0x24CA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2555 DUP2 PUSH2 0x2519 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25B8 PUSH1 0x24 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x25C3 DUP3 PUSH2 0x255C JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x25E7 DUP2 PUSH2 0x25AB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2628 DUP3 PUSH2 0x1BB3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2633 DUP4 PUSH2 0x1BB3 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x2646 JUMPI PUSH2 0x2645 PUSH2 0x25EE JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265C DUP3 PUSH2 0x1BB3 JUMP JUMPDEST SWAP2 POP PUSH2 0x2667 DUP4 PUSH2 0x1BB3 JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x269C JUMPI PUSH2 0x269B PUSH2 0x25EE JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26DD PUSH1 0x20 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x26E8 DUP3 PUSH2 0x26A7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x270C DUP2 PUSH2 0x26D0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2749 PUSH1 0x19 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x2754 DUP3 PUSH2 0x2713 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2778 DUP2 PUSH2 0x273C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27DB PUSH1 0x32 DUP4 PUSH2 0x1B03 JUMP JUMPDEST SWAP2 POP PUSH2 0x27E6 DUP3 PUSH2 0x277F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x280A DUP2 PUSH2 0x27CE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2867 DUP3 PUSH2 0x2840 JUMP JUMPDEST PUSH2 0x2871 DUP2 DUP6 PUSH2 0x284B JUMP JUMPDEST SWAP4 POP PUSH2 0x2881 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1B14 JUMP JUMPDEST PUSH2 0x288A DUP2 PUSH2 0x1B47 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x28AA PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1C48 JUMP JUMPDEST PUSH2 0x28B7 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1C48 JUMP JUMPDEST PUSH2 0x28C4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1D5E JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x28D6 DUP2 DUP5 PUSH2 0x285C JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x28F0 DUP2 PUSH2 0x1A69 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x290C JUMPI PUSH2 0x290B PUSH2 0x1A33 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x291A DUP5 DUP3 DUP6 ADD PUSH2 0x28E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP6 0xC7 0xD6 ADDMOD LOG0 0xFB 0x21 0xC4 0xE9 CREATE2 0xBD DUP3 POP SWAP14 0xE0 0xDD 0xC1 0xDF DUP6 PUSH1 0x71 SWAP2 DELEGATECALL 0xE PUSH8 0xD6D8CAF3978DED64 PUSH20 0x6F6C634300080D00330000000000000000000000 ","sourceMap":"344:2581:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:300:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3317:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4775:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4314:400;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1311:53:11;;;:::i;:::-;;5452:327:12;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5845:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;901:406:11;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;582:264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1824:101:0;;;:::i;:::-;;1201:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3479:102:12;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5009:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6090:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3647:276;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2074:198:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2417:300:12;2519:4;2569:25;2554:40;;;:11;:40;;;;:104;;;;2625:33;2610:48;;;:11;:48;;;;2554:104;:156;;;;2674:36;2698:11;2674:23;:36::i;:::-;2554:156;2535:175;;2417:300;;;:::o;3317:98::-;3371:13;3403:5;3396:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3317:98;:::o;4775:167::-;4851:7;4870:23;4885:7;4870:14;:23::i;:::-;4911:15;:24;4927:7;4911:24;;;;;;;;;;;;;;;;;;;;;4904:31;;4775:167;;;:::o;4314:400::-;4394:13;4410:16;4418:7;4410;:16::i;:::-;4394:32;;4450:5;4444:11;;:2;:11;;;4436:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4541:5;4525:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;4550:37;4567:5;4574:12;:10;:12::i;:::-;4550:16;:37::i;:::-;4525:62;4504:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;4686:21;4695:2;4699:7;4686:8;:21::i;:::-;4384:330;4314:400;;:::o;1311:53:11:-;1340:19;1346:12;:10;:12::i;:::-;1340:5;:19::i;:::-;1311:53::o;5452:327:12:-;5641:41;5660:12;:10;:12::i;:::-;5674:7;5641:18;:41::i;:::-;5633:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;5744:28;5754:4;5760:2;5764:7;5744:9;:28::i;:::-;5452:327;;;:::o;5845:179::-;5978:39;5995:4;6001:2;6005:7;5978:39;;;;;;;;;;;;:16;:39::i;:::-;5845:179;;;:::o;901:406:11:-;965:7;988:23;1003:7;988:14;:23::i;:::-;980:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;1174:13;1190:7;:16;1198:7;1190:16;;;;;;;;;;;;;;;;;;;;;1174:32;;1233:1;1216:19;;:5;:19;;;1212:73;;1269:7;1245:33;;1212:73;1297:5;1290:12;;;901:406;;;:::o;582:264::-;646:7;686:1;669:19;;:5;:19;;;661:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;764:1;744:9;:16;754:5;744:16;;;;;;;;;;;;;;;;:21;:44;;;;;769:19;782:5;769:12;:19::i;:::-;744:44;740:73;;;805:1;798:8;;;;740:73;825:9;:16;835:5;825:16;;;;;;;;;;;;;;;;818:23;;582:264;;;;:::o;1824:101:0:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1201:85::-;1247:7;1273:6;;;;;;;;;;;1266:13;;1201:85;:::o;3479:102:12:-;3535:13;3567:7;3560:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3479:102;:::o;5009:153::-;5103:52;5122:12;:10;:12::i;:::-;5136:8;5146;5103:18;:52::i;:::-;5009:153;;:::o;6090:315::-;6258:41;6277:12;:10;:12::i;:::-;6291:7;6258:18;:41::i;:::-;6250:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;6360:38;6374:4;6380:2;6384:7;6393:4;6360:13;:38::i;:::-;6090:315;;;;:::o;3647:276::-;3720:13;3745:23;3760:7;3745:14;:23::i;:::-;3779:21;3803:10;:8;:10::i;:::-;3779:34;;3854:1;3836:7;3830:21;:25;:86;;;;;;;;;;;;;;;;;3882:7;3891:18;:7;:16;:18::i;:::-;3865:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3830:86;3823:93;;;3647:276;;;:::o;5228:162::-;5325:4;5348:18;:25;5367:5;5348:25;;;;;;;;;;;;;;;:35;5374:8;5348:35;;;;;;;;;;;;;;;;;;;;;;;;;5341:42;;5228:162;;;;:::o;2074:198:0:-;1094:13;:11;:13::i;:::-;2182:1:::1;2162:22;;:8;:22;;::::0;2154:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;829:155:7:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;12550:133:12:-;12631:16;12639:7;12631;:16::i;:::-;12623:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12550:133;:::o;640:96:5:-;693:7;719:10;712:17;;640:96;:::o;11859:164:12:-;11960:2;11933:15;:24;11949:7;11933:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12008:7;12004:2;11977:39;;11986:16;11994:7;11986;:16::i;:::-;11977:39;;;;;;;;;;;;11859:164;;:::o;1368:418:11:-;1450:15;1484:8;1468:26;;1450:44;;1529:1;1509:22;;:8;:22;;;1501:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1583:23;1598:7;1583:14;:23::i;:::-;1582:24;1574:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;1699:4;1674:13;:22;1688:7;1674:22;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1773:7;1763:8;1742:39;;1759:1;1742:39;;;;;;;;;;;;1410:376;1368:418;:::o;8157:254:12:-;8250:4;8266:13;8282:16;8290:7;8282;:16::i;:::-;8266:32;;8327:5;8316:16;;:7;:16;;;:52;;;;8336:32;8353:5;8360:7;8336:16;:32::i;:::-;8316:52;:87;;;;8396:7;8372:31;;:20;8384:7;8372:11;:20::i;:::-;:31;;;8316:87;8308:96;;;8157:254;;;;:::o;1790:656:11:-;1920:4;1900:24;;:16;1908:7;1900;:16::i;:::-;:24;;;1892:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1994:1;1980:16;;:2;:16;;;1972:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2044:39;2065:4;2071:2;2075:7;2044:20;:39::i;:::-;2137:29;2154:1;2158:7;2137:8;:29::i;:::-;2268:1;2240:30;;:7;:16;2248:7;2240:16;;;;;;;;;;;;;;;;;;;;;:30;;;2236:71;;2299:1;2280:9;:15;2290:4;2280:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;2236:71;2329:1;2312:9;:13;2322:2;2312:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;2355:2;2336:7;:16;2344:7;2336:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2388:7;2384:2;2369:27;;2378:4;2369:27;;;;;;;;;;;;2403:38;2423:4;2429:2;2433:7;2403:19;:38::i;:::-;1790:656;;;:::o;2727:196::-;2791:4;2858:13;:22;2872:7;2858:22;;;;;;;;;;;;;;;;;;;;;:59;;;;;1554:42:12;2884:33:11;;:7;:16;2892:7;2884:16;;;;;;;;;;;;;;;;;;;;;:33;;;;2858:59;2850:68;;2727:196;;;:::o;2450:273::-;2510:4;2522:20;2561:5;2545:23;;2522:46;;2574:20;2597:7;:21;2605:12;2597:21;;;;;;;;;;;;;;;;;;;;;2574:44;;2632:28;2647:12;2632:14;:28::i;:::-;:85;;;;;2681:5;2665:21;;:12;:21;;;:51;;;;2714:1;2690:26;;:12;:26;;;2665:51;2632:85;2624:94;;;;2450:273;;;:::o;1359:130:0:-;1433:12;:10;:12::i;:::-;1422:23;;:7;:5;:7::i;:::-;:23;;;1414:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1359:130::o;2426:187::-;2499:16;2518:6;;;;;;;;;;;2499:25;;2543:8;2534:6;;:17;;;;;;;;;;;;;;;;;;2597:8;2566:40;;2587:8;2566:40;;;;;;;;;;;;2489:124;2426:187;:::o;12159:307:12:-;12309:8;12300:17;;:5;:17;;;12292:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12395:8;12357:18;:25;12376:5;12357:25;;;;;;;;;;;;;;;:35;12383:8;12357:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12440:8;12418:41;;12433:5;12418:41;;;12450:8;12418:41;;;;;;:::i;:::-;;;;;;;;12159:307;;;:::o;7266:305::-;7416:28;7426:4;7432:2;7436:7;7416:9;:28::i;:::-;7462:47;7485:4;7491:2;7495:7;7504:4;7462:22;:47::i;:::-;7454:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7266:305;;;;:::o;4165:92::-;4216:13;4241:9;;;;;;;;;;;;;;4165:92;:::o;447:696:6:-;503:13;552:14;589:1;569:17;580:5;569:10;:17::i;:::-;:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;604:41;;659:11;785:6;781:2;777:15;769:6;765:28;758:35;;820:280;827:4;820:280;;;851:5;;;;;;;;990:8;985:2;978:5;974:14;969:30;964:3;956:44;1044:2;1035:11;;;;;;:::i;:::-;;;;;1077:1;1068:5;:10;820:280;1064:21;820:280;1120:6;1113:13;;;;;447:696;;;:::o;7874:125:12:-;7939:4;7990:1;7962:30;;:7;:16;7970:7;7962:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7955:37;;7874:125;;;:::o;14625:122::-;;;;:::o;15119:121::-;;;;:::o;13235:834::-;13384:4;13421:1;13404:2;:14;;;:18;13400:663;;;13458:2;13442:36;;;13479:12;:10;:12::i;:::-;13493:4;13499:7;13508:4;13442:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13438:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13697:1;13680:6;:13;:18;13676:321;;13722:60;;;;;;;;;;:::i;:::-;;;;;;;;13676:321;13949:6;13943:13;13934:6;13930:2;13926:15;13919:38;13438:573;13573:41;;;13563:51;;;:6;:51;;;;13556:58;;;;;13400:663;14048:4;14041:11;;13235:834;;;;;;;:::o;10139:916:9:-;10192:7;10211:14;10228:1;10211:18;;10276:8;10267:5;:17;10263:103;;10313:8;10304:17;;;;;;:::i;:::-;;;;;10349:2;10339:12;;;;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;;;;:::i;:::-;;;;;10465:2;10455:12;;;;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;;;;:::i;:::-;;;;;10581:2;10571:12;;;;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;;;;:::i;:::-;;;;;10695:1;10685:11;;;;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;;;;:::i;:::-;;;;;10808:1;10798:11;;;;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;;;;:::i;:::-;;;;;10921:1;10911:11;;;;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;;;;10950:66;11042:6;11035:13;;;10139:916;;;:::o;7:75:13:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:619::-;5015:6;5023;5031;5080:2;5068:9;5059:7;5055:23;5051:32;5048:119;;;5086:79;;:::i;:::-;5048:119;5206:1;5231:53;5276:7;5267:6;5256:9;5252:22;5231:53;:::i;:::-;5221:63;;5177:117;5333:2;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5304:118;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;4938:619;;;;;:::o;5563:329::-;5622:6;5671:2;5659:9;5650:7;5646:23;5642:32;5639:119;;;5677:79;;:::i;:::-;5639:119;5797:1;5822:53;5867:7;5858:6;5847:9;5843:22;5822:53;:::i;:::-;5812:63;;5768:117;5563:329;;;;:::o;5898:118::-;5985:24;6003:5;5985:24;:::i;:::-;5980:3;5973:37;5898:118;;:::o;6022:222::-;6115:4;6153:2;6142:9;6138:18;6130:26;;6166:71;6234:1;6223:9;6219:17;6210:6;6166:71;:::i;:::-;6022:222;;;;:::o;6250:116::-;6320:21;6335:5;6320:21;:::i;:::-;6313:5;6310:32;6300:60;;6356:1;6353;6346:12;6300:60;6250:116;:::o;6372:133::-;6415:5;6453:6;6440:20;6431:29;;6469:30;6493:5;6469:30;:::i;:::-;6372:133;;;;:::o;6511:468::-;6576:6;6584;6633:2;6621:9;6612:7;6608:23;6604:32;6601:119;;;6639:79;;:::i;:::-;6601:119;6759:1;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6730:117;6886:2;6912:50;6954:7;6945:6;6934:9;6930:22;6912:50;:::i;:::-;6902:60;;6857:115;6511:468;;;;;:::o;6985:117::-;7094:1;7091;7084:12;7108:117;7217:1;7214;7207:12;7231:180;7279:77;7276:1;7269:88;7376:4;7373:1;7366:15;7400:4;7397:1;7390:15;7417:281;7500:27;7522:4;7500:27;:::i;:::-;7492:6;7488:40;7630:6;7618:10;7615:22;7594:18;7582:10;7579:34;7576:62;7573:88;;;7641:18;;:::i;:::-;7573:88;7681:10;7677:2;7670:22;7460:238;7417:281;;:::o;7704:129::-;7738:6;7765:20;;:::i;:::-;7755:30;;7794:33;7822:4;7814:6;7794:33;:::i;:::-;7704:129;;;:::o;7839:307::-;7900:4;7990:18;7982:6;7979:30;7976:56;;;8012:18;;:::i;:::-;7976:56;8050:29;8072:6;8050:29;:::i;:::-;8042:37;;8134:4;8128;8124:15;8116:23;;7839:307;;;:::o;8152:154::-;8236:6;8231:3;8226;8213:30;8298:1;8289:6;8284:3;8280:16;8273:27;8152:154;;;:::o;8312:410::-;8389:5;8414:65;8430:48;8471:6;8430:48;:::i;:::-;8414:65;:::i;:::-;8405:74;;8502:6;8495:5;8488:21;8540:4;8533:5;8529:16;8578:3;8569:6;8564:3;8560:16;8557:25;8554:112;;;8585:79;;:::i;:::-;8554:112;8675:41;8709:6;8704:3;8699;8675:41;:::i;:::-;8395:327;8312:410;;;;;:::o;8741:338::-;8796:5;8845:3;8838:4;8830:6;8826:17;8822:27;8812:122;;8853:79;;:::i;:::-;8812:122;8970:6;8957:20;8995:78;9069:3;9061:6;9054:4;9046:6;9042:17;8995:78;:::i;:::-;8986:87;;8802:277;8741:338;;;;:::o;9085:943::-;9180:6;9188;9196;9204;9253:3;9241:9;9232:7;9228:23;9224:33;9221:120;;;9260:79;;:::i;:::-;9221:120;9380:1;9405:53;9450:7;9441:6;9430:9;9426:22;9405:53;:::i;:::-;9395:63;;9351:117;9507:2;9533:53;9578:7;9569:6;9558:9;9554:22;9533:53;:::i;:::-;9523:63;;9478:118;9635:2;9661:53;9706:7;9697:6;9686:9;9682:22;9661:53;:::i;:::-;9651:63;;9606:118;9791:2;9780:9;9776:18;9763:32;9822:18;9814:6;9811:30;9808:117;;;9844:79;;:::i;:::-;9808:117;9949:62;10003:7;9994:6;9983:9;9979:22;9949:62;:::i;:::-;9939:72;;9734:287;9085:943;;;;;;;:::o;10034:474::-;10102:6;10110;10159:2;10147:9;10138:7;10134:23;10130:32;10127:119;;;10165:79;;:::i;:::-;10127:119;10285:1;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;:::i;:::-;10300:63;;10256:117;10412:2;10438:53;10483:7;10474:6;10463:9;10459:22;10438:53;:::i;:::-;10428:63;;10383:118;10034:474;;;;;:::o;10514:180::-;10562:77;10559:1;10552:88;10659:4;10656:1;10649:15;10683:4;10680:1;10673:15;10700:320;10744:6;10781:1;10775:4;10771:12;10761:22;;10828:1;10822:4;10818:12;10849:18;10839:81;;10905:4;10897:6;10893:17;10883:27;;10839:81;10967:2;10959:6;10956:14;10936:18;10933:38;10930:84;;10986:18;;:::i;:::-;10930:84;10751:269;10700:320;;;:::o;11026:220::-;11166:34;11162:1;11154:6;11150:14;11143:58;11235:3;11230:2;11222:6;11218:15;11211:28;11026:220;:::o;11252:366::-;11394:3;11415:67;11479:2;11474:3;11415:67;:::i;:::-;11408:74;;11491:93;11580:3;11491:93;:::i;:::-;11609:2;11604:3;11600:12;11593:19;;11252:366;;;:::o;11624:419::-;11790:4;11828:2;11817:9;11813:18;11805:26;;11877:9;11871:4;11867:20;11863:1;11852:9;11848:17;11841:47;11905:131;12031:4;11905:131;:::i;:::-;11897:139;;11624:419;;;:::o;12049:249::-;12189:34;12185:1;12177:6;12173:14;12166:58;12258:32;12253:2;12245:6;12241:15;12234:57;12049:249;:::o;12304:366::-;12446:3;12467:67;12531:2;12526:3;12467:67;:::i;:::-;12460:74;;12543:93;12632:3;12543:93;:::i;:::-;12661:2;12656:3;12652:12;12645:19;;12304:366;;;:::o;12676:419::-;12842:4;12880:2;12869:9;12865:18;12857:26;;12929:9;12923:4;12919:20;12915:1;12904:9;12900:17;12893:47;12957:131;13083:4;12957:131;:::i;:::-;12949:139;;12676:419;;;:::o;13101:233::-;13241:34;13237:1;13229:6;13225:14;13218:58;13310:16;13305:2;13297:6;13293:15;13286:41;13101:233;:::o;13340:366::-;13482:3;13503:67;13567:2;13562:3;13503:67;:::i;:::-;13496:74;;13579:93;13668:3;13579:93;:::i;:::-;13697:2;13692:3;13688:12;13681:19;;13340:366;;;:::o;13712:419::-;13878:4;13916:2;13905:9;13901:18;13893:26;;13965:9;13959:4;13955:20;13951:1;13940:9;13936:17;13929:47;13993:131;14119:4;13993:131;:::i;:::-;13985:139;;13712:419;;;:::o;14137:174::-;14277:26;14273:1;14265:6;14261:14;14254:50;14137:174;:::o;14317:366::-;14459:3;14480:67;14544:2;14539:3;14480:67;:::i;:::-;14473:74;;14556:93;14645:3;14556:93;:::i;:::-;14674:2;14669:3;14665:12;14658:19;;14317:366;;;:::o;14689:419::-;14855:4;14893:2;14882:9;14878:18;14870:26;;14942:9;14936:4;14932:20;14928:1;14917:9;14913:17;14906:47;14970:131;15096:4;14970:131;:::i;:::-;14962:139;;14689:419;;;:::o;15114:228::-;15254:34;15250:1;15242:6;15238:14;15231:58;15323:11;15318:2;15310:6;15306:15;15299:36;15114:228;:::o;15348:366::-;15490:3;15511:67;15575:2;15570:3;15511:67;:::i;:::-;15504:74;;15587:93;15676:3;15587:93;:::i;:::-;15705:2;15700:3;15696:12;15689:19;;15348:366;;;:::o;15720:419::-;15886:4;15924:2;15913:9;15909:18;15901:26;;15973:9;15967:4;15963:20;15959:1;15948:9;15944:17;15937:47;16001:131;16127:4;16001:131;:::i;:::-;15993:139;;15720:419;;;:::o;16145:148::-;16247:11;16284:3;16269:18;;16145:148;;;;:::o;16299:377::-;16405:3;16433:39;16466:5;16433:39;:::i;:::-;16488:89;16570:6;16565:3;16488:89;:::i;:::-;16481:96;;16586:52;16631:6;16626:3;16619:4;16612:5;16608:16;16586:52;:::i;:::-;16663:6;16658:3;16654:16;16647:23;;16409:267;16299:377;;;;:::o;16682:435::-;16862:3;16884:95;16975:3;16966:6;16884:95;:::i;:::-;16877:102;;16996:95;17087:3;17078:6;16996:95;:::i;:::-;16989:102;;17108:3;17101:10;;16682:435;;;;;:::o;17123:225::-;17263:34;17259:1;17251:6;17247:14;17240:58;17332:8;17327:2;17319:6;17315:15;17308:33;17123:225;:::o;17354:366::-;17496:3;17517:67;17581:2;17576:3;17517:67;:::i;:::-;17510:74;;17593:93;17682:3;17593:93;:::i;:::-;17711:2;17706:3;17702:12;17695:19;;17354:366;;;:::o;17726:419::-;17892:4;17930:2;17919:9;17915:18;17907:26;;17979:9;17973:4;17969:20;17965:1;17954:9;17950:17;17943:47;18007:131;18133:4;18007:131;:::i;:::-;17999:139;;17726:419;;;:::o;18151:182::-;18291:34;18287:1;18279:6;18275:14;18268:58;18151:182;:::o;18339:366::-;18481:3;18502:67;18566:2;18561:3;18502:67;:::i;:::-;18495:74;;18578:93;18667:3;18578:93;:::i;:::-;18696:2;18691:3;18687:12;18680:19;;18339:366;;;:::o;18711:419::-;18877:4;18915:2;18904:9;18900:18;18892:26;;18964:9;18958:4;18954:20;18950:1;18939:9;18935:17;18928:47;18992:131;19118:4;18992:131;:::i;:::-;18984:139;;18711:419;;;:::o;19136:178::-;19276:30;19272:1;19264:6;19260:14;19253:54;19136:178;:::o;19320:366::-;19462:3;19483:67;19547:2;19542:3;19483:67;:::i;:::-;19476:74;;19559:93;19648:3;19559:93;:::i;:::-;19677:2;19672:3;19668:12;19661:19;;19320:366;;;:::o;19692:419::-;19858:4;19896:2;19885:9;19881:18;19873:26;;19945:9;19939:4;19935:20;19931:1;19920:9;19916:17;19909:47;19973:131;20099:4;19973:131;:::i;:::-;19965:139;;19692:419;;;:::o;20117:224::-;20257:34;20253:1;20245:6;20241:14;20234:58;20326:7;20321:2;20313:6;20309:15;20302:32;20117:224;:::o;20347:366::-;20489:3;20510:67;20574:2;20569:3;20510:67;:::i;:::-;20503:74;;20586:93;20675:3;20586:93;:::i;:::-;20704:2;20699:3;20695:12;20688:19;;20347:366;;;:::o;20719:419::-;20885:4;20923:2;20912:9;20908:18;20900:26;;20972:9;20966:4;20962:20;20958:1;20947:9;20943:17;20936:47;21000:131;21126:4;21000:131;:::i;:::-;20992:139;;20719:419;;;:::o;21144:223::-;21284:34;21280:1;21272:6;21268:14;21261:58;21353:6;21348:2;21340:6;21336:15;21329:31;21144:223;:::o;21373:366::-;21515:3;21536:67;21600:2;21595:3;21536:67;:::i;:::-;21529:74;;21612:93;21701:3;21612:93;:::i;:::-;21730:2;21725:3;21721:12;21714:19;;21373:366;;;:::o;21745:419::-;21911:4;21949:2;21938:9;21934:18;21926:26;;21998:9;21992:4;21988:20;21984:1;21973:9;21969:17;21962:47;22026:131;22152:4;22026:131;:::i;:::-;22018:139;;21745:419;;;:::o;22170:180::-;22218:77;22215:1;22208:88;22315:4;22312:1;22305:15;22339:4;22336:1;22329:15;22356:191;22396:4;22416:20;22434:1;22416:20;:::i;:::-;22411:25;;22450:20;22468:1;22450:20;:::i;:::-;22445:25;;22489:1;22486;22483:8;22480:34;;;22494:18;;:::i;:::-;22480:34;22539:1;22536;22532:9;22524:17;;22356:191;;;;:::o;22553:305::-;22593:3;22612:20;22630:1;22612:20;:::i;:::-;22607:25;;22646:20;22664:1;22646:20;:::i;:::-;22641:25;;22800:1;22732:66;22728:74;22725:1;22722:81;22719:107;;;22806:18;;:::i;:::-;22719:107;22850:1;22847;22843:9;22836:16;;22553:305;;;;:::o;22864:182::-;23004:34;23000:1;22992:6;22988:14;22981:58;22864:182;:::o;23052:366::-;23194:3;23215:67;23279:2;23274:3;23215:67;:::i;:::-;23208:74;;23291:93;23380:3;23291:93;:::i;:::-;23409:2;23404:3;23400:12;23393:19;;23052:366;;;:::o;23424:419::-;23590:4;23628:2;23617:9;23613:18;23605:26;;23677:9;23671:4;23667:20;23663:1;23652:9;23648:17;23641:47;23705:131;23831:4;23705:131;:::i;:::-;23697:139;;23424:419;;;:::o;23849:175::-;23989:27;23985:1;23977:6;23973:14;23966:51;23849:175;:::o;24030:366::-;24172:3;24193:67;24257:2;24252:3;24193:67;:::i;:::-;24186:74;;24269:93;24358:3;24269:93;:::i;:::-;24387:2;24382:3;24378:12;24371:19;;24030:366;;;:::o;24402:419::-;24568:4;24606:2;24595:9;24591:18;24583:26;;24655:9;24649:4;24645:20;24641:1;24630:9;24626:17;24619:47;24683:131;24809:4;24683:131;:::i;:::-;24675:139;;24402:419;;;:::o;24827:237::-;24967:34;24963:1;24955:6;24951:14;24944:58;25036:20;25031:2;25023:6;25019:15;25012:45;24827:237;:::o;25070:366::-;25212:3;25233:67;25297:2;25292:3;25233:67;:::i;:::-;25226:74;;25309:93;25398:3;25309:93;:::i;:::-;25427:2;25422:3;25418:12;25411:19;;25070:366;;;:::o;25442:419::-;25608:4;25646:2;25635:9;25631:18;25623:26;;25695:9;25689:4;25685:20;25681:1;25670:9;25666:17;25659:47;25723:131;25849:4;25723:131;:::i;:::-;25715:139;;25442:419;;;:::o;25867:180::-;25915:77;25912:1;25905:88;26012:4;26009:1;26002:15;26036:4;26033:1;26026:15;26053:98;26104:6;26138:5;26132:12;26122:22;;26053:98;;;:::o;26157:168::-;26240:11;26274:6;26269:3;26262:19;26314:4;26309:3;26305:14;26290:29;;26157:168;;;;:::o;26331:360::-;26417:3;26445:38;26477:5;26445:38;:::i;:::-;26499:70;26562:6;26557:3;26499:70;:::i;:::-;26492:77;;26578:52;26623:6;26618:3;26611:4;26604:5;26600:16;26578:52;:::i;:::-;26655:29;26677:6;26655:29;:::i;:::-;26650:3;26646:39;26639:46;;26421:270;26331:360;;;;:::o;26697:640::-;26892:4;26930:3;26919:9;26915:19;26907:27;;26944:71;27012:1;27001:9;26997:17;26988:6;26944:71;:::i;:::-;27025:72;27093:2;27082:9;27078:18;27069:6;27025:72;:::i;:::-;27107;27175:2;27164:9;27160:18;27151:6;27107:72;:::i;:::-;27226:9;27220:4;27216:20;27211:2;27200:9;27196:18;27189:48;27254:76;27325:4;27316:6;27254:76;:::i;:::-;27246:84;;26697:640;;;;;;;:::o;27343:141::-;27399:5;27430:6;27424:13;27415:22;;27446:32;27472:5;27446:32;:::i;:::-;27343:141;;;;:::o;27490:349::-;27559:6;27608:2;27596:9;27587:7;27583:23;27579:32;27576:119;;;27614:79;;:::i;:::-;27576:119;27734:1;27759:63;27814:7;27805:6;27794:9;27790:22;27759:63;:::i;:::-;27749:73;;27705:127;27490:349;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"2117000","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"12030","getApproved(uint256)":"5257","isApprovedForAll(address,address)":"infinite","mint()":"31089","name()":"infinite","owner()":"2589","ownerOf(uint256)":"7544","renounceOwnership()":"30443","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"infinite","supportsInterface(bytes4)":"797","symbol()":"infinite","tokenURI(uint256)":"3424","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"30854"},"internal":{"_hasOwnToken(address)":"6880","_isTokenActive(uint256)":"4508","_mint(address)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","mint()":"1249c58b","name()":"06fdde03","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","renounceOwnership()":"715018a6","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"todo...\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"Overrides {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"Overrides {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC721All.sol\":\"ERC721All\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/ERC721All.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Written by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity 0.8.13;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\nimport \\\"./lib/ERC721.sol\\\";\\n\\n/**\\n * @dev todo...\\n */\\ncontract ERC721All is Ownable, ERC721 {\\n mapping(uint256 => bool) internal _activeTokens;\\n\\n constructor(string memory name, string memory symbol) ERC721(name, symbol) Ownable() {}\\n\\n /**\\n * @dev Overrides {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n if (_balances[owner] == 0 && _hasOwnToken(owner)) {\\n return 1;\\n }\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev Overrides {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view override returns (address) {\\n require(_isTokenActive(tokenId), \\\"ERC721: invalid token ID\\\");\\n\\n // If token has been transfered then _owners will be populated,\\n // otherwise the token ID represents the initial owner\\n address owner = _owners[tokenId];\\n if (owner == address(0)) {\\n owner = address(uint160(tokenId));\\n }\\n return owner;\\n }\\n\\n function mint() public {\\n _mint(_msgSender());\\n }\\n\\n function _mint(address receiver) internal {\\n // Token ID == Minter Address\\n uint256 tokenId = uint256(uint160(receiver));\\n\\n require(receiver != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_isTokenActive(tokenId), \\\"ERC721: token already minted\\\");\\n\\n // Mark Token as Active\\n _activeTokens[tokenId] = true;\\n\\n // Fire Transfer Event\\n emit Transfer(address(0), receiver, tokenId);\\n }\\n\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal override {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n // Only if token has previously been transfered after mint\\n if (_owners[tokenId] != address(0)) {\\n _balances[from] -= 1;\\n }\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n function _hasOwnToken(address owner) internal view returns (bool) {\\n uint256 ownerTokenId = uint256(uint160(owner));\\n address currentOwner = _owners[ownerTokenId];\\n return (_isTokenActive(ownerTokenId) && (currentOwner == owner || currentOwner == address(0)));\\n }\\n\\n function _isTokenActive(uint256 tokenId) internal view returns (bool) {\\n // Check if Token is Active and Not Burned\\n return (_activeTokens[tokenId] && _owners[tokenId] != _NULL_ADDRESS);\\n }\\n}\\n\",\"keccak256\":\"0x2f8f19d8616675c611ea23b3d5f1fbb7736a9c67ef22ded2df0883515454cda3\",\"license\":\"MIT\"},\"contracts/lib/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n *\\n * NOTE:\\n * The only changes made here are:\\n * - change scope of \\\"_owners\\\" from private to internal\\n * - change scope of \\\"_balances\\\" from private to internal\\n * - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\"\\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) internal _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) internal _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _owners[tokenId];\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _owners[tokenId] != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId);\\n\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n // Clear approvals\\n _approve(address(0), tokenId);\\n\\n _balances[owner] -= 1;\\n // Prevent re-assigning the token back to the Pre-Mint Receiver\\n _owners[tokenId] = _NULL_ADDRESS;\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.code.length > 0) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n * transferred to `to`.\\n * - When `from` is zero, `tokenId` will be minted for `to`.\\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x726960336df673d5fd509dde21ba3bed24645291d201f74762b945fe4d5aa016\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":7,"contract":"contracts/ERC721All.sol:ERC721All","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":2200,"contract":"contracts/ERC721All.sol:ERC721All","label":"_name","offset":0,"slot":"1","type":"t_string_storage"},{"astId":2202,"contract":"contracts/ERC721All.sol:ERC721All","label":"_symbol","offset":0,"slot":"2","type":"t_string_storage"},{"astId":2206,"contract":"contracts/ERC721All.sol:ERC721All","label":"_owners","offset":0,"slot":"3","type":"t_mapping(t_uint256,t_address)"},{"astId":2210,"contract":"contracts/ERC721All.sol:ERC721All","label":"_balances","offset":0,"slot":"4","type":"t_mapping(t_address,t_uint256)"},{"astId":2214,"contract":"contracts/ERC721All.sol:ERC721All","label":"_tokenApprovals","offset":0,"slot":"5","type":"t_mapping(t_uint256,t_address)"},{"astId":2220,"contract":"contracts/ERC721All.sol:ERC721All","label":"_operatorApprovals","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":1874,"contract":"contracts/ERC721All.sol:ERC721All","label":"_activeTokens","offset":0,"slot":"7","type":"t_mapping(t_uint256,t_bool)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_bool)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bool)","numberOfBytes":"32","value":"t_bool"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/lib/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}. NOTE: The only changes made here are: - change scope of \"_owners\" from private to internal - change scope of \"_balances\" from private to internal - remove \"ERC721\" scope-resolution from \"ownerOf\" calls in order to override \"ownerOf\" - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)","kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_2237":{"entryPoint":null,"id":2237,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_string_memory_ptr_fromMemory":{"entryPoint":576,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_string_memory_ptr_fromMemory":{"entryPoint":651,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":702,"id":null,"parameterSlots":2,"returnSlots":2},"allocate_memory":{"entryPoint":437,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":289,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":468,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory":{"entryPoint":522,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":882,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":383,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x22":{"entryPoint":835,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":336,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":309,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":314,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":304,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":299,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":319,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4093:13","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:13","statements":[{"nodeType":"YulAssignment","src":"57:19:13","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:13","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:13"},"nodeType":"YulFunctionCall","src":"67:9:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:13"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:13","type":""}],"src":"7:75:13"},{"body":{"nodeType":"YulBlock","src":"177:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:13"},"nodeType":"YulFunctionCall","src":"187:12:13"},"nodeType":"YulExpressionStatement","src":"187:12:13"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:13"},{"body":{"nodeType":"YulBlock","src":"300:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:13"},"nodeType":"YulFunctionCall","src":"310:12:13"},"nodeType":"YulExpressionStatement","src":"310:12:13"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:13"},{"body":{"nodeType":"YulBlock","src":"423:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"440:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"443:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"433:6:13"},"nodeType":"YulFunctionCall","src":"433:12:13"},"nodeType":"YulExpressionStatement","src":"433:12:13"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"334:117:13"},{"body":{"nodeType":"YulBlock","src":"546:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:13"},"nodeType":"YulFunctionCall","src":"556:12:13"},"nodeType":"YulExpressionStatement","src":"556:12:13"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"457:117:13"},{"body":{"nodeType":"YulBlock","src":"628:54:13","statements":[{"nodeType":"YulAssignment","src":"638:38:13","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"656:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"663:2:13","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"652:3:13"},"nodeType":"YulFunctionCall","src":"652:14:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:2:13","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"668:3:13"},"nodeType":"YulFunctionCall","src":"668:7:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"648:3:13"},"nodeType":"YulFunctionCall","src":"648:28:13"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"638:6:13"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"611:5:13","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"621:6:13","type":""}],"src":"580:102:13"},{"body":{"nodeType":"YulBlock","src":"716:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"733:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"736:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"726:6:13"},"nodeType":"YulFunctionCall","src":"726:88:13"},"nodeType":"YulExpressionStatement","src":"726:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"830:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"833:4:13","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"823:6:13"},"nodeType":"YulFunctionCall","src":"823:15:13"},"nodeType":"YulExpressionStatement","src":"823:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"854:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"857:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"847:6:13"},"nodeType":"YulFunctionCall","src":"847:15:13"},"nodeType":"YulExpressionStatement","src":"847:15:13"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"688:180:13"},{"body":{"nodeType":"YulBlock","src":"917:238:13","statements":[{"nodeType":"YulVariableDeclaration","src":"927:58:13","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"949:6:13"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"979:4:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"957:21:13"},"nodeType":"YulFunctionCall","src":"957:27:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"945:3:13"},"nodeType":"YulFunctionCall","src":"945:40:13"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"931:10:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1096:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1098:16:13"},"nodeType":"YulFunctionCall","src":"1098:18:13"},"nodeType":"YulExpressionStatement","src":"1098:18:13"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1039:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"1051:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1036:2:13"},"nodeType":"YulFunctionCall","src":"1036:34:13"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1075:10:13"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1087:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1072:2:13"},"nodeType":"YulFunctionCall","src":"1072:22:13"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1033:2:13"},"nodeType":"YulFunctionCall","src":"1033:62:13"},"nodeType":"YulIf","src":"1030:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1134:2:13","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1138:10:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1127:6:13"},"nodeType":"YulFunctionCall","src":"1127:22:13"},"nodeType":"YulExpressionStatement","src":"1127:22:13"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"903:6:13","type":""},{"name":"size","nodeType":"YulTypedName","src":"911:4:13","type":""}],"src":"874:281:13"},{"body":{"nodeType":"YulBlock","src":"1202:88:13","statements":[{"nodeType":"YulAssignment","src":"1212:30:13","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1222:18:13"},"nodeType":"YulFunctionCall","src":"1222:20:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1212:6:13"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1271:6:13"},{"name":"size","nodeType":"YulIdentifier","src":"1279:4:13"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1251:19:13"},"nodeType":"YulFunctionCall","src":"1251:33:13"},"nodeType":"YulExpressionStatement","src":"1251:33:13"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1186:4:13","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1195:6:13","type":""}],"src":"1161:129:13"},{"body":{"nodeType":"YulBlock","src":"1363:241:13","statements":[{"body":{"nodeType":"YulBlock","src":"1468:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1470:16:13"},"nodeType":"YulFunctionCall","src":"1470:18:13"},"nodeType":"YulExpressionStatement","src":"1470:18:13"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1440:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"1448:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1437:2:13"},"nodeType":"YulFunctionCall","src":"1437:30:13"},"nodeType":"YulIf","src":"1434:56:13"},{"nodeType":"YulAssignment","src":"1500:37:13","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1530:6:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1508:21:13"},"nodeType":"YulFunctionCall","src":"1508:29:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1500:4:13"}]},{"nodeType":"YulAssignment","src":"1574:23:13","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1586:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"1592:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1582:3:13"},"nodeType":"YulFunctionCall","src":"1582:15:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1574:4:13"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"1347:6:13","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"1358:4:13","type":""}],"src":"1296:308:13"},{"body":{"nodeType":"YulBlock","src":"1659:258:13","statements":[{"nodeType":"YulVariableDeclaration","src":"1669:10:13","value":{"kind":"number","nodeType":"YulLiteral","src":"1678:1:13","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1673:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1738:63:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1763:3:13"},{"name":"i","nodeType":"YulIdentifier","src":"1768:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1759:3:13"},"nodeType":"YulFunctionCall","src":"1759:11:13"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1782:3:13"},{"name":"i","nodeType":"YulIdentifier","src":"1787:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1778:3:13"},"nodeType":"YulFunctionCall","src":"1778:11:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1772:5:13"},"nodeType":"YulFunctionCall","src":"1772:18:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:13"},"nodeType":"YulFunctionCall","src":"1752:39:13"},"nodeType":"YulExpressionStatement","src":"1752:39:13"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1699:1:13"},{"name":"length","nodeType":"YulIdentifier","src":"1702:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1696:2:13"},"nodeType":"YulFunctionCall","src":"1696:13:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1710:19:13","statements":[{"nodeType":"YulAssignment","src":"1712:15:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1721:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"1724:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1717:3:13"},"nodeType":"YulFunctionCall","src":"1717:10:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1712:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"1692:3:13","statements":[]},"src":"1688:113:13"},{"body":{"nodeType":"YulBlock","src":"1835:76:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1885:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1881:3:13"},"nodeType":"YulFunctionCall","src":"1881:16:13"},{"kind":"number","nodeType":"YulLiteral","src":"1899:1:13","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1874:6:13"},"nodeType":"YulFunctionCall","src":"1874:27:13"},"nodeType":"YulExpressionStatement","src":"1874:27:13"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1816:1:13"},{"name":"length","nodeType":"YulIdentifier","src":"1819:6:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1813:2:13"},"nodeType":"YulFunctionCall","src":"1813:13:13"},"nodeType":"YulIf","src":"1810:101:13"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1641:3:13","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1646:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"1651:6:13","type":""}],"src":"1610:307:13"},{"body":{"nodeType":"YulBlock","src":"2018:326:13","statements":[{"nodeType":"YulAssignment","src":"2028:75:13","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2095:6:13"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2053:41:13"},"nodeType":"YulFunctionCall","src":"2053:49:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2037:15:13"},"nodeType":"YulFunctionCall","src":"2037:66:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2028:5:13"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2119:5:13"},{"name":"length","nodeType":"YulIdentifier","src":"2126:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2112:6:13"},"nodeType":"YulFunctionCall","src":"2112:21:13"},"nodeType":"YulExpressionStatement","src":"2112:21:13"},{"nodeType":"YulVariableDeclaration","src":"2142:27:13","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2157:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"2164:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2153:3:13"},"nodeType":"YulFunctionCall","src":"2153:16:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2146:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"2207:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"2209:77:13"},"nodeType":"YulFunctionCall","src":"2209:79:13"},"nodeType":"YulExpressionStatement","src":"2209:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2188:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"2193:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2184:3:13"},"nodeType":"YulFunctionCall","src":"2184:16:13"},{"name":"end","nodeType":"YulIdentifier","src":"2202:3:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2181:2:13"},"nodeType":"YulFunctionCall","src":"2181:25:13"},"nodeType":"YulIf","src":"2178:112:13"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2321:3:13"},{"name":"dst","nodeType":"YulIdentifier","src":"2326:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"2331:6:13"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2299:21:13"},"nodeType":"YulFunctionCall","src":"2299:39:13"},"nodeType":"YulExpressionStatement","src":"2299:39:13"}]},"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1991:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"1996:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"2004:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2012:5:13","type":""}],"src":"1923:421:13"},{"body":{"nodeType":"YulBlock","src":"2437:282:13","statements":[{"body":{"nodeType":"YulBlock","src":"2486:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"2488:77:13"},"nodeType":"YulFunctionCall","src":"2488:79:13"},"nodeType":"YulExpressionStatement","src":"2488:79:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2465:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"2473:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2461:3:13"},"nodeType":"YulFunctionCall","src":"2461:17:13"},{"name":"end","nodeType":"YulIdentifier","src":"2480:3:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2457:3:13"},"nodeType":"YulFunctionCall","src":"2457:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2450:6:13"},"nodeType":"YulFunctionCall","src":"2450:35:13"},"nodeType":"YulIf","src":"2447:122:13"},{"nodeType":"YulVariableDeclaration","src":"2578:27:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2598:6:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2592:5:13"},"nodeType":"YulFunctionCall","src":"2592:13:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2582:6:13","type":""}]},{"nodeType":"YulAssignment","src":"2614:99:13","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2686:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"2694:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2682:3:13"},"nodeType":"YulFunctionCall","src":"2682:17:13"},{"name":"length","nodeType":"YulIdentifier","src":"2701:6:13"},{"name":"end","nodeType":"YulIdentifier","src":"2709:3:13"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"2623:58:13"},"nodeType":"YulFunctionCall","src":"2623:90:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2614:5:13"}]}]},"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2415:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"2423:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2431:5:13","type":""}],"src":"2364:355:13"},{"body":{"nodeType":"YulBlock","src":"2839:739:13","statements":[{"body":{"nodeType":"YulBlock","src":"2885:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2887:77:13"},"nodeType":"YulFunctionCall","src":"2887:79:13"},"nodeType":"YulExpressionStatement","src":"2887:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2860:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"2869:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2856:3:13"},"nodeType":"YulFunctionCall","src":"2856:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"2881:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2852:3:13"},"nodeType":"YulFunctionCall","src":"2852:32:13"},"nodeType":"YulIf","src":"2849:119:13"},{"nodeType":"YulBlock","src":"2978:291:13","statements":[{"nodeType":"YulVariableDeclaration","src":"2993:38:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3017:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"3028:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3013:3:13"},"nodeType":"YulFunctionCall","src":"3013:17:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3007:5:13"},"nodeType":"YulFunctionCall","src":"3007:24:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2997:6:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3078:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3080:77:13"},"nodeType":"YulFunctionCall","src":"3080:79:13"},"nodeType":"YulExpressionStatement","src":"3080:79:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3050:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"3058:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3047:2:13"},"nodeType":"YulFunctionCall","src":"3047:30:13"},"nodeType":"YulIf","src":"3044:117:13"},{"nodeType":"YulAssignment","src":"3175:84:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3231:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"3242:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3227:3:13"},"nodeType":"YulFunctionCall","src":"3227:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3251:7:13"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3185:41:13"},"nodeType":"YulFunctionCall","src":"3185:74:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3175:6:13"}]}]},{"nodeType":"YulBlock","src":"3279:292:13","statements":[{"nodeType":"YulVariableDeclaration","src":"3294:39:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3318:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"3329:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3314:3:13"},"nodeType":"YulFunctionCall","src":"3314:18:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3308:5:13"},"nodeType":"YulFunctionCall","src":"3308:25:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3298:6:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3380:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3382:77:13"},"nodeType":"YulFunctionCall","src":"3382:79:13"},"nodeType":"YulExpressionStatement","src":"3382:79:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3352:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"3360:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3349:2:13"},"nodeType":"YulFunctionCall","src":"3349:30:13"},"nodeType":"YulIf","src":"3346:117:13"},{"nodeType":"YulAssignment","src":"3477:84:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3533:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"3544:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3529:3:13"},"nodeType":"YulFunctionCall","src":"3529:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3553:7:13"}],"functionName":{"name":"abi_decode_t_string_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"3487:41:13"},"nodeType":"YulFunctionCall","src":"3487:74:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3477:6:13"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2801:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2812:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2824:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2832:6:13","type":""}],"src":"2725:853:13"},{"body":{"nodeType":"YulBlock","src":"3612:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3629:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3632:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:13"},"nodeType":"YulFunctionCall","src":"3622:88:13"},"nodeType":"YulExpressionStatement","src":"3622:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3726:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3729:4:13","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3719:6:13"},"nodeType":"YulFunctionCall","src":"3719:15:13"},"nodeType":"YulExpressionStatement","src":"3719:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3750:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3753:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3743:6:13"},"nodeType":"YulFunctionCall","src":"3743:15:13"},"nodeType":"YulExpressionStatement","src":"3743:15:13"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"3584:180:13"},{"body":{"nodeType":"YulBlock","src":"3821:269:13","statements":[{"nodeType":"YulAssignment","src":"3831:22:13","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3845:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"3851:1:13","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3841:3:13"},"nodeType":"YulFunctionCall","src":"3841:12:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3831:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"3862:38:13","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"3892:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"3898:1:13","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3888:3:13"},"nodeType":"YulFunctionCall","src":"3888:12:13"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"3866:18:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3939:51:13","statements":[{"nodeType":"YulAssignment","src":"3953:27:13","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3967:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"3975:4:13","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3963:3:13"},"nodeType":"YulFunctionCall","src":"3963:17:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3953:6:13"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"3919:18:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3912:6:13"},"nodeType":"YulFunctionCall","src":"3912:26:13"},"nodeType":"YulIf","src":"3909:81:13"},{"body":{"nodeType":"YulBlock","src":"4042:42:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"4056:16:13"},"nodeType":"YulFunctionCall","src":"4056:18:13"},"nodeType":"YulExpressionStatement","src":"4056:18:13"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"4006:18:13"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4029:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"4037:2:13","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4026:2:13"},"nodeType":"YulFunctionCall","src":"4026:14:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4003:2:13"},"nodeType":"YulFunctionCall","src":"4003:38:13"},"nodeType":"YulIf","src":"4000:84:13"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"3805:4:13","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3814:6:13","type":""}],"src":"3770:320:13"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function abi_decode_available_length_t_string_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_string_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := mload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_string_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n}\n","id":13,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620024f5380380620024f58339818101604052810190620000379190620002be565b81600090805190602001906200004f92919062000071565b5080600190805190602001906200006892919062000071565b505050620003a7565b8280546200007f9062000372565b90600052602060002090601f016020900481019282620000a35760008555620000ef565b82601f10620000be57805160ff1916838001178555620000ef565b82800160010185558215620000ef579182015b82811115620000ee578251825591602001919060010190620000d1565b5b509050620000fe919062000102565b5090565b5b808211156200011d57600081600090555060010162000103565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200018a826200013f565b810181811067ffffffffffffffff82111715620001ac57620001ab62000150565b5b80604052505050565b6000620001c162000121565b9050620001cf82826200017f565b919050565b600067ffffffffffffffff821115620001f257620001f162000150565b5b620001fd826200013f565b9050602081019050919050565b60005b838110156200022a5780820151818401526020810190506200020d565b838111156200023a576000848401525b50505050565b6000620002576200025184620001d4565b620001b5565b9050828152602081018484840111156200027657620002756200013a565b5b620002838482856200020a565b509392505050565b600082601f830112620002a357620002a262000135565b5b8151620002b584826020860162000240565b91505092915050565b60008060408385031215620002d857620002d76200012b565b5b600083015167ffffffffffffffff811115620002f957620002f862000130565b5b62000307858286016200028b565b925050602083015167ffffffffffffffff8111156200032b576200032a62000130565b5b62000339858286016200028b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200038b57607f821691505b602082108103620003a157620003a062000343565b5b50919050565b61213e80620003b76000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e99190611450565b6102bc565b6040516100fb9190611498565b60405180910390f35b61010c61039e565b604051610119919061154c565b60405180910390f35b61013c600480360381019061013791906115a4565b610430565b6040516101499190611612565b60405180910390f35b61016c60048036038101906101679190611659565b610476565b005b61018860048036038101906101839190611699565b61058d565b005b6101a4600480360381019061019f9190611699565b6105ed565b005b6101c060048036038101906101bb91906115a4565b61060d565b6040516101cd9190611612565b60405180910390f35b6101f060048036038101906101eb91906116ec565b6106be565b6040516101fd9190611728565b60405180910390f35b61020e610775565b60405161021b919061154c565b60405180910390f35b61023e6004803603810190610239919061176f565b610807565b005b61025a600480360381019061025591906118e4565b61081d565b005b610276600480360381019061027191906115a4565b61087f565b604051610283919061154c565b60405180910390f35b6102a660048036038101906102a19190611967565b6108e7565b6040516102b39190611498565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061039757506103968261097b565b5b9050919050565b6060600080546103ad906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d9906119d6565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b826109e5565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104818261060d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e890611a79565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610510610a30565b73ffffffffffffffffffffffffffffffffffffffff16148061053f575061053e81610539610a30565b6108e7565b5b61057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057590611b0b565b60405180910390fd5b6105888383610a38565b505050565b61059e610598610a30565b82610af1565b6105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d490611b9d565b60405180910390fd5b6105e8838383610b86565b505050565b6106088383836040518060200160405280600081525061081d565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90611c09565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590611c9b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610784906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546107b0906119d6565b80156107fd5780601f106107d2576101008083540402835291602001916107fd565b820191906000526020600020905b8154815290600101906020018083116107e057829003601f168201915b5050505050905090565b610819610812610a30565b8383610dec565b5050565b61082e610828610a30565b83610af1565b61086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086490611b9d565b60405180910390fd5b61087984848484610f58565b50505050565b606061088a826109e5565b6000610894610fb4565b905060008151116108b457604051806020016040528060008152506108df565b806108be84610fcb565b6040516020016108cf929190611cf7565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6109ee81611099565b610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490611c09565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610aab8361060d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610afd8361060d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b3f5750610b3e81856108e7565b5b80610b7d57508373ffffffffffffffffffffffffffffffffffffffff16610b6584610430565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ba68261060d565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390611d8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290611e1f565b60405180910390fd5b610c76838383611105565b610c81600082610a38565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cd19190611e6e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d289190611ea2565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610de783838361110a565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190611f44565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f4b9190611498565b60405180910390a3505050565b610f63848484610b86565b610f6f8484848461110f565b610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590611fd6565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060006001610fda84611291565b01905060008167ffffffffffffffff811115610ff957610ff86117b9565b5b6040519080825280601f01601f19166020018201604052801561102b5781602001600182028036833780820191505090505b509050600082602001820190505b60011561108e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161108257611081611ff6565b5b04945060008503611039575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115611284578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611154610a30565b8786866040518563ffffffff1660e01b8152600401611176949392919061207a565b6020604051808303816000875af19250505080156111b257506040513d601f19601f820116820180604052508101906111af91906120db565b60015b611234573d80600081146111e2576040519150601f19603f3d011682016040523d82523d6000602084013e6111e7565b606091505b50600081510361122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390611fd6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611289565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106112ef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816112e5576112e4611ff6565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061132c576d04ee2d6d415b85acef8100000000838161132257611321611ff6565b5b0492506020810190505b662386f26fc10000831061135b57662386f26fc10000838161135157611350611ff6565b5b0492506010810190505b6305f5e1008310611384576305f5e100838161137a57611379611ff6565b5b0492506008810190505b61271083106113a957612710838161139f5761139e611ff6565b5b0492506004810190505b606483106113cc57606483816113c2576113c1611ff6565b5b0492506002810190505b600a83106113db576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61142d816113f8565b811461143857600080fd5b50565b60008135905061144a81611424565b92915050565b600060208284031215611466576114656113ee565b5b60006114748482850161143b565b91505092915050565b60008115159050919050565b6114928161147d565b82525050565b60006020820190506114ad6000830184611489565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114ed5780820151818401526020810190506114d2565b838111156114fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061151e826114b3565b61152881856114be565b93506115388185602086016114cf565b61154181611502565b840191505092915050565b600060208201905081810360008301526115668184611513565b905092915050565b6000819050919050565b6115818161156e565b811461158c57600080fd5b50565b60008135905061159e81611578565b92915050565b6000602082840312156115ba576115b96113ee565b5b60006115c88482850161158f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115fc826115d1565b9050919050565b61160c816115f1565b82525050565b60006020820190506116276000830184611603565b92915050565b611636816115f1565b811461164157600080fd5b50565b6000813590506116538161162d565b92915050565b600080604083850312156116705761166f6113ee565b5b600061167e85828601611644565b925050602061168f8582860161158f565b9150509250929050565b6000806000606084860312156116b2576116b16113ee565b5b60006116c086828701611644565b93505060206116d186828701611644565b92505060406116e28682870161158f565b9150509250925092565b600060208284031215611702576117016113ee565b5b600061171084828501611644565b91505092915050565b6117228161156e565b82525050565b600060208201905061173d6000830184611719565b92915050565b61174c8161147d565b811461175757600080fd5b50565b60008135905061176981611743565b92915050565b60008060408385031215611786576117856113ee565b5b600061179485828601611644565b92505060206117a58582860161175a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6117f182611502565b810181811067ffffffffffffffff821117156118105761180f6117b9565b5b80604052505050565b60006118236113e4565b905061182f82826117e8565b919050565b600067ffffffffffffffff82111561184f5761184e6117b9565b5b61185882611502565b9050602081019050919050565b82818337600083830152505050565b600061188761188284611834565b611819565b9050828152602081018484840111156118a3576118a26117b4565b5b6118ae848285611865565b509392505050565b600082601f8301126118cb576118ca6117af565b5b81356118db848260208601611874565b91505092915050565b600080600080608085870312156118fe576118fd6113ee565b5b600061190c87828801611644565b945050602061191d87828801611644565b935050604061192e8782880161158f565b925050606085013567ffffffffffffffff81111561194f5761194e6113f3565b5b61195b878288016118b6565b91505092959194509250565b6000806040838503121561197e5761197d6113ee565b5b600061198c85828601611644565b925050602061199d85828601611644565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ee57607f821691505b602082108103611a0157611a006119a7565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a636021836114be565b9150611a6e82611a07565b604082019050919050565b60006020820190508181036000830152611a9281611a56565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000611af5603e836114be565b9150611b0082611a99565b604082019050919050565b60006020820190508181036000830152611b2481611ae8565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000611b87602e836114be565b9150611b9282611b2b565b604082019050919050565b60006020820190508181036000830152611bb681611b7a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000611bf36018836114be565b9150611bfe82611bbd565b602082019050919050565b60006020820190508181036000830152611c2281611be6565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000611c856029836114be565b9150611c9082611c29565b604082019050919050565b60006020820190508181036000830152611cb481611c78565b9050919050565b600081905092915050565b6000611cd1826114b3565b611cdb8185611cbb565b9350611ceb8185602086016114cf565b80840191505092915050565b6000611d038285611cc6565b9150611d0f8284611cc6565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000611d776025836114be565b9150611d8282611d1b565b604082019050919050565b60006020820190508181036000830152611da681611d6a565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e096024836114be565b9150611e1482611dad565b604082019050919050565b60006020820190508181036000830152611e3881611dfc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e798261156e565b9150611e848361156e565b925082821015611e9757611e96611e3f565b5b828203905092915050565b6000611ead8261156e565b9150611eb88361156e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611eed57611eec611e3f565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000611f2e6019836114be565b9150611f3982611ef8565b602082019050919050565b60006020820190508181036000830152611f5d81611f21565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000611fc06032836114be565b9150611fcb82611f64565b604082019050919050565b60006020820190508181036000830152611fef81611fb3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061204c82612025565b6120568185612030565b93506120668185602086016114cf565b61206f81611502565b840191505092915050565b600060808201905061208f6000830187611603565b61209c6020830186611603565b6120a96040830185611719565b81810360608301526120bb8184612041565b905095945050505050565b6000815190506120d581611424565b92915050565b6000602082840312156120f1576120f06113ee565b5b60006120ff848285016120c6565b9150509291505056fea26469706673582212201befbb93823bb4d4f3dd3dd02315ac03aab291ca85b918aca37bea81708f233e64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x24F5 CODESIZE SUB DUP1 PUSH3 0x24F5 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x37 SWAP2 SWAP1 PUSH3 0x2BE JUMP JUMPDEST DUP2 PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x4F SWAP3 SWAP2 SWAP1 PUSH3 0x71 JUMP JUMPDEST POP DUP1 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x68 SWAP3 SWAP2 SWAP1 PUSH3 0x71 JUMP JUMPDEST POP POP POP PUSH3 0x3A7 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x7F SWAP1 PUSH3 0x372 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0xA3 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xEF JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xBE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xEF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xEF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xEE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xD1 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0xFE SWAP2 SWAP1 PUSH3 0x102 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x11D JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x103 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH3 0x18A DUP3 PUSH3 0x13F JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH3 0x1AC JUMPI PUSH3 0x1AB PUSH3 0x150 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C1 PUSH3 0x121 JUMP JUMPDEST SWAP1 POP PUSH3 0x1CF DUP3 DUP3 PUSH3 0x17F JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0x1F2 JUMPI PUSH3 0x1F1 PUSH3 0x150 JUMP JUMPDEST JUMPDEST PUSH3 0x1FD DUP3 PUSH3 0x13F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x22A JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x20D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x23A JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x257 PUSH3 0x251 DUP5 PUSH3 0x1D4 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH3 0x276 JUMPI PUSH3 0x275 PUSH3 0x13A JUMP JUMPDEST JUMPDEST PUSH3 0x283 DUP5 DUP3 DUP6 PUSH3 0x20A JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x2A3 JUMPI PUSH3 0x2A2 PUSH3 0x135 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH3 0x2B5 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH3 0x240 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2D8 JUMPI PUSH3 0x2D7 PUSH3 0x12B JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x2F9 JUMPI PUSH3 0x2F8 PUSH3 0x130 JUMP JUMPDEST JUMPDEST PUSH3 0x307 DUP6 DUP3 DUP7 ADD PUSH3 0x28B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x32B JUMPI PUSH3 0x32A PUSH3 0x130 JUMP JUMPDEST JUMPDEST PUSH3 0x339 DUP6 DUP3 DUP7 ADD PUSH3 0x28B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH3 0x38B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x3A1 JUMPI PUSH3 0x3A0 PUSH3 0x343 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x213E DUP1 PUSH3 0x3B7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x28C JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x206 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x1450 JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x1659 JUMP JUMPDEST PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x188 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x183 SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x5ED JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BB SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CD SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FD SWAP2 SWAP1 PUSH2 0x1728 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x775 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21B SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x239 SWAP2 SWAP1 PUSH2 0x176F JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x255 SWAP2 SWAP1 PUSH2 0x18E4 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x276 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x271 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x1967 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x387 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x397 JUMPI POP PUSH2 0x396 DUP3 PUSH2 0x97B JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x3AD SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3D9 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x426 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3FB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x426 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x409 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43B DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x481 DUP3 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E8 SWAP1 PUSH2 0x1A79 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 PUSH2 0xA30 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x53F JUMPI POP PUSH2 0x53E DUP2 PUSH2 0x539 PUSH2 0xA30 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST PUSH2 0x57E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x575 SWAP1 PUSH2 0x1B0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x588 DUP4 DUP4 PUSH2 0xA38 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x59E PUSH2 0x598 PUSH2 0xA30 JUMP JUMPDEST DUP3 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x5DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D4 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E8 DUP4 DUP4 DUP4 PUSH2 0xB86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x608 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x81D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6AC SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x72E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x725 SWAP1 PUSH2 0x1C9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x784 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7B0 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7FD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x819 PUSH2 0x812 PUSH2 0xA30 JUMP JUMPDEST DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x82E PUSH2 0x828 PUSH2 0xA30 JUMP JUMPDEST DUP4 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x86D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x864 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x879 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF58 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x88A DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x894 PUSH2 0xFB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x8B4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x8DF JUMP JUMPDEST DUP1 PUSH2 0x8BE DUP5 PUSH2 0xFCB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8CF SWAP3 SWAP2 SWAP1 PUSH2 0x1CF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9EE DUP2 PUSH2 0x1099 JUMP JUMPDEST PUSH2 0xA2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA24 SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAAB DUP4 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAFD DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xB3F JUMPI POP PUSH2 0xB3E DUP2 DUP6 PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xB7D JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB65 DUP5 PUSH2 0x430 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBA6 DUP3 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBFC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF3 SWAP1 PUSH2 0x1D8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xC6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC62 SWAP1 PUSH2 0x1E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC76 DUP4 DUP4 DUP4 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0xC81 PUSH1 0x0 DUP3 PUSH2 0xA38 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xCD1 SWAP2 SWAP1 PUSH2 0x1E6E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD28 SWAP2 SWAP1 PUSH2 0x1EA2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xDE7 DUP4 DUP4 DUP4 PUSH2 0x110A JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE51 SWAP1 PUSH2 0x1F44 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0xF4B SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xF63 DUP5 DUP5 DUP5 PUSH2 0xB86 JUMP JUMPDEST PUSH2 0xF6F DUP5 DUP5 DUP5 DUP5 PUSH2 0x110F JUMP JUMPDEST PUSH2 0xFAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFA5 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0xFDA DUP5 PUSH2 0x1291 JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFF9 JUMPI PUSH2 0xFF8 PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x102B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x108E JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x1082 JUMPI PUSH2 0x1081 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x1039 JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x1284 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x1154 PUSH2 0xA30 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1176 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x207A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x11B2 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11AF SWAP2 SWAP1 PUSH2 0x20DB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1234 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11E2 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 0x11E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x122C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1223 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x1289 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x12EF JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x12E5 JUMPI PUSH2 0x12E4 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x132C JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1322 JUMPI PUSH2 0x1321 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x135B JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1351 JUMPI PUSH2 0x1350 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1384 JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x137A JUMPI PUSH2 0x1379 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x13A9 JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x139F JUMPI PUSH2 0x139E PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x13CC JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x13C2 JUMPI PUSH2 0x13C1 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x13DB JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x142D DUP2 PUSH2 0x13F8 JUMP JUMPDEST DUP2 EQ PUSH2 0x1438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x144A DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1466 JUMPI PUSH2 0x1465 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1474 DUP5 DUP3 DUP6 ADD PUSH2 0x143B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1492 DUP2 PUSH2 0x147D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x14AD PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1489 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14ED JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x14D2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14FC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x151E DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1528 DUP2 DUP6 PUSH2 0x14BE JUMP JUMPDEST SWAP4 POP PUSH2 0x1538 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x1541 DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1566 DUP2 DUP5 PUSH2 0x1513 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1581 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP2 EQ PUSH2 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x159E DUP2 PUSH2 0x1578 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15BA JUMPI PUSH2 0x15B9 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x15C8 DUP5 DUP3 DUP6 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FC DUP3 PUSH2 0x15D1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x160C DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1627 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1603 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1636 DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x1641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1653 DUP2 PUSH2 0x162D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1670 JUMPI PUSH2 0x166F PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x167E DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x168F DUP6 DUP3 DUP7 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x16B2 JUMPI PUSH2 0x16B1 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x16C0 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x16D1 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x16E2 DUP7 DUP3 DUP8 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1702 JUMPI PUSH2 0x1701 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1710 DUP5 DUP3 DUP6 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1722 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x173D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1719 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x174C DUP2 PUSH2 0x147D JUMP JUMPDEST DUP2 EQ PUSH2 0x1757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1769 DUP2 PUSH2 0x1743 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1786 JUMPI PUSH2 0x1785 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1794 DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x17A5 DUP6 DUP3 DUP7 ADD PUSH2 0x175A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x17F1 DUP3 PUSH2 0x1502 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1810 JUMPI PUSH2 0x180F PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1823 PUSH2 0x13E4 JUMP JUMPDEST SWAP1 POP PUSH2 0x182F DUP3 DUP3 PUSH2 0x17E8 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x184F JUMPI PUSH2 0x184E PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH2 0x1858 DUP3 PUSH2 0x1502 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1887 PUSH2 0x1882 DUP5 PUSH2 0x1834 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x18A3 JUMPI PUSH2 0x18A2 PUSH2 0x17B4 JUMP JUMPDEST JUMPDEST PUSH2 0x18AE DUP5 DUP3 DUP6 PUSH2 0x1865 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x18CB JUMPI PUSH2 0x18CA PUSH2 0x17AF JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x18DB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1874 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x18FE JUMPI PUSH2 0x18FD PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x190C DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x191D DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x192E DUP8 DUP3 DUP9 ADD PUSH2 0x158F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x194F JUMPI PUSH2 0x194E PUSH2 0x13F3 JUMP JUMPDEST JUMPDEST PUSH2 0x195B DUP8 DUP3 DUP9 ADD PUSH2 0x18B6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x197E JUMPI PUSH2 0x197D PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x198C DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x199D DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x19EE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1A01 JUMPI PUSH2 0x1A00 PUSH2 0x19A7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A63 PUSH1 0x21 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1A6E DUP3 PUSH2 0x1A07 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A92 DUP2 PUSH2 0x1A56 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AF5 PUSH1 0x3E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B00 DUP3 PUSH2 0x1A99 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B24 DUP2 PUSH2 0x1AE8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B87 PUSH1 0x2E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B92 DUP3 PUSH2 0x1B2B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BB6 DUP2 PUSH2 0x1B7A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF3 PUSH1 0x18 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1BFE DUP3 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C22 DUP2 PUSH2 0x1BE6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C85 PUSH1 0x29 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1C90 DUP3 PUSH2 0x1C29 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1CB4 DUP2 PUSH2 0x1C78 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CD1 DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1CDB DUP2 DUP6 PUSH2 0x1CBB JUMP JUMPDEST SWAP4 POP PUSH2 0x1CEB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D03 DUP3 DUP6 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D0F DUP3 DUP5 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D77 PUSH1 0x25 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1D82 DUP3 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1DA6 DUP2 PUSH2 0x1D6A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E09 PUSH1 0x24 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1E14 DUP3 PUSH2 0x1DAD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E38 DUP2 PUSH2 0x1DFC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E79 DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1E84 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x1E97 JUMPI PUSH2 0x1E96 PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EAD DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1EB8 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x1EED JUMPI PUSH2 0x1EEC PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F2E PUSH1 0x19 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1F39 DUP3 PUSH2 0x1EF8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F5D DUP2 PUSH2 0x1F21 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FC0 PUSH1 0x32 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1FCB DUP3 PUSH2 0x1F64 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FEF DUP2 PUSH2 0x1FB3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204C DUP3 PUSH2 0x2025 JUMP JUMPDEST PUSH2 0x2056 DUP2 DUP6 PUSH2 0x2030 JUMP JUMPDEST SWAP4 POP PUSH2 0x2066 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x206F DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x208F PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x20A9 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1719 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x20BB DUP2 DUP5 PUSH2 0x2041 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x20D5 DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20F1 JUMPI PUSH2 0x20F0 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20FF DUP5 DUP3 DUP6 ADD PUSH2 0x20C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xEF 0xBB SWAP4 DUP3 EXTCODESIZE 0xB4 0xD4 RETURN 0xDD RETURNDATASIZE 0xD0 0x23 ISZERO 0xAC SUB 0xAA 0xB2 SWAP2 0xCA DUP6 0xB9 XOR 0xAC LOG3 PUSH28 0xEA81708F233E64736F6C634300080D00330000000000000000000000 ","sourceMap":"1382:13860:12:-:0;;;2237:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2311:5;2303;:13;;;;;;;;;;;;:::i;:::-;;2336:7;2326;:17;;;;;;;;;;;;:::i;:::-;;2237:113;;1382:13860;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:13:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:853::-;2824:6;2832;2881:2;2869:9;2860:7;2856:23;2852:32;2849:119;;;2887:79;;:::i;:::-;2849:119;3028:1;3017:9;3013:17;3007:24;3058:18;3050:6;3047:30;3044:117;;;3080:79;;:::i;:::-;3044:117;3185:74;3251:7;3242:6;3231:9;3227:22;3185:74;:::i;:::-;3175:84;;2978:291;3329:2;3318:9;3314:18;3308:25;3360:18;3352:6;3349:30;3346:117;;;3382:79;;:::i;:::-;3346:117;3487:74;3553:7;3544:6;3533:9;3529:22;3487:74;:::i;:::-;3477:84;;3279:292;2725:853;;;;;:::o;3584:180::-;3632:77;3629:1;3622:88;3729:4;3726:1;3719:15;3753:4;3750:1;3743:15;3770:320;3814:6;3851:1;3845:4;3841:12;3831:22;;3898:1;3892:4;3888:12;3919:18;3909:81;;3975:4;3967:6;3963:17;3953:27;;3909:81;4037:2;4029:6;4026:14;4006:18;4003:38;4000:84;;4056:18;;:::i;:::-;4000:84;3821:269;3770:320;;;:::o;1382:13860:12:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_3038":{"entryPoint":4362,"id":3038,"parameterSlots":3,"returnSlots":0},"@_approve_2906":{"entryPoint":2616,"id":2906,"parameterSlots":2,"returnSlots":0},"@_baseURI_2388":{"entryPoint":4020,"id":2388,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_3027":{"entryPoint":4357,"id":3027,"parameterSlots":3,"returnSlots":0},"@_checkOnERC721Received_3016":{"entryPoint":4367,"id":3016,"parameterSlots":4,"returnSlots":1},"@_exists_2606":{"entryPoint":4249,"id":2606,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_2639":{"entryPoint":2801,"id":2639,"parameterSlots":2,"returnSlots":1},"@_msgSender_615":{"entryPoint":2608,"id":615,"parameterSlots":0,"returnSlots":1},"@_requireMinted_2952":{"entryPoint":2533,"id":2952,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_2588":{"entryPoint":3928,"id":2588,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_2938":{"entryPoint":3564,"id":2938,"parameterSlots":3,"returnSlots":0},"@_transfer_2883":{"entryPoint":2950,"id":2883,"parameterSlots":3,"returnSlots":0},"@approve_2430":{"entryPoint":1142,"id":2430,"parameterSlots":2,"returnSlots":0},"@balanceOf_2292":{"entryPoint":1726,"id":2292,"parameterSlots":1,"returnSlots":1},"@getApproved_2448":{"entryPoint":1072,"id":2448,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_2483":{"entryPoint":2279,"id":2483,"parameterSlots":2,"returnSlots":1},"@log10_1593":{"entryPoint":4753,"id":1593,"parameterSlots":1,"returnSlots":1},"@name_2330":{"entryPoint":926,"id":2330,"parameterSlots":0,"returnSlots":1},"@ownerOf_2320":{"entryPoint":1549,"id":2320,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_2529":{"entryPoint":1517,"id":2529,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_2559":{"entryPoint":2077,"id":2559,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_2465":{"entryPoint":2055,"id":2465,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2268":{"entryPoint":700,"id":2268,"parameterSlots":1,"returnSlots":1},"@supportsInterface_877":{"entryPoint":2427,"id":877,"parameterSlots":1,"returnSlots":1},"@symbol_2340":{"entryPoint":1909,"id":2340,"parameterSlots":0,"returnSlots":1},"@toString_684":{"entryPoint":4043,"id":684,"parameterSlots":1,"returnSlots":1},"@tokenURI_2379":{"entryPoint":2175,"id":2379,"parameterSlots":1,"returnSlots":1},"@transferFrom_2510":{"entryPoint":1421,"id":2510,"parameterSlots":3,"returnSlots":0},"abi_decode_available_length_t_bytes_memory_ptr":{"entryPoint":6260,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":5700,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool":{"entryPoint":5978,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4":{"entryPoint":5179,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4_fromMemory":{"entryPoint":8390,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr":{"entryPoint":6326,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":5519,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":5868,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":6503,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":5785,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":6372,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":5999,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":5721,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":5200,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":8411,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":5540,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":5635,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":5257,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":8257,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":5395,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":7366,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack":{"entryPoint":8115,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack":{"entryPoint":7530,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack":{"entryPoint":7676,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack":{"entryPoint":7969,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack":{"entryPoint":7288,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack":{"entryPoint":6888,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack":{"entryPoint":7142,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack":{"entryPoint":6742,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack":{"entryPoint":7034,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":5913,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":7415,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":5650,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":8314,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":5272,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5452,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8150,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7565,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7711,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8004,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7323,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6923,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7177,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6777,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7069,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":5928,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":6169,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":5092,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":6196,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":8229,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":5299,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":8240,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":5310,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":7355,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":7842,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":7790,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":5617,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":5245,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":5112,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":5585,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":5486,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory":{"entryPoint":6245,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory":{"entryPoint":5327,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":6614,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":6120,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":7743,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":8182,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x22":{"entryPoint":6567,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":6073,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":6063,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":6068,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":5107,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":5102,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":5378,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e":{"entryPoint":8036,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48":{"entryPoint":7451,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4":{"entryPoint":7597,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05":{"entryPoint":7928,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159":{"entryPoint":7209,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304":{"entryPoint":6809,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f":{"entryPoint":7101,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942":{"entryPoint":6663,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b":{"entryPoint":6955,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":5677,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":5955,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes4":{"entryPoint":5156,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":5496,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:23863:13","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:13","statements":[{"nodeType":"YulAssignment","src":"57:19:13","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:13","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:13"},"nodeType":"YulFunctionCall","src":"67:9:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:13"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:13","type":""}],"src":"7:75:13"},{"body":{"nodeType":"YulBlock","src":"177:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:13"},"nodeType":"YulFunctionCall","src":"187:12:13"},"nodeType":"YulExpressionStatement","src":"187:12:13"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:13"},{"body":{"nodeType":"YulBlock","src":"300:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:13"},"nodeType":"YulFunctionCall","src":"310:12:13"},"nodeType":"YulExpressionStatement","src":"310:12:13"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:13"},{"body":{"nodeType":"YulBlock","src":"378:105:13","statements":[{"nodeType":"YulAssignment","src":"388:89:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"410:66:13","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"399:3:13"},"nodeType":"YulFunctionCall","src":"399:78:13"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"388:7:13"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"360:5:13","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"370:7:13","type":""}],"src":"334:149:13"},{"body":{"nodeType":"YulBlock","src":"531:78:13","statements":[{"body":{"nodeType":"YulBlock","src":"587:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"596:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"599:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"589:6:13"},"nodeType":"YulFunctionCall","src":"589:12:13"},"nodeType":"YulExpressionStatement","src":"589:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"554:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"578:5:13"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"561:16:13"},"nodeType":"YulFunctionCall","src":"561:23:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"551:2:13"},"nodeType":"YulFunctionCall","src":"551:34:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"544:6:13"},"nodeType":"YulFunctionCall","src":"544:42:13"},"nodeType":"YulIf","src":"541:62:13"}]},"name":"validator_revert_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"524:5:13","type":""}],"src":"489:120:13"},{"body":{"nodeType":"YulBlock","src":"666:86:13","statements":[{"nodeType":"YulAssignment","src":"676:29:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"698:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:13"},"nodeType":"YulFunctionCall","src":"685:20:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"676:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"740:5:13"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"714:25:13"},"nodeType":"YulFunctionCall","src":"714:32:13"},"nodeType":"YulExpressionStatement","src":"714:32:13"}]},"name":"abi_decode_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"644:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"652:3:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"660:5:13","type":""}],"src":"615:137:13"},{"body":{"nodeType":"YulBlock","src":"823:262:13","statements":[{"body":{"nodeType":"YulBlock","src":"869:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"871:77:13"},"nodeType":"YulFunctionCall","src":"871:79:13"},"nodeType":"YulExpressionStatement","src":"871:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"844:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"853:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"840:3:13"},"nodeType":"YulFunctionCall","src":"840:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"865:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"836:3:13"},"nodeType":"YulFunctionCall","src":"836:32:13"},"nodeType":"YulIf","src":"833:119:13"},{"nodeType":"YulBlock","src":"962:116:13","statements":[{"nodeType":"YulVariableDeclaration","src":"977:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"991:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"981:6:13","type":""}]},{"nodeType":"YulAssignment","src":"1006:62:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1040:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"1051:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1036:3:13"},"nodeType":"YulFunctionCall","src":"1036:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1060:7:13"}],"functionName":{"name":"abi_decode_t_bytes4","nodeType":"YulIdentifier","src":"1016:19:13"},"nodeType":"YulFunctionCall","src":"1016:52:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1006:6:13"}]}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"793:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"804:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"816:6:13","type":""}],"src":"758:327:13"},{"body":{"nodeType":"YulBlock","src":"1133:48:13","statements":[{"nodeType":"YulAssignment","src":"1143:32:13","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1161:6:13"},"nodeType":"YulFunctionCall","src":"1161:13:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1154:6:13"},"nodeType":"YulFunctionCall","src":"1154:21:13"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1143:7:13"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1115:5:13","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1125:7:13","type":""}],"src":"1091:90:13"},{"body":{"nodeType":"YulBlock","src":"1246:50:13","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1283:5:13"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"1268:14:13"},"nodeType":"YulFunctionCall","src":"1268:21:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1256:6:13"},"nodeType":"YulFunctionCall","src":"1256:34:13"},"nodeType":"YulExpressionStatement","src":"1256:34:13"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1234:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1241:3:13","type":""}],"src":"1187:109:13"},{"body":{"nodeType":"YulBlock","src":"1394:118:13","statements":[{"nodeType":"YulAssignment","src":"1404:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:13"},"nodeType":"YulFunctionCall","src":"1412:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1404:4:13"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1478:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1491:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1502:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1487:3:13"},"nodeType":"YulFunctionCall","src":"1487:17:13"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"1440:37:13"},"nodeType":"YulFunctionCall","src":"1440:65:13"},"nodeType":"YulExpressionStatement","src":"1440:65:13"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1366:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1378:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1389:4:13","type":""}],"src":"1302:210:13"},{"body":{"nodeType":"YulBlock","src":"1577:40:13","statements":[{"nodeType":"YulAssignment","src":"1588:22:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1604:5:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1598:5:13"},"nodeType":"YulFunctionCall","src":"1598:12:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1588:6:13"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1560:5:13","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1570:6:13","type":""}],"src":"1518:99:13"},{"body":{"nodeType":"YulBlock","src":"1719:73:13","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1736:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"1741:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1729:6:13"},"nodeType":"YulFunctionCall","src":"1729:19:13"},"nodeType":"YulExpressionStatement","src":"1729:19:13"},{"nodeType":"YulAssignment","src":"1757:29:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1776:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"1781:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1772:3:13"},"nodeType":"YulFunctionCall","src":"1772:14:13"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1757:11:13"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1691:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"1696:6:13","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1707:11:13","type":""}],"src":"1623:169:13"},{"body":{"nodeType":"YulBlock","src":"1847:258:13","statements":[{"nodeType":"YulVariableDeclaration","src":"1857:10:13","value":{"kind":"number","nodeType":"YulLiteral","src":"1866:1:13","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1861:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1926:63:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1951:3:13"},{"name":"i","nodeType":"YulIdentifier","src":"1956:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1947:3:13"},"nodeType":"YulFunctionCall","src":"1947:11:13"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1970:3:13"},{"name":"i","nodeType":"YulIdentifier","src":"1975:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1966:3:13"},"nodeType":"YulFunctionCall","src":"1966:11:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1960:5:13"},"nodeType":"YulFunctionCall","src":"1960:18:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1940:6:13"},"nodeType":"YulFunctionCall","src":"1940:39:13"},"nodeType":"YulExpressionStatement","src":"1940:39:13"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1887:1:13"},{"name":"length","nodeType":"YulIdentifier","src":"1890:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1884:2:13"},"nodeType":"YulFunctionCall","src":"1884:13:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1898:19:13","statements":[{"nodeType":"YulAssignment","src":"1900:15:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1909:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"1912:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1905:3:13"},"nodeType":"YulFunctionCall","src":"1905:10:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1900:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"1880:3:13","statements":[]},"src":"1876:113:13"},{"body":{"nodeType":"YulBlock","src":"2023:76:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2073:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"2078:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2069:3:13"},"nodeType":"YulFunctionCall","src":"2069:16:13"},{"kind":"number","nodeType":"YulLiteral","src":"2087:1:13","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2062:6:13"},"nodeType":"YulFunctionCall","src":"2062:27:13"},"nodeType":"YulExpressionStatement","src":"2062:27:13"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2004:1:13"},{"name":"length","nodeType":"YulIdentifier","src":"2007:6:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2001:2:13"},"nodeType":"YulFunctionCall","src":"2001:13:13"},"nodeType":"YulIf","src":"1998:101:13"}]},"name":"copy_memory_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"1829:3:13","type":""},{"name":"dst","nodeType":"YulTypedName","src":"1834:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"1839:6:13","type":""}],"src":"1798:307:13"},{"body":{"nodeType":"YulBlock","src":"2159:54:13","statements":[{"nodeType":"YulAssignment","src":"2169:38:13","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2187:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"2194:2:13","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2183:3:13"},"nodeType":"YulFunctionCall","src":"2183:14:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2203:2:13","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2199:3:13"},"nodeType":"YulFunctionCall","src":"2199:7:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2179:3:13"},"nodeType":"YulFunctionCall","src":"2179:28:13"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2169:6:13"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2142:5:13","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"2152:6:13","type":""}],"src":"2111:102:13"},{"body":{"nodeType":"YulBlock","src":"2311:272:13","statements":[{"nodeType":"YulVariableDeclaration","src":"2321:53:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2368:5:13"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"2335:32:13"},"nodeType":"YulFunctionCall","src":"2335:39:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2325:6:13","type":""}]},{"nodeType":"YulAssignment","src":"2383:78:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2449:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"2454:6:13"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2390:58:13"},"nodeType":"YulFunctionCall","src":"2390:71:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2383:3:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2496:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"2503:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2492:3:13"},"nodeType":"YulFunctionCall","src":"2492:16:13"},{"name":"pos","nodeType":"YulIdentifier","src":"2510:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"2515:6:13"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"2470:21:13"},"nodeType":"YulFunctionCall","src":"2470:52:13"},"nodeType":"YulExpressionStatement","src":"2470:52:13"},{"nodeType":"YulAssignment","src":"2531:46:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2542:3:13"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2569:6:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2547:21:13"},"nodeType":"YulFunctionCall","src":"2547:29:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2538:3:13"},"nodeType":"YulFunctionCall","src":"2538:39:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2531:3:13"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2292:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2299:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2307:3:13","type":""}],"src":"2219:364:13"},{"body":{"nodeType":"YulBlock","src":"2707:195:13","statements":[{"nodeType":"YulAssignment","src":"2717:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2729:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2740:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2725:3:13"},"nodeType":"YulFunctionCall","src":"2725:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2717:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2764:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2775:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2760:3:13"},"nodeType":"YulFunctionCall","src":"2760:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2783:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"2789:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2779:3:13"},"nodeType":"YulFunctionCall","src":"2779:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2753:6:13"},"nodeType":"YulFunctionCall","src":"2753:47:13"},"nodeType":"YulExpressionStatement","src":"2753:47:13"},{"nodeType":"YulAssignment","src":"2809:86:13","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2881:6:13"},{"name":"tail","nodeType":"YulIdentifier","src":"2890:4:13"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2817:63:13"},"nodeType":"YulFunctionCall","src":"2817:78:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2809:4:13"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2679:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2691:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2702:4:13","type":""}],"src":"2589:313:13"},{"body":{"nodeType":"YulBlock","src":"2953:32:13","statements":[{"nodeType":"YulAssignment","src":"2963:16:13","value":{"name":"value","nodeType":"YulIdentifier","src":"2974:5:13"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2963:7:13"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2935:5:13","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2945:7:13","type":""}],"src":"2908:77:13"},{"body":{"nodeType":"YulBlock","src":"3034:79:13","statements":[{"body":{"nodeType":"YulBlock","src":"3091:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3100:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3103:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3093:6:13"},"nodeType":"YulFunctionCall","src":"3093:12:13"},"nodeType":"YulExpressionStatement","src":"3093:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3057:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3082:5:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3064:17:13"},"nodeType":"YulFunctionCall","src":"3064:24:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3054:2:13"},"nodeType":"YulFunctionCall","src":"3054:35:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3047:6:13"},"nodeType":"YulFunctionCall","src":"3047:43:13"},"nodeType":"YulIf","src":"3044:63:13"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3027:5:13","type":""}],"src":"2991:122:13"},{"body":{"nodeType":"YulBlock","src":"3171:87:13","statements":[{"nodeType":"YulAssignment","src":"3181:29:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3203:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3190:12:13"},"nodeType":"YulFunctionCall","src":"3190:20:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3181:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3246:5:13"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"3219:26:13"},"nodeType":"YulFunctionCall","src":"3219:33:13"},"nodeType":"YulExpressionStatement","src":"3219:33:13"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3149:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"3157:3:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3165:5:13","type":""}],"src":"3119:139:13"},{"body":{"nodeType":"YulBlock","src":"3330:263:13","statements":[{"body":{"nodeType":"YulBlock","src":"3376:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3378:77:13"},"nodeType":"YulFunctionCall","src":"3378:79:13"},"nodeType":"YulExpressionStatement","src":"3378:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3351:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"3360:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3347:3:13"},"nodeType":"YulFunctionCall","src":"3347:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"3372:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3343:3:13"},"nodeType":"YulFunctionCall","src":"3343:32:13"},"nodeType":"YulIf","src":"3340:119:13"},{"nodeType":"YulBlock","src":"3469:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"3484:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"3498:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3488:6:13","type":""}]},{"nodeType":"YulAssignment","src":"3513:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3548:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"3559:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3544:3:13"},"nodeType":"YulFunctionCall","src":"3544:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3568:7:13"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3523:20:13"},"nodeType":"YulFunctionCall","src":"3523:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3513:6:13"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3300:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3311:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3323:6:13","type":""}],"src":"3264:329:13"},{"body":{"nodeType":"YulBlock","src":"3644:81:13","statements":[{"nodeType":"YulAssignment","src":"3654:65:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3669:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"3676:42:13","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3665:3:13"},"nodeType":"YulFunctionCall","src":"3665:54:13"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3654:7:13"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3626:5:13","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3636:7:13","type":""}],"src":"3599:126:13"},{"body":{"nodeType":"YulBlock","src":"3776:51:13","statements":[{"nodeType":"YulAssignment","src":"3786:35:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3815:5:13"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"3797:17:13"},"nodeType":"YulFunctionCall","src":"3797:24:13"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3786:7:13"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3758:5:13","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3768:7:13","type":""}],"src":"3731:96:13"},{"body":{"nodeType":"YulBlock","src":"3898:53:13","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3915:3:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3938:5:13"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"3920:17:13"},"nodeType":"YulFunctionCall","src":"3920:24:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3908:6:13"},"nodeType":"YulFunctionCall","src":"3908:37:13"},"nodeType":"YulExpressionStatement","src":"3908:37:13"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3886:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3893:3:13","type":""}],"src":"3833:118:13"},{"body":{"nodeType":"YulBlock","src":"4055:124:13","statements":[{"nodeType":"YulAssignment","src":"4065:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4077:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4088:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4073:3:13"},"nodeType":"YulFunctionCall","src":"4073:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4065:4:13"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4145:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4158:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4169:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4154:3:13"},"nodeType":"YulFunctionCall","src":"4154:17:13"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"4101:43:13"},"nodeType":"YulFunctionCall","src":"4101:71:13"},"nodeType":"YulExpressionStatement","src":"4101:71:13"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4027:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4039:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4050:4:13","type":""}],"src":"3957:222:13"},{"body":{"nodeType":"YulBlock","src":"4228:79:13","statements":[{"body":{"nodeType":"YulBlock","src":"4285:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4294:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4297:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4287:6:13"},"nodeType":"YulFunctionCall","src":"4287:12:13"},"nodeType":"YulExpressionStatement","src":"4287:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4251:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4276:5:13"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"4258:17:13"},"nodeType":"YulFunctionCall","src":"4258:24:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4248:2:13"},"nodeType":"YulFunctionCall","src":"4248:35:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4241:6:13"},"nodeType":"YulFunctionCall","src":"4241:43:13"},"nodeType":"YulIf","src":"4238:63:13"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4221:5:13","type":""}],"src":"4185:122:13"},{"body":{"nodeType":"YulBlock","src":"4365:87:13","statements":[{"nodeType":"YulAssignment","src":"4375:29:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4397:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4384:12:13"},"nodeType":"YulFunctionCall","src":"4384:20:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4375:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4440:5:13"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"4413:26:13"},"nodeType":"YulFunctionCall","src":"4413:33:13"},"nodeType":"YulExpressionStatement","src":"4413:33:13"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4343:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"4351:3:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4359:5:13","type":""}],"src":"4313:139:13"},{"body":{"nodeType":"YulBlock","src":"4541:391:13","statements":[{"body":{"nodeType":"YulBlock","src":"4587:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4589:77:13"},"nodeType":"YulFunctionCall","src":"4589:79:13"},"nodeType":"YulExpressionStatement","src":"4589:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4562:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"4571:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4558:3:13"},"nodeType":"YulFunctionCall","src":"4558:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"4583:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4554:3:13"},"nodeType":"YulFunctionCall","src":"4554:32:13"},"nodeType":"YulIf","src":"4551:119:13"},{"nodeType":"YulBlock","src":"4680:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"4695:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"4709:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4699:6:13","type":""}]},{"nodeType":"YulAssignment","src":"4724:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4759:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"4770:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4755:3:13"},"nodeType":"YulFunctionCall","src":"4755:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4779:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4734:20:13"},"nodeType":"YulFunctionCall","src":"4734:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4724:6:13"}]}]},{"nodeType":"YulBlock","src":"4807:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"4822:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"4836:2:13","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4826:6:13","type":""}]},{"nodeType":"YulAssignment","src":"4852:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4887:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"4898:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4883:3:13"},"nodeType":"YulFunctionCall","src":"4883:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4907:7:13"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4862:20:13"},"nodeType":"YulFunctionCall","src":"4862:53:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4852:6:13"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4503:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4514:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4526:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4534:6:13","type":""}],"src":"4458:474:13"},{"body":{"nodeType":"YulBlock","src":"5038:519:13","statements":[{"body":{"nodeType":"YulBlock","src":"5084:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5086:77:13"},"nodeType":"YulFunctionCall","src":"5086:79:13"},"nodeType":"YulExpressionStatement","src":"5086:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5059:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"5068:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5055:3:13"},"nodeType":"YulFunctionCall","src":"5055:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"5080:2:13","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5051:3:13"},"nodeType":"YulFunctionCall","src":"5051:32:13"},"nodeType":"YulIf","src":"5048:119:13"},{"nodeType":"YulBlock","src":"5177:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"5192:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"5206:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5196:6:13","type":""}]},{"nodeType":"YulAssignment","src":"5221:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5256:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"5267:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5252:3:13"},"nodeType":"YulFunctionCall","src":"5252:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5276:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5231:20:13"},"nodeType":"YulFunctionCall","src":"5231:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5221:6:13"}]}]},{"nodeType":"YulBlock","src":"5304:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"5319:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"5333:2:13","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5323:6:13","type":""}]},{"nodeType":"YulAssignment","src":"5349:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5384:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"5395:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5380:3:13"},"nodeType":"YulFunctionCall","src":"5380:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5404:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5359:20:13"},"nodeType":"YulFunctionCall","src":"5359:53:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5349:6:13"}]}]},{"nodeType":"YulBlock","src":"5432:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"5447:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"5461:2:13","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5451:6:13","type":""}]},{"nodeType":"YulAssignment","src":"5477:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5512:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"5523:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5508:3:13"},"nodeType":"YulFunctionCall","src":"5508:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5532:7:13"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5487:20:13"},"nodeType":"YulFunctionCall","src":"5487:53:13"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5477:6:13"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4992:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5003:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5015:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5023:6:13","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5031:6:13","type":""}],"src":"4938:619:13"},{"body":{"nodeType":"YulBlock","src":"5629:263:13","statements":[{"body":{"nodeType":"YulBlock","src":"5675:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5677:77:13"},"nodeType":"YulFunctionCall","src":"5677:79:13"},"nodeType":"YulExpressionStatement","src":"5677:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5650:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"5659:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5646:3:13"},"nodeType":"YulFunctionCall","src":"5646:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"5671:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5642:3:13"},"nodeType":"YulFunctionCall","src":"5642:32:13"},"nodeType":"YulIf","src":"5639:119:13"},{"nodeType":"YulBlock","src":"5768:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"5783:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"5797:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5787:6:13","type":""}]},{"nodeType":"YulAssignment","src":"5812:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5847:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"5858:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5843:3:13"},"nodeType":"YulFunctionCall","src":"5843:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5867:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5822:20:13"},"nodeType":"YulFunctionCall","src":"5822:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5812:6:13"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5599:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5610:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5622:6:13","type":""}],"src":"5563:329:13"},{"body":{"nodeType":"YulBlock","src":"5963:53:13","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5980:3:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6003:5:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5985:17:13"},"nodeType":"YulFunctionCall","src":"5985:24:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5973:6:13"},"nodeType":"YulFunctionCall","src":"5973:37:13"},"nodeType":"YulExpressionStatement","src":"5973:37:13"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5951:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5958:3:13","type":""}],"src":"5898:118:13"},{"body":{"nodeType":"YulBlock","src":"6120:124:13","statements":[{"nodeType":"YulAssignment","src":"6130:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6142:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6153:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6138:3:13"},"nodeType":"YulFunctionCall","src":"6138:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6130:4:13"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6210:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6223:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6234:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6219:3:13"},"nodeType":"YulFunctionCall","src":"6219:17:13"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6166:43:13"},"nodeType":"YulFunctionCall","src":"6166:71:13"},"nodeType":"YulExpressionStatement","src":"6166:71:13"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6092:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6104:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6115:4:13","type":""}],"src":"6022:222:13"},{"body":{"nodeType":"YulBlock","src":"6290:76:13","statements":[{"body":{"nodeType":"YulBlock","src":"6344:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6353:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6356:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6346:6:13"},"nodeType":"YulFunctionCall","src":"6346:12:13"},"nodeType":"YulExpressionStatement","src":"6346:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6313:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6335:5:13"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"6320:14:13"},"nodeType":"YulFunctionCall","src":"6320:21:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6310:2:13"},"nodeType":"YulFunctionCall","src":"6310:32:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6303:6:13"},"nodeType":"YulFunctionCall","src":"6303:40:13"},"nodeType":"YulIf","src":"6300:60:13"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6283:5:13","type":""}],"src":"6250:116:13"},{"body":{"nodeType":"YulBlock","src":"6421:84:13","statements":[{"nodeType":"YulAssignment","src":"6431:29:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6453:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6440:12:13"},"nodeType":"YulFunctionCall","src":"6440:20:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6431:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6493:5:13"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"6469:23:13"},"nodeType":"YulFunctionCall","src":"6469:30:13"},"nodeType":"YulExpressionStatement","src":"6469:30:13"}]},"name":"abi_decode_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6399:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"6407:3:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6415:5:13","type":""}],"src":"6372:133:13"},{"body":{"nodeType":"YulBlock","src":"6591:388:13","statements":[{"body":{"nodeType":"YulBlock","src":"6637:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6639:77:13"},"nodeType":"YulFunctionCall","src":"6639:79:13"},"nodeType":"YulExpressionStatement","src":"6639:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6612:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"6621:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6608:3:13"},"nodeType":"YulFunctionCall","src":"6608:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"6633:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6604:3:13"},"nodeType":"YulFunctionCall","src":"6604:32:13"},"nodeType":"YulIf","src":"6601:119:13"},{"nodeType":"YulBlock","src":"6730:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"6745:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"6759:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6749:6:13","type":""}]},{"nodeType":"YulAssignment","src":"6774:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6809:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"6820:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6805:3:13"},"nodeType":"YulFunctionCall","src":"6805:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6829:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6784:20:13"},"nodeType":"YulFunctionCall","src":"6784:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6774:6:13"}]}]},{"nodeType":"YulBlock","src":"6857:115:13","statements":[{"nodeType":"YulVariableDeclaration","src":"6872:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"6886:2:13","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6876:6:13","type":""}]},{"nodeType":"YulAssignment","src":"6902:60:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6934:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"6945:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6930:3:13"},"nodeType":"YulFunctionCall","src":"6930:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6954:7:13"}],"functionName":{"name":"abi_decode_t_bool","nodeType":"YulIdentifier","src":"6912:17:13"},"nodeType":"YulFunctionCall","src":"6912:50:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6902:6:13"}]}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6553:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6564:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6576:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6584:6:13","type":""}],"src":"6511:468:13"},{"body":{"nodeType":"YulBlock","src":"7074:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7091:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7094:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7084:6:13"},"nodeType":"YulFunctionCall","src":"7084:12:13"},"nodeType":"YulExpressionStatement","src":"7084:12:13"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"6985:117:13"},{"body":{"nodeType":"YulBlock","src":"7197:28:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7214:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7217:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7207:6:13"},"nodeType":"YulFunctionCall","src":"7207:12:13"},"nodeType":"YulExpressionStatement","src":"7207:12:13"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"7108:117:13"},{"body":{"nodeType":"YulBlock","src":"7259:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7276:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7279:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7269:6:13"},"nodeType":"YulFunctionCall","src":"7269:88:13"},"nodeType":"YulExpressionStatement","src":"7269:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7373:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7376:4:13","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7366:6:13"},"nodeType":"YulFunctionCall","src":"7366:15:13"},"nodeType":"YulExpressionStatement","src":"7366:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7397:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7400:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7390:6:13"},"nodeType":"YulFunctionCall","src":"7390:15:13"},"nodeType":"YulExpressionStatement","src":"7390:15:13"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7231:180:13"},{"body":{"nodeType":"YulBlock","src":"7460:238:13","statements":[{"nodeType":"YulVariableDeclaration","src":"7470:58:13","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7492:6:13"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7522:4:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7500:21:13"},"nodeType":"YulFunctionCall","src":"7500:27:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7488:3:13"},"nodeType":"YulFunctionCall","src":"7488:40:13"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7474:10:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"7639:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7641:16:13"},"nodeType":"YulFunctionCall","src":"7641:18:13"},"nodeType":"YulExpressionStatement","src":"7641:18:13"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7582:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"7594:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7579:2:13"},"nodeType":"YulFunctionCall","src":"7579:34:13"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7618:10:13"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7630:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7615:2:13"},"nodeType":"YulFunctionCall","src":"7615:22:13"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7576:2:13"},"nodeType":"YulFunctionCall","src":"7576:62:13"},"nodeType":"YulIf","src":"7573:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7677:2:13","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7681:10:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7670:6:13"},"nodeType":"YulFunctionCall","src":"7670:22:13"},"nodeType":"YulExpressionStatement","src":"7670:22:13"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7446:6:13","type":""},{"name":"size","nodeType":"YulTypedName","src":"7454:4:13","type":""}],"src":"7417:281:13"},{"body":{"nodeType":"YulBlock","src":"7745:88:13","statements":[{"nodeType":"YulAssignment","src":"7755:30:13","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7765:18:13"},"nodeType":"YulFunctionCall","src":"7765:20:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7755:6:13"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7814:6:13"},{"name":"size","nodeType":"YulIdentifier","src":"7822:4:13"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7794:19:13"},"nodeType":"YulFunctionCall","src":"7794:33:13"},"nodeType":"YulExpressionStatement","src":"7794:33:13"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7729:4:13","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7738:6:13","type":""}],"src":"7704:129:13"},{"body":{"nodeType":"YulBlock","src":"7905:241:13","statements":[{"body":{"nodeType":"YulBlock","src":"8010:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"8012:16:13"},"nodeType":"YulFunctionCall","src":"8012:18:13"},"nodeType":"YulExpressionStatement","src":"8012:18:13"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7982:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"7990:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7979:2:13"},"nodeType":"YulFunctionCall","src":"7979:30:13"},"nodeType":"YulIf","src":"7976:56:13"},{"nodeType":"YulAssignment","src":"8042:37:13","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8072:6:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8050:21:13"},"nodeType":"YulFunctionCall","src":"8050:29:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8042:4:13"}]},{"nodeType":"YulAssignment","src":"8116:23:13","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"8128:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"8134:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8124:3:13"},"nodeType":"YulFunctionCall","src":"8124:15:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8116:4:13"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7889:6:13","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7900:4:13","type":""}],"src":"7839:307:13"},{"body":{"nodeType":"YulBlock","src":"8203:103:13","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8226:3:13"},{"name":"src","nodeType":"YulIdentifier","src":"8231:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"8236:6:13"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"8213:12:13"},"nodeType":"YulFunctionCall","src":"8213:30:13"},"nodeType":"YulExpressionStatement","src":"8213:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8284:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"8289:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8280:3:13"},"nodeType":"YulFunctionCall","src":"8280:16:13"},{"kind":"number","nodeType":"YulLiteral","src":"8298:1:13","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8273:6:13"},"nodeType":"YulFunctionCall","src":"8273:27:13"},"nodeType":"YulExpressionStatement","src":"8273:27:13"}]},"name":"copy_calldata_to_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8185:3:13","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8190:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"8195:6:13","type":""}],"src":"8152:154:13"},{"body":{"nodeType":"YulBlock","src":"8395:327:13","statements":[{"nodeType":"YulAssignment","src":"8405:74:13","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8471:6:13"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8430:40:13"},"nodeType":"YulFunctionCall","src":"8430:48:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8414:15:13"},"nodeType":"YulFunctionCall","src":"8414:65:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8405:5:13"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8495:5:13"},{"name":"length","nodeType":"YulIdentifier","src":"8502:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8488:6:13"},"nodeType":"YulFunctionCall","src":"8488:21:13"},"nodeType":"YulExpressionStatement","src":"8488:21:13"},{"nodeType":"YulVariableDeclaration","src":"8518:27:13","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8533:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"8540:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8529:3:13"},"nodeType":"YulFunctionCall","src":"8529:16:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8522:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"8583:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"8585:77:13"},"nodeType":"YulFunctionCall","src":"8585:79:13"},"nodeType":"YulExpressionStatement","src":"8585:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8564:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"8569:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8560:3:13"},"nodeType":"YulFunctionCall","src":"8560:16:13"},{"name":"end","nodeType":"YulIdentifier","src":"8578:3:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8557:2:13"},"nodeType":"YulFunctionCall","src":"8557:25:13"},"nodeType":"YulIf","src":"8554:112:13"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8699:3:13"},{"name":"dst","nodeType":"YulIdentifier","src":"8704:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"8709:6:13"}],"functionName":{"name":"copy_calldata_to_memory","nodeType":"YulIdentifier","src":"8675:23:13"},"nodeType":"YulFunctionCall","src":"8675:41:13"},"nodeType":"YulExpressionStatement","src":"8675:41:13"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8368:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"8373:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"8381:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8389:5:13","type":""}],"src":"8312:410:13"},{"body":{"nodeType":"YulBlock","src":"8802:277:13","statements":[{"body":{"nodeType":"YulBlock","src":"8851:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"8853:77:13"},"nodeType":"YulFunctionCall","src":"8853:79:13"},"nodeType":"YulExpressionStatement","src":"8853:79:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8830:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"8838:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8826:3:13"},"nodeType":"YulFunctionCall","src":"8826:17:13"},{"name":"end","nodeType":"YulIdentifier","src":"8845:3:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8822:3:13"},"nodeType":"YulFunctionCall","src":"8822:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8815:6:13"},"nodeType":"YulFunctionCall","src":"8815:35:13"},"nodeType":"YulIf","src":"8812:122:13"},{"nodeType":"YulVariableDeclaration","src":"8943:34:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8970:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8957:12:13"},"nodeType":"YulFunctionCall","src":"8957:20:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8947:6:13","type":""}]},{"nodeType":"YulAssignment","src":"8986:87:13","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9046:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"9054:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9042:3:13"},"nodeType":"YulFunctionCall","src":"9042:17:13"},{"name":"length","nodeType":"YulIdentifier","src":"9061:6:13"},{"name":"end","nodeType":"YulIdentifier","src":"9069:3:13"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"8995:46:13"},"nodeType":"YulFunctionCall","src":"8995:78:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8986:5:13"}]}]},"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8780:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"8788:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8796:5:13","type":""}],"src":"8741:338:13"},{"body":{"nodeType":"YulBlock","src":"9211:817:13","statements":[{"body":{"nodeType":"YulBlock","src":"9258:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9260:77:13"},"nodeType":"YulFunctionCall","src":"9260:79:13"},"nodeType":"YulExpressionStatement","src":"9260:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9232:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"9241:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9228:3:13"},"nodeType":"YulFunctionCall","src":"9228:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"9253:3:13","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9224:3:13"},"nodeType":"YulFunctionCall","src":"9224:33:13"},"nodeType":"YulIf","src":"9221:120:13"},{"nodeType":"YulBlock","src":"9351:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"9366:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"9380:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9370:6:13","type":""}]},{"nodeType":"YulAssignment","src":"9395:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9430:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"9441:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9426:3:13"},"nodeType":"YulFunctionCall","src":"9426:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9450:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9405:20:13"},"nodeType":"YulFunctionCall","src":"9405:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9395:6:13"}]}]},{"nodeType":"YulBlock","src":"9478:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"9493:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"9507:2:13","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9497:6:13","type":""}]},{"nodeType":"YulAssignment","src":"9523:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9558:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"9569:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9554:3:13"},"nodeType":"YulFunctionCall","src":"9554:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9578:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9533:20:13"},"nodeType":"YulFunctionCall","src":"9533:53:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"9523:6:13"}]}]},{"nodeType":"YulBlock","src":"9606:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"9621:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"9635:2:13","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9625:6:13","type":""}]},{"nodeType":"YulAssignment","src":"9651:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9686:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"9697:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9682:3:13"},"nodeType":"YulFunctionCall","src":"9682:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9706:7:13"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"9661:20:13"},"nodeType":"YulFunctionCall","src":"9661:53:13"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"9651:6:13"}]}]},{"nodeType":"YulBlock","src":"9734:287:13","statements":[{"nodeType":"YulVariableDeclaration","src":"9749:46:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9780:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"9791:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9776:3:13"},"nodeType":"YulFunctionCall","src":"9776:18:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9763:12:13"},"nodeType":"YulFunctionCall","src":"9763:32:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9753:6:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"9842:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9844:77:13"},"nodeType":"YulFunctionCall","src":"9844:79:13"},"nodeType":"YulExpressionStatement","src":"9844:79:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9814:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"9822:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9811:2:13"},"nodeType":"YulFunctionCall","src":"9811:30:13"},"nodeType":"YulIf","src":"9808:117:13"},{"nodeType":"YulAssignment","src":"9939:72:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9983:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"9994:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9979:3:13"},"nodeType":"YulFunctionCall","src":"9979:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10003:7:13"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"9949:29:13"},"nodeType":"YulFunctionCall","src":"9949:62:13"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"9939:6:13"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9157:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9168:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9180:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9188:6:13","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9196:6:13","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9204:6:13","type":""}],"src":"9085:943:13"},{"body":{"nodeType":"YulBlock","src":"10117:391:13","statements":[{"body":{"nodeType":"YulBlock","src":"10163:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"10165:77:13"},"nodeType":"YulFunctionCall","src":"10165:79:13"},"nodeType":"YulExpressionStatement","src":"10165:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10138:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"10147:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10134:3:13"},"nodeType":"YulFunctionCall","src":"10134:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"10159:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10130:3:13"},"nodeType":"YulFunctionCall","src":"10130:32:13"},"nodeType":"YulIf","src":"10127:119:13"},{"nodeType":"YulBlock","src":"10256:117:13","statements":[{"nodeType":"YulVariableDeclaration","src":"10271:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"10285:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10275:6:13","type":""}]},{"nodeType":"YulAssignment","src":"10300:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10335:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"10346:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10331:3:13"},"nodeType":"YulFunctionCall","src":"10331:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10355:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10310:20:13"},"nodeType":"YulFunctionCall","src":"10310:53:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10300:6:13"}]}]},{"nodeType":"YulBlock","src":"10383:118:13","statements":[{"nodeType":"YulVariableDeclaration","src":"10398:16:13","value":{"kind":"number","nodeType":"YulLiteral","src":"10412:2:13","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"10402:6:13","type":""}]},{"nodeType":"YulAssignment","src":"10428:63:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10463:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"10474:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10459:3:13"},"nodeType":"YulFunctionCall","src":"10459:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"10483:7:13"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"10438:20:13"},"nodeType":"YulFunctionCall","src":"10438:53:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"10428:6:13"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10079:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10090:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10102:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10110:6:13","type":""}],"src":"10034:474:13"},{"body":{"nodeType":"YulBlock","src":"10542:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10559:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10562:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10552:6:13"},"nodeType":"YulFunctionCall","src":"10552:88:13"},"nodeType":"YulExpressionStatement","src":"10552:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10656:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10659:4:13","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10649:6:13"},"nodeType":"YulFunctionCall","src":"10649:15:13"},"nodeType":"YulExpressionStatement","src":"10649:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10680:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10683:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10673:6:13"},"nodeType":"YulFunctionCall","src":"10673:15:13"},"nodeType":"YulExpressionStatement","src":"10673:15:13"}]},"name":"panic_error_0x22","nodeType":"YulFunctionDefinition","src":"10514:180:13"},{"body":{"nodeType":"YulBlock","src":"10751:269:13","statements":[{"nodeType":"YulAssignment","src":"10761:22:13","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10775:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"10781:1:13","type":"","value":"2"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10771:3:13"},"nodeType":"YulFunctionCall","src":"10771:12:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10761:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"10792:38:13","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"10822:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"10828:1:13","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10818:3:13"},"nodeType":"YulFunctionCall","src":"10818:12:13"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"10796:18:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"10869:51:13","statements":[{"nodeType":"YulAssignment","src":"10883:27:13","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10897:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"10905:4:13","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10893:3:13"},"nodeType":"YulFunctionCall","src":"10893:17:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10883:6:13"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10849:18:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10842:6:13"},"nodeType":"YulFunctionCall","src":"10842:26:13"},"nodeType":"YulIf","src":"10839:81:13"},{"body":{"nodeType":"YulBlock","src":"10972:42:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x22","nodeType":"YulIdentifier","src":"10986:16:13"},"nodeType":"YulFunctionCall","src":"10986:18:13"},"nodeType":"YulExpressionStatement","src":"10986:18:13"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"10936:18:13"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10959:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"10967:2:13","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10956:2:13"},"nodeType":"YulFunctionCall","src":"10956:14:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10933:2:13"},"nodeType":"YulFunctionCall","src":"10933:38:13"},"nodeType":"YulIf","src":"10930:84:13"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"10735:4:13","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"10744:6:13","type":""}],"src":"10700:320:13"},{"body":{"nodeType":"YulBlock","src":"11132:114:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11154:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"11162:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11150:3:13"},"nodeType":"YulFunctionCall","src":"11150:14:13"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"11166:34:13","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11143:6:13"},"nodeType":"YulFunctionCall","src":"11143:58:13"},"nodeType":"YulExpressionStatement","src":"11143:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11222:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"11230:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11218:3:13"},"nodeType":"YulFunctionCall","src":"11218:15:13"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"11235:3:13","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11211:6:13"},"nodeType":"YulFunctionCall","src":"11211:28:13"},"nodeType":"YulExpressionStatement","src":"11211:28:13"}]},"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11124:6:13","type":""}],"src":"11026:220:13"},{"body":{"nodeType":"YulBlock","src":"11398:220:13","statements":[{"nodeType":"YulAssignment","src":"11408:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11474:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"11479:2:13","type":"","value":"33"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11415:58:13"},"nodeType":"YulFunctionCall","src":"11415:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11408:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11580:3:13"}],"functionName":{"name":"store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","nodeType":"YulIdentifier","src":"11491:88:13"},"nodeType":"YulFunctionCall","src":"11491:93:13"},"nodeType":"YulExpressionStatement","src":"11491:93:13"},{"nodeType":"YulAssignment","src":"11593:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11604:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"11609:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11600:3:13"},"nodeType":"YulFunctionCall","src":"11600:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11593:3:13"}]}]},"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11386:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11394:3:13","type":""}],"src":"11252:366:13"},{"body":{"nodeType":"YulBlock","src":"11795:248:13","statements":[{"nodeType":"YulAssignment","src":"11805:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11817:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"11828:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11813:3:13"},"nodeType":"YulFunctionCall","src":"11813:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11805:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11852:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"11863:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11848:3:13"},"nodeType":"YulFunctionCall","src":"11848:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11871:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"11877:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11867:3:13"},"nodeType":"YulFunctionCall","src":"11867:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11841:6:13"},"nodeType":"YulFunctionCall","src":"11841:47:13"},"nodeType":"YulExpressionStatement","src":"11841:47:13"},{"nodeType":"YulAssignment","src":"11897:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12031:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11905:124:13"},"nodeType":"YulFunctionCall","src":"11905:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11897:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11775:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11790:4:13","type":""}],"src":"11624:419:13"},{"body":{"nodeType":"YulBlock","src":"12155:143:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12177:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"12185:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12173:3:13"},"nodeType":"YulFunctionCall","src":"12173:14:13"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"12189:34:13","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12166:6:13"},"nodeType":"YulFunctionCall","src":"12166:58:13"},"nodeType":"YulExpressionStatement","src":"12166:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12245:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"12253:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12241:3:13"},"nodeType":"YulFunctionCall","src":"12241:15:13"},{"hexValue":"6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"12258:32:13","type":"","value":"ken owner nor approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12234:6:13"},"nodeType":"YulFunctionCall","src":"12234:57:13"},"nodeType":"YulExpressionStatement","src":"12234:57:13"}]},"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12147:6:13","type":""}],"src":"12049:249:13"},{"body":{"nodeType":"YulBlock","src":"12450:220:13","statements":[{"nodeType":"YulAssignment","src":"12460:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12526:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"12531:2:13","type":"","value":"62"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12467:58:13"},"nodeType":"YulFunctionCall","src":"12467:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12460:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12632:3:13"}],"functionName":{"name":"store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304","nodeType":"YulIdentifier","src":"12543:88:13"},"nodeType":"YulFunctionCall","src":"12543:93:13"},"nodeType":"YulExpressionStatement","src":"12543:93:13"},{"nodeType":"YulAssignment","src":"12645:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12656:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"12661:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12652:3:13"},"nodeType":"YulFunctionCall","src":"12652:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12645:3:13"}]}]},"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12438:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12446:3:13","type":""}],"src":"12304:366:13"},{"body":{"nodeType":"YulBlock","src":"12847:248:13","statements":[{"nodeType":"YulAssignment","src":"12857:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12869:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"12880:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12865:3:13"},"nodeType":"YulFunctionCall","src":"12865:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12857:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12904:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"12915:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12900:3:13"},"nodeType":"YulFunctionCall","src":"12900:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12923:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"12929:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12919:3:13"},"nodeType":"YulFunctionCall","src":"12919:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12893:6:13"},"nodeType":"YulFunctionCall","src":"12893:47:13"},"nodeType":"YulExpressionStatement","src":"12893:47:13"},{"nodeType":"YulAssignment","src":"12949:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13083:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12957:124:13"},"nodeType":"YulFunctionCall","src":"12957:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12949:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12827:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12842:4:13","type":""}],"src":"12676:419:13"},{"body":{"nodeType":"YulBlock","src":"13207:127:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13229:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"13237:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13225:3:13"},"nodeType":"YulFunctionCall","src":"13225:14:13"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"13241:34:13","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13218:6:13"},"nodeType":"YulFunctionCall","src":"13218:58:13"},"nodeType":"YulExpressionStatement","src":"13218:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13297:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"13305:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13293:3:13"},"nodeType":"YulFunctionCall","src":"13293:15:13"},{"hexValue":"72206e6f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"13310:16:13","type":"","value":"r nor approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13286:6:13"},"nodeType":"YulFunctionCall","src":"13286:41:13"},"nodeType":"YulExpressionStatement","src":"13286:41:13"}]},"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"13199:6:13","type":""}],"src":"13101:233:13"},{"body":{"nodeType":"YulBlock","src":"13486:220:13","statements":[{"nodeType":"YulAssignment","src":"13496:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13562:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"13567:2:13","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13503:58:13"},"nodeType":"YulFunctionCall","src":"13503:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13496:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13668:3:13"}],"functionName":{"name":"store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b","nodeType":"YulIdentifier","src":"13579:88:13"},"nodeType":"YulFunctionCall","src":"13579:93:13"},"nodeType":"YulExpressionStatement","src":"13579:93:13"},{"nodeType":"YulAssignment","src":"13681:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13692:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"13697:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13688:3:13"},"nodeType":"YulFunctionCall","src":"13688:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13681:3:13"}]}]},"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13474:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13482:3:13","type":""}],"src":"13340:366:13"},{"body":{"nodeType":"YulBlock","src":"13883:248:13","statements":[{"nodeType":"YulAssignment","src":"13893:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13905:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"13916:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13901:3:13"},"nodeType":"YulFunctionCall","src":"13901:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13893:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13940:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"13951:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13936:3:13"},"nodeType":"YulFunctionCall","src":"13936:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13959:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"13965:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13955:3:13"},"nodeType":"YulFunctionCall","src":"13955:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13929:6:13"},"nodeType":"YulFunctionCall","src":"13929:47:13"},"nodeType":"YulExpressionStatement","src":"13929:47:13"},{"nodeType":"YulAssignment","src":"13985:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14119:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13993:124:13"},"nodeType":"YulFunctionCall","src":"13993:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13985:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13863:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13878:4:13","type":""}],"src":"13712:419:13"},{"body":{"nodeType":"YulBlock","src":"14243:68:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14265:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"14273:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14261:3:13"},"nodeType":"YulFunctionCall","src":"14261:14:13"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"14277:26:13","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14254:6:13"},"nodeType":"YulFunctionCall","src":"14254:50:13"},"nodeType":"YulExpressionStatement","src":"14254:50:13"}]},"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14235:6:13","type":""}],"src":"14137:174:13"},{"body":{"nodeType":"YulBlock","src":"14463:220:13","statements":[{"nodeType":"YulAssignment","src":"14473:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14539:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"14544:2:13","type":"","value":"24"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14480:58:13"},"nodeType":"YulFunctionCall","src":"14480:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14473:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14645:3:13"}],"functionName":{"name":"store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","nodeType":"YulIdentifier","src":"14556:88:13"},"nodeType":"YulFunctionCall","src":"14556:93:13"},"nodeType":"YulExpressionStatement","src":"14556:93:13"},{"nodeType":"YulAssignment","src":"14658:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14669:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"14674:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14665:3:13"},"nodeType":"YulFunctionCall","src":"14665:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14658:3:13"}]}]},"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14451:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14459:3:13","type":""}],"src":"14317:366:13"},{"body":{"nodeType":"YulBlock","src":"14860:248:13","statements":[{"nodeType":"YulAssignment","src":"14870:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14882:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"14893:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14878:3:13"},"nodeType":"YulFunctionCall","src":"14878:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14870:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14917:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"14928:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14913:3:13"},"nodeType":"YulFunctionCall","src":"14913:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14936:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"14942:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14932:3:13"},"nodeType":"YulFunctionCall","src":"14932:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14906:6:13"},"nodeType":"YulFunctionCall","src":"14906:47:13"},"nodeType":"YulExpressionStatement","src":"14906:47:13"},{"nodeType":"YulAssignment","src":"14962:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15096:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14970:124:13"},"nodeType":"YulFunctionCall","src":"14970:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14962:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14840:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14855:4:13","type":""}],"src":"14689:419:13"},{"body":{"nodeType":"YulBlock","src":"15220:122:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15242:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"15250:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15238:3:13"},"nodeType":"YulFunctionCall","src":"15238:14:13"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"15254:34:13","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15231:6:13"},"nodeType":"YulFunctionCall","src":"15231:58:13"},"nodeType":"YulExpressionStatement","src":"15231:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15310:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"15318:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15306:3:13"},"nodeType":"YulFunctionCall","src":"15306:15:13"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"15323:11:13","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15299:6:13"},"nodeType":"YulFunctionCall","src":"15299:36:13"},"nodeType":"YulExpressionStatement","src":"15299:36:13"}]},"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"15212:6:13","type":""}],"src":"15114:228:13"},{"body":{"nodeType":"YulBlock","src":"15494:220:13","statements":[{"nodeType":"YulAssignment","src":"15504:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15570:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"15575:2:13","type":"","value":"41"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15511:58:13"},"nodeType":"YulFunctionCall","src":"15511:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15504:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15676:3:13"}],"functionName":{"name":"store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","nodeType":"YulIdentifier","src":"15587:88:13"},"nodeType":"YulFunctionCall","src":"15587:93:13"},"nodeType":"YulExpressionStatement","src":"15587:93:13"},{"nodeType":"YulAssignment","src":"15689:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15700:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"15705:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15696:3:13"},"nodeType":"YulFunctionCall","src":"15696:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15689:3:13"}]}]},"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15482:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15490:3:13","type":""}],"src":"15348:366:13"},{"body":{"nodeType":"YulBlock","src":"15891:248:13","statements":[{"nodeType":"YulAssignment","src":"15901:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15913:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"15924:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15909:3:13"},"nodeType":"YulFunctionCall","src":"15909:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15901:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15948:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"15959:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15944:3:13"},"nodeType":"YulFunctionCall","src":"15944:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15967:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"15973:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15963:3:13"},"nodeType":"YulFunctionCall","src":"15963:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15937:6:13"},"nodeType":"YulFunctionCall","src":"15937:47:13"},"nodeType":"YulExpressionStatement","src":"15937:47:13"},{"nodeType":"YulAssignment","src":"15993:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16127:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16001:124:13"},"nodeType":"YulFunctionCall","src":"16001:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15993:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15871:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15886:4:13","type":""}],"src":"15720:419:13"},{"body":{"nodeType":"YulBlock","src":"16259:34:13","statements":[{"nodeType":"YulAssignment","src":"16269:18:13","value":{"name":"pos","nodeType":"YulIdentifier","src":"16284:3:13"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16269:11:13"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16231:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"16236:6:13","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16247:11:13","type":""}],"src":"16145:148:13"},{"body":{"nodeType":"YulBlock","src":"16409:267:13","statements":[{"nodeType":"YulVariableDeclaration","src":"16419:53:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16466:5:13"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"16433:32:13"},"nodeType":"YulFunctionCall","src":"16433:39:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16423:6:13","type":""}]},{"nodeType":"YulAssignment","src":"16481:96:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16565:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"16570:6:13"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16488:76:13"},"nodeType":"YulFunctionCall","src":"16488:89:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16481:3:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16612:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"16619:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16608:3:13"},"nodeType":"YulFunctionCall","src":"16608:16:13"},{"name":"pos","nodeType":"YulIdentifier","src":"16626:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"16631:6:13"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"16586:21:13"},"nodeType":"YulFunctionCall","src":"16586:52:13"},"nodeType":"YulExpressionStatement","src":"16586:52:13"},{"nodeType":"YulAssignment","src":"16647:23:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16658:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"16663:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16654:3:13"},"nodeType":"YulFunctionCall","src":"16654:16:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16647:3:13"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16390:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16397:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16405:3:13","type":""}],"src":"16299:377:13"},{"body":{"nodeType":"YulBlock","src":"16866:251:13","statements":[{"nodeType":"YulAssignment","src":"16877:102:13","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16966:6:13"},{"name":"pos","nodeType":"YulIdentifier","src":"16975:3:13"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16884:81:13"},"nodeType":"YulFunctionCall","src":"16884:95:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16877:3:13"}]},{"nodeType":"YulAssignment","src":"16989:102:13","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"17078:6:13"},{"name":"pos","nodeType":"YulIdentifier","src":"17087:3:13"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16996:81:13"},"nodeType":"YulFunctionCall","src":"16996:95:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16989:3:13"}]},{"nodeType":"YulAssignment","src":"17101:10:13","value":{"name":"pos","nodeType":"YulIdentifier","src":"17108:3:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17101:3:13"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16837:3:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16843:6:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16851:6:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16862:3:13","type":""}],"src":"16682:435:13"},{"body":{"nodeType":"YulBlock","src":"17229:118:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17251:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"17259:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17247:3:13"},"nodeType":"YulFunctionCall","src":"17247:14:13"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"17263:34:13","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17240:6:13"},"nodeType":"YulFunctionCall","src":"17240:58:13"},"nodeType":"YulExpressionStatement","src":"17240:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17319:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"17327:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17315:3:13"},"nodeType":"YulFunctionCall","src":"17315:15:13"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"17332:7:13","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17308:6:13"},"nodeType":"YulFunctionCall","src":"17308:32:13"},"nodeType":"YulExpressionStatement","src":"17308:32:13"}]},"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17221:6:13","type":""}],"src":"17123:224:13"},{"body":{"nodeType":"YulBlock","src":"17499:220:13","statements":[{"nodeType":"YulAssignment","src":"17509:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17575:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"17580:2:13","type":"","value":"37"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17516:58:13"},"nodeType":"YulFunctionCall","src":"17516:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17509:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17681:3:13"}],"functionName":{"name":"store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","nodeType":"YulIdentifier","src":"17592:88:13"},"nodeType":"YulFunctionCall","src":"17592:93:13"},"nodeType":"YulExpressionStatement","src":"17592:93:13"},{"nodeType":"YulAssignment","src":"17694:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17705:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"17710:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17701:3:13"},"nodeType":"YulFunctionCall","src":"17701:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17694:3:13"}]}]},"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17487:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17495:3:13","type":""}],"src":"17353:366:13"},{"body":{"nodeType":"YulBlock","src":"17896:248:13","statements":[{"nodeType":"YulAssignment","src":"17906:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17918:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"17929:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17914:3:13"},"nodeType":"YulFunctionCall","src":"17914:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17906:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17953:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"17964:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17949:3:13"},"nodeType":"YulFunctionCall","src":"17949:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17972:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"17978:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17968:3:13"},"nodeType":"YulFunctionCall","src":"17968:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17942:6:13"},"nodeType":"YulFunctionCall","src":"17942:47:13"},"nodeType":"YulExpressionStatement","src":"17942:47:13"},{"nodeType":"YulAssignment","src":"17998:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18132:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18006:124:13"},"nodeType":"YulFunctionCall","src":"18006:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17998:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17876:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17891:4:13","type":""}],"src":"17725:419:13"},{"body":{"nodeType":"YulBlock","src":"18256:117:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18278:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"18286:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18274:3:13"},"nodeType":"YulFunctionCall","src":"18274:14:13"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"18290:34:13","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18267:6:13"},"nodeType":"YulFunctionCall","src":"18267:58:13"},"nodeType":"YulExpressionStatement","src":"18267:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18346:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"18354:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18342:3:13"},"nodeType":"YulFunctionCall","src":"18342:15:13"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"18359:6:13","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18335:6:13"},"nodeType":"YulFunctionCall","src":"18335:31:13"},"nodeType":"YulExpressionStatement","src":"18335:31:13"}]},"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18248:6:13","type":""}],"src":"18150:223:13"},{"body":{"nodeType":"YulBlock","src":"18525:220:13","statements":[{"nodeType":"YulAssignment","src":"18535:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18601:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"18606:2:13","type":"","value":"36"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18542:58:13"},"nodeType":"YulFunctionCall","src":"18542:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18535:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18707:3:13"}],"functionName":{"name":"store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","nodeType":"YulIdentifier","src":"18618:88:13"},"nodeType":"YulFunctionCall","src":"18618:93:13"},"nodeType":"YulExpressionStatement","src":"18618:93:13"},{"nodeType":"YulAssignment","src":"18720:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18731:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"18736:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18727:3:13"},"nodeType":"YulFunctionCall","src":"18727:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18720:3:13"}]}]},"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18513:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18521:3:13","type":""}],"src":"18379:366:13"},{"body":{"nodeType":"YulBlock","src":"18922:248:13","statements":[{"nodeType":"YulAssignment","src":"18932:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18944:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"18955:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18940:3:13"},"nodeType":"YulFunctionCall","src":"18940:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18932:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18979:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"18990:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18975:3:13"},"nodeType":"YulFunctionCall","src":"18975:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18998:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"19004:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18994:3:13"},"nodeType":"YulFunctionCall","src":"18994:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18968:6:13"},"nodeType":"YulFunctionCall","src":"18968:47:13"},"nodeType":"YulExpressionStatement","src":"18968:47:13"},{"nodeType":"YulAssignment","src":"19024:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19158:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19032:124:13"},"nodeType":"YulFunctionCall","src":"19032:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19024:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18902:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18917:4:13","type":""}],"src":"18751:419:13"},{"body":{"nodeType":"YulBlock","src":"19204:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19221:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19224:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19214:6:13"},"nodeType":"YulFunctionCall","src":"19214:88:13"},"nodeType":"YulExpressionStatement","src":"19214:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19318:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"19321:4:13","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19311:6:13"},"nodeType":"YulFunctionCall","src":"19311:15:13"},"nodeType":"YulExpressionStatement","src":"19311:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19342:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19345:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19335:6:13"},"nodeType":"YulFunctionCall","src":"19335:15:13"},"nodeType":"YulExpressionStatement","src":"19335:15:13"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"19176:180:13"},{"body":{"nodeType":"YulBlock","src":"19407:146:13","statements":[{"nodeType":"YulAssignment","src":"19417:25:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19440:1:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19422:17:13"},"nodeType":"YulFunctionCall","src":"19422:20:13"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19417:1:13"}]},{"nodeType":"YulAssignment","src":"19451:25:13","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19474:1:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19456:17:13"},"nodeType":"YulFunctionCall","src":"19456:20:13"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19451:1:13"}]},{"body":{"nodeType":"YulBlock","src":"19498:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19500:16:13"},"nodeType":"YulFunctionCall","src":"19500:18:13"},"nodeType":"YulExpressionStatement","src":"19500:18:13"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19492:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"19495:1:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"19489:2:13"},"nodeType":"YulFunctionCall","src":"19489:8:13"},"nodeType":"YulIf","src":"19486:34:13"},{"nodeType":"YulAssignment","src":"19530:17:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19542:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"19545:1:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19538:3:13"},"nodeType":"YulFunctionCall","src":"19538:9:13"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"19530:4:13"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19393:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"19396:1:13","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"19402:4:13","type":""}],"src":"19362:191:13"},{"body":{"nodeType":"YulBlock","src":"19603:261:13","statements":[{"nodeType":"YulAssignment","src":"19613:25:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19636:1:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19618:17:13"},"nodeType":"YulFunctionCall","src":"19618:20:13"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19613:1:13"}]},{"nodeType":"YulAssignment","src":"19647:25:13","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19670:1:13"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19652:17:13"},"nodeType":"YulFunctionCall","src":"19652:20:13"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19647:1:13"}]},{"body":{"nodeType":"YulBlock","src":"19810:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19812:16:13"},"nodeType":"YulFunctionCall","src":"19812:18:13"},"nodeType":"YulExpressionStatement","src":"19812:18:13"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19731:1:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19738:66:13","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"y","nodeType":"YulIdentifier","src":"19806:1:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19734:3:13"},"nodeType":"YulFunctionCall","src":"19734:74:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"19728:2:13"},"nodeType":"YulFunctionCall","src":"19728:81:13"},"nodeType":"YulIf","src":"19725:107:13"},{"nodeType":"YulAssignment","src":"19842:16:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19853:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"19856:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19849:3:13"},"nodeType":"YulFunctionCall","src":"19849:9:13"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"19842:3:13"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19590:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"19593:1:13","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"19599:3:13","type":""}],"src":"19559:305:13"},{"body":{"nodeType":"YulBlock","src":"19976:69:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19998:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"20006:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19994:3:13"},"nodeType":"YulFunctionCall","src":"19994:14:13"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"20010:27:13","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19987:6:13"},"nodeType":"YulFunctionCall","src":"19987:51:13"},"nodeType":"YulExpressionStatement","src":"19987:51:13"}]},"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19968:6:13","type":""}],"src":"19870:175:13"},{"body":{"nodeType":"YulBlock","src":"20197:220:13","statements":[{"nodeType":"YulAssignment","src":"20207:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20273:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"20278:2:13","type":"","value":"25"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20214:58:13"},"nodeType":"YulFunctionCall","src":"20214:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"20207:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20379:3:13"}],"functionName":{"name":"store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","nodeType":"YulIdentifier","src":"20290:88:13"},"nodeType":"YulFunctionCall","src":"20290:93:13"},"nodeType":"YulExpressionStatement","src":"20290:93:13"},{"nodeType":"YulAssignment","src":"20392:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20403:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"20408:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20399:3:13"},"nodeType":"YulFunctionCall","src":"20399:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"20392:3:13"}]}]},"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"20185:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"20193:3:13","type":""}],"src":"20051:366:13"},{"body":{"nodeType":"YulBlock","src":"20594:248:13","statements":[{"nodeType":"YulAssignment","src":"20604:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20616:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"20627:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20612:3:13"},"nodeType":"YulFunctionCall","src":"20612:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20604:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20651:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"20662:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20647:3:13"},"nodeType":"YulFunctionCall","src":"20647:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20670:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"20676:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20666:3:13"},"nodeType":"YulFunctionCall","src":"20666:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20640:6:13"},"nodeType":"YulFunctionCall","src":"20640:47:13"},"nodeType":"YulExpressionStatement","src":"20640:47:13"},{"nodeType":"YulAssignment","src":"20696:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20830:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20704:124:13"},"nodeType":"YulFunctionCall","src":"20704:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20696:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20574:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20589:4:13","type":""}],"src":"20423:419:13"},{"body":{"nodeType":"YulBlock","src":"20954:131:13","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20976:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"20984:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20972:3:13"},"nodeType":"YulFunctionCall","src":"20972:14:13"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"20988:34:13","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20965:6:13"},"nodeType":"YulFunctionCall","src":"20965:58:13"},"nodeType":"YulExpressionStatement","src":"20965:58:13"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21044:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"21052:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21040:3:13"},"nodeType":"YulFunctionCall","src":"21040:15:13"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"21057:20:13","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21033:6:13"},"nodeType":"YulFunctionCall","src":"21033:45:13"},"nodeType":"YulExpressionStatement","src":"21033:45:13"}]},"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"20946:6:13","type":""}],"src":"20848:237:13"},{"body":{"nodeType":"YulBlock","src":"21237:220:13","statements":[{"nodeType":"YulAssignment","src":"21247:74:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21313:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"21318:2:13","type":"","value":"50"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21254:58:13"},"nodeType":"YulFunctionCall","src":"21254:67:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"21247:3:13"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21419:3:13"}],"functionName":{"name":"store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","nodeType":"YulIdentifier","src":"21330:88:13"},"nodeType":"YulFunctionCall","src":"21330:93:13"},"nodeType":"YulExpressionStatement","src":"21330:93:13"},{"nodeType":"YulAssignment","src":"21432:19:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21443:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"21448:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21439:3:13"},"nodeType":"YulFunctionCall","src":"21439:12:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21432:3:13"}]}]},"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21225:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21233:3:13","type":""}],"src":"21091:366:13"},{"body":{"nodeType":"YulBlock","src":"21634:248:13","statements":[{"nodeType":"YulAssignment","src":"21644:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21656:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"21667:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21652:3:13"},"nodeType":"YulFunctionCall","src":"21652:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21644:4:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21691:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"21702:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21687:3:13"},"nodeType":"YulFunctionCall","src":"21687:17:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21710:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"21716:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21706:3:13"},"nodeType":"YulFunctionCall","src":"21706:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21680:6:13"},"nodeType":"YulFunctionCall","src":"21680:47:13"},"nodeType":"YulExpressionStatement","src":"21680:47:13"},{"nodeType":"YulAssignment","src":"21736:139:13","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21870:4:13"}],"functionName":{"name":"abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21744:124:13"},"nodeType":"YulFunctionCall","src":"21744:131:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21736:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21614:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21629:4:13","type":""}],"src":"21463:419:13"},{"body":{"nodeType":"YulBlock","src":"21916:152:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21933:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"21936:77:13","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21926:6:13"},"nodeType":"YulFunctionCall","src":"21926:88:13"},"nodeType":"YulExpressionStatement","src":"21926:88:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22030:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"22033:4:13","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22023:6:13"},"nodeType":"YulFunctionCall","src":"22023:15:13"},"nodeType":"YulExpressionStatement","src":"22023:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22054:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22057:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"22047:6:13"},"nodeType":"YulFunctionCall","src":"22047:15:13"},"nodeType":"YulExpressionStatement","src":"22047:15:13"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"21888:180:13"},{"body":{"nodeType":"YulBlock","src":"22132:40:13","statements":[{"nodeType":"YulAssignment","src":"22143:22:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22159:5:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22153:5:13"},"nodeType":"YulFunctionCall","src":"22153:12:13"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"22143:6:13"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22115:5:13","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"22125:6:13","type":""}],"src":"22074:98:13"},{"body":{"nodeType":"YulBlock","src":"22273:73:13","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22290:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"22295:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22283:6:13"},"nodeType":"YulFunctionCall","src":"22283:19:13"},"nodeType":"YulExpressionStatement","src":"22283:19:13"},{"nodeType":"YulAssignment","src":"22311:29:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22330:3:13"},{"kind":"number","nodeType":"YulLiteral","src":"22335:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22326:3:13"},"nodeType":"YulFunctionCall","src":"22326:14:13"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"22311:11:13"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"22245:3:13","type":""},{"name":"length","nodeType":"YulTypedName","src":"22250:6:13","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"22261:11:13","type":""}],"src":"22178:168:13"},{"body":{"nodeType":"YulBlock","src":"22442:270:13","statements":[{"nodeType":"YulVariableDeclaration","src":"22452:52:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22498:5:13"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"22466:31:13"},"nodeType":"YulFunctionCall","src":"22466:38:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"22456:6:13","type":""}]},{"nodeType":"YulAssignment","src":"22513:77:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22578:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"22583:6:13"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22520:57:13"},"nodeType":"YulFunctionCall","src":"22520:70:13"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"22513:3:13"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22625:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"22632:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22621:3:13"},"nodeType":"YulFunctionCall","src":"22621:16:13"},{"name":"pos","nodeType":"YulIdentifier","src":"22639:3:13"},{"name":"length","nodeType":"YulIdentifier","src":"22644:6:13"}],"functionName":{"name":"copy_memory_to_memory","nodeType":"YulIdentifier","src":"22599:21:13"},"nodeType":"YulFunctionCall","src":"22599:52:13"},"nodeType":"YulExpressionStatement","src":"22599:52:13"},{"nodeType":"YulAssignment","src":"22660:46:13","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22671:3:13"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"22698:6:13"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"22676:21:13"},"nodeType":"YulFunctionCall","src":"22676:29:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22667:3:13"},"nodeType":"YulFunctionCall","src":"22667:39:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"22660:3:13"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22423:5:13","type":""},{"name":"pos","nodeType":"YulTypedName","src":"22430:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"22438:3:13","type":""}],"src":"22352:360:13"},{"body":{"nodeType":"YulBlock","src":"22918:440:13","statements":[{"nodeType":"YulAssignment","src":"22928:27:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22940:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"22951:3:13","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22936:3:13"},"nodeType":"YulFunctionCall","src":"22936:19:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22928:4:13"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"23009:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23022:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"23033:1:13","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23018:3:13"},"nodeType":"YulFunctionCall","src":"23018:17:13"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22965:43:13"},"nodeType":"YulFunctionCall","src":"22965:71:13"},"nodeType":"YulExpressionStatement","src":"22965:71:13"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"23090:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23103:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"23114:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23099:3:13"},"nodeType":"YulFunctionCall","src":"23099:18:13"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"23046:43:13"},"nodeType":"YulFunctionCall","src":"23046:72:13"},"nodeType":"YulExpressionStatement","src":"23046:72:13"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"23172:6:13"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23185:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"23196:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23181:3:13"},"nodeType":"YulFunctionCall","src":"23181:18:13"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"23128:43:13"},"nodeType":"YulFunctionCall","src":"23128:72:13"},"nodeType":"YulExpressionStatement","src":"23128:72:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23221:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"23232:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23217:3:13"},"nodeType":"YulFunctionCall","src":"23217:18:13"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23241:4:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"23247:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23237:3:13"},"nodeType":"YulFunctionCall","src":"23237:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23210:6:13"},"nodeType":"YulFunctionCall","src":"23210:48:13"},"nodeType":"YulExpressionStatement","src":"23210:48:13"},{"nodeType":"YulAssignment","src":"23267:84:13","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"23337:6:13"},{"name":"tail","nodeType":"YulIdentifier","src":"23346:4:13"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23275:61:13"},"nodeType":"YulFunctionCall","src":"23275:76:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23267:4:13"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22866:9:13","type":""},{"name":"value3","nodeType":"YulTypedName","src":"22878:6:13","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22886:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22894:6:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22902:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22913:4:13","type":""}],"src":"22718:640:13"},{"body":{"nodeType":"YulBlock","src":"23426:79:13","statements":[{"nodeType":"YulAssignment","src":"23436:22:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"23451:6:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"23445:5:13"},"nodeType":"YulFunctionCall","src":"23445:13:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"23436:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23493:5:13"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"23467:25:13"},"nodeType":"YulFunctionCall","src":"23467:32:13"},"nodeType":"YulExpressionStatement","src":"23467:32:13"}]},"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"23404:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"23412:3:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"23420:5:13","type":""}],"src":"23364:141:13"},{"body":{"nodeType":"YulBlock","src":"23587:273:13","statements":[{"body":{"nodeType":"YulBlock","src":"23633:83:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"23635:77:13"},"nodeType":"YulFunctionCall","src":"23635:79:13"},"nodeType":"YulExpressionStatement","src":"23635:79:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"23608:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"23617:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23604:3:13"},"nodeType":"YulFunctionCall","src":"23604:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"23629:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"23600:3:13"},"nodeType":"YulFunctionCall","src":"23600:32:13"},"nodeType":"YulIf","src":"23597:119:13"},{"nodeType":"YulBlock","src":"23726:127:13","statements":[{"nodeType":"YulVariableDeclaration","src":"23741:15:13","value":{"kind":"number","nodeType":"YulLiteral","src":"23755:1:13","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"23745:6:13","type":""}]},{"nodeType":"YulAssignment","src":"23770:73:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23815:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"23826:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23811:3:13"},"nodeType":"YulFunctionCall","src":"23811:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"23835:7:13"}],"functionName":{"name":"abi_decode_t_bytes4_fromMemory","nodeType":"YulIdentifier","src":"23780:30:13"},"nodeType":"YulFunctionCall","src":"23780:63:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"23770:6:13"}]}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23557:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"23568:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"23580:6:13","type":""}],"src":"23511:349:13"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory(src, dst, length) {\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 if gt(i, length)\n {\n // clear end\n mstore(add(dst, length), 0)\n }\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_bool(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory(src, dst, length) {\n calldatacopy(dst, src, length)\n // clear end\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approval to current owne\")\n\n mstore(add(memPtr, 32), \"r\")\n\n }\n\n function abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n store_literal_in_memory_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve caller is not to\")\n\n mstore(add(memPtr, 32), \"ken owner nor approved for all\")\n\n }\n\n function abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 62)\n store_literal_in_memory_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: caller is not token owne\")\n\n mstore(add(memPtr, 32), \"r nor approved\")\n\n }\n\n function abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: invalid token ID\")\n\n }\n\n function abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: address zero is not a va\")\n\n mstore(add(memPtr, 32), \"lid owner\")\n\n }\n\n function abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 41)\n store_literal_in_memory_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer from incorrect \")\n\n mstore(add(memPtr, 32), \"owner\")\n\n }\n\n function abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n store_literal_in_memory_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to the zero add\")\n\n mstore(add(memPtr, 32), \"ress\")\n\n }\n\n function abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n store_literal_in_memory_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n if lt(x, y) { panic_error_0x11() }\n\n diff := sub(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n\n // overflow, if x > (maxValue - y)\n if gt(x, sub(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, y)) { panic_error_0x11() }\n\n sum := add(x, y)\n }\n\n function store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: approve to caller\")\n\n }\n\n function abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 25)\n store_literal_in_memory_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(memPtr) {\n\n mstore(add(memPtr, 0), \"ERC721: transfer to non ERC721Re\")\n\n mstore(add(memPtr, 32), \"ceiver implementer\")\n\n }\n\n function abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 50)\n store_literal_in_memory_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_decode_t_bytes4_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":13,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb46514610224578063b88d4fde14610240578063c87b56dd1461025c578063e985e9c51461028c576100cf565b80636352211e146101a657806370a08231146101d657806395d89b4114610206576100cf565b806301ffc9a7146100d457806306fdde0314610104578063081812fc14610122578063095ea7b31461015257806323b872dd1461016e57806342842e0e1461018a575b600080fd5b6100ee60048036038101906100e99190611450565b6102bc565b6040516100fb9190611498565b60405180910390f35b61010c61039e565b604051610119919061154c565b60405180910390f35b61013c600480360381019061013791906115a4565b610430565b6040516101499190611612565b60405180910390f35b61016c60048036038101906101679190611659565b610476565b005b61018860048036038101906101839190611699565b61058d565b005b6101a4600480360381019061019f9190611699565b6105ed565b005b6101c060048036038101906101bb91906115a4565b61060d565b6040516101cd9190611612565b60405180910390f35b6101f060048036038101906101eb91906116ec565b6106be565b6040516101fd9190611728565b60405180910390f35b61020e610775565b60405161021b919061154c565b60405180910390f35b61023e6004803603810190610239919061176f565b610807565b005b61025a600480360381019061025591906118e4565b61081d565b005b610276600480360381019061027191906115a4565b61087f565b604051610283919061154c565b60405180910390f35b6102a660048036038101906102a19190611967565b6108e7565b6040516102b39190611498565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061039757506103968261097b565b5b9050919050565b6060600080546103ad906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546103d9906119d6565b80156104265780601f106103fb57610100808354040283529160200191610426565b820191906000526020600020905b81548152906001019060200180831161040957829003601f168201915b5050505050905090565b600061043b826109e5565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006104818261060d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e890611a79565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610510610a30565b73ffffffffffffffffffffffffffffffffffffffff16148061053f575061053e81610539610a30565b6108e7565b5b61057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057590611b0b565b60405180910390fd5b6105888383610a38565b505050565b61059e610598610a30565b82610af1565b6105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d490611b9d565b60405180910390fd5b6105e8838383610b86565b505050565b6106088383836040518060200160405280600081525061081d565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90611c09565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590611c9b565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060018054610784906119d6565b80601f01602080910402602001604051908101604052809291908181526020018280546107b0906119d6565b80156107fd5780601f106107d2576101008083540402835291602001916107fd565b820191906000526020600020905b8154815290600101906020018083116107e057829003601f168201915b5050505050905090565b610819610812610a30565b8383610dec565b5050565b61082e610828610a30565b83610af1565b61086d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086490611b9d565b60405180910390fd5b61087984848484610f58565b50505050565b606061088a826109e5565b6000610894610fb4565b905060008151116108b457604051806020016040528060008152506108df565b806108be84610fcb565b6040516020016108cf929190611cf7565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6109ee81611099565b610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490611c09565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610aab8361060d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610afd8361060d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b3f5750610b3e81856108e7565b5b80610b7d57508373ffffffffffffffffffffffffffffffffffffffff16610b6584610430565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ba68261060d565b73ffffffffffffffffffffffffffffffffffffffff1614610bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf390611d8d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6290611e1f565b60405180910390fd5b610c76838383611105565b610c81600082610a38565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cd19190611e6e565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d289190611ea2565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610de783838361110a565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190611f44565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f4b9190611498565b60405180910390a3505050565b610f63848484610b86565b610f6f8484848461110f565b610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590611fd6565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606060006001610fda84611291565b01905060008167ffffffffffffffff811115610ff957610ff86117b9565b5b6040519080825280601f01601f19166020018201604052801561102b5781602001600182028036833780820191505090505b509050600082602001820190505b60011561108e578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161108257611081611ff6565b5b04945060008503611039575b819350505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b505050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b1115611284578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611154610a30565b8786866040518563ffffffff1660e01b8152600401611176949392919061207a565b6020604051808303816000875af19250505080156111b257506040513d601f19601f820116820180604052508101906111af91906120db565b60015b611234573d80600081146111e2576040519150601f19603f3d011682016040523d82523d6000602084013e6111e7565b606091505b50600081510361122c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122390611fd6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611289565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106112ef577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816112e5576112e4611ff6565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061132c576d04ee2d6d415b85acef8100000000838161132257611321611ff6565b5b0492506020810190505b662386f26fc10000831061135b57662386f26fc10000838161135157611350611ff6565b5b0492506010810190505b6305f5e1008310611384576305f5e100838161137a57611379611ff6565b5b0492506008810190505b61271083106113a957612710838161139f5761139e611ff6565b5b0492506004810190505b606483106113cc57606483816113c2576113c1611ff6565b5b0492506002810190505b600a83106113db576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61142d816113f8565b811461143857600080fd5b50565b60008135905061144a81611424565b92915050565b600060208284031215611466576114656113ee565b5b60006114748482850161143b565b91505092915050565b60008115159050919050565b6114928161147d565b82525050565b60006020820190506114ad6000830184611489565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156114ed5780820151818401526020810190506114d2565b838111156114fc576000848401525b50505050565b6000601f19601f8301169050919050565b600061151e826114b3565b61152881856114be565b93506115388185602086016114cf565b61154181611502565b840191505092915050565b600060208201905081810360008301526115668184611513565b905092915050565b6000819050919050565b6115818161156e565b811461158c57600080fd5b50565b60008135905061159e81611578565b92915050565b6000602082840312156115ba576115b96113ee565b5b60006115c88482850161158f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115fc826115d1565b9050919050565b61160c816115f1565b82525050565b60006020820190506116276000830184611603565b92915050565b611636816115f1565b811461164157600080fd5b50565b6000813590506116538161162d565b92915050565b600080604083850312156116705761166f6113ee565b5b600061167e85828601611644565b925050602061168f8582860161158f565b9150509250929050565b6000806000606084860312156116b2576116b16113ee565b5b60006116c086828701611644565b93505060206116d186828701611644565b92505060406116e28682870161158f565b9150509250925092565b600060208284031215611702576117016113ee565b5b600061171084828501611644565b91505092915050565b6117228161156e565b82525050565b600060208201905061173d6000830184611719565b92915050565b61174c8161147d565b811461175757600080fd5b50565b60008135905061176981611743565b92915050565b60008060408385031215611786576117856113ee565b5b600061179485828601611644565b92505060206117a58582860161175a565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6117f182611502565b810181811067ffffffffffffffff821117156118105761180f6117b9565b5b80604052505050565b60006118236113e4565b905061182f82826117e8565b919050565b600067ffffffffffffffff82111561184f5761184e6117b9565b5b61185882611502565b9050602081019050919050565b82818337600083830152505050565b600061188761188284611834565b611819565b9050828152602081018484840111156118a3576118a26117b4565b5b6118ae848285611865565b509392505050565b600082601f8301126118cb576118ca6117af565b5b81356118db848260208601611874565b91505092915050565b600080600080608085870312156118fe576118fd6113ee565b5b600061190c87828801611644565b945050602061191d87828801611644565b935050604061192e8782880161158f565b925050606085013567ffffffffffffffff81111561194f5761194e6113f3565b5b61195b878288016118b6565b91505092959194509250565b6000806040838503121561197e5761197d6113ee565b5b600061198c85828601611644565b925050602061199d85828601611644565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119ee57607f821691505b602082108103611a0157611a006119a7565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a636021836114be565b9150611a6e82611a07565b604082019050919050565b60006020820190508181036000830152611a9281611a56565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000611af5603e836114be565b9150611b0082611a99565b604082019050919050565b60006020820190508181036000830152611b2481611ae8565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b6000611b87602e836114be565b9150611b9282611b2b565b604082019050919050565b60006020820190508181036000830152611bb681611b7a565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000611bf36018836114be565b9150611bfe82611bbd565b602082019050919050565b60006020820190508181036000830152611c2281611be6565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000611c856029836114be565b9150611c9082611c29565b604082019050919050565b60006020820190508181036000830152611cb481611c78565b9050919050565b600081905092915050565b6000611cd1826114b3565b611cdb8185611cbb565b9350611ceb8185602086016114cf565b80840191505092915050565b6000611d038285611cc6565b9150611d0f8284611cc6565b91508190509392505050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000611d776025836114be565b9150611d8282611d1b565b604082019050919050565b60006020820190508181036000830152611da681611d6a565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611e096024836114be565b9150611e1482611dad565b604082019050919050565b60006020820190508181036000830152611e3881611dfc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e798261156e565b9150611e848361156e565b925082821015611e9757611e96611e3f565b5b828203905092915050565b6000611ead8261156e565b9150611eb88361156e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611eed57611eec611e3f565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000611f2e6019836114be565b9150611f3982611ef8565b602082019050919050565b60006020820190508181036000830152611f5d81611f21565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000611fc06032836114be565b9150611fcb82611f64565b604082019050919050565b60006020820190508181036000830152611fef81611fb3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600061204c82612025565b6120568185612030565b93506120668185602086016114cf565b61206f81611502565b840191505092915050565b600060808201905061208f6000830187611603565b61209c6020830186611603565b6120a96040830185611719565b81810360608301526120bb8184612041565b905095945050505050565b6000815190506120d581611424565b92915050565b6000602082840312156120f1576120f06113ee565b5b60006120ff848285016120c6565b9150509291505056fea26469706673582212201befbb93823bb4d4f3dd3dd02315ac03aab291ca85b918aca37bea81708f233e64736f6c634300080d0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x224 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x28C JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x206 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x104 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x122 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x1450 JUMP JUMPDEST PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFB SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x10C PUSH2 0x39E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x119 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x137 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x430 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x167 SWAP2 SWAP1 PUSH2 0x1659 JUMP JUMPDEST PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x188 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x183 SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x58D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x19F SWAP2 SWAP1 PUSH2 0x1699 JUMP JUMPDEST PUSH2 0x5ED JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1BB SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x60D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1CD SWAP2 SWAP1 PUSH2 0x1612 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1EB SWAP2 SWAP1 PUSH2 0x16EC JUMP JUMPDEST PUSH2 0x6BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FD SWAP2 SWAP1 PUSH2 0x1728 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20E PUSH2 0x775 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21B SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x239 SWAP2 SWAP1 PUSH2 0x176F JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x25A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x255 SWAP2 SWAP1 PUSH2 0x18E4 JUMP JUMPDEST PUSH2 0x81D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x276 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x271 SWAP2 SWAP1 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x87F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x154C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x1967 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B3 SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ DUP1 PUSH2 0x387 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ JUMPDEST DUP1 PUSH2 0x397 JUMPI POP PUSH2 0x396 DUP3 PUSH2 0x97B JUMP JUMPDEST JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x3AD SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x3D9 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x426 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3FB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x426 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x409 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43B DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x481 DUP3 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4E8 SWAP1 PUSH2 0x1A79 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x510 PUSH2 0xA30 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x53F JUMPI POP PUSH2 0x53E DUP2 PUSH2 0x539 PUSH2 0xA30 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST PUSH2 0x57E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x575 SWAP1 PUSH2 0x1B0B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x588 DUP4 DUP4 PUSH2 0xA38 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x59E PUSH2 0x598 PUSH2 0xA30 JUMP JUMPDEST DUP3 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x5DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D4 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5E8 DUP4 DUP4 DUP4 PUSH2 0xB86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x608 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x81D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6AC SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x72E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x725 SWAP1 PUSH2 0x1C9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x784 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x7B0 SWAP1 PUSH2 0x19D6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x7FD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7D2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7FD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7E0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x819 PUSH2 0x812 PUSH2 0xA30 JUMP JUMPDEST DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x82E PUSH2 0x828 PUSH2 0xA30 JUMP JUMPDEST DUP4 PUSH2 0xAF1 JUMP JUMPDEST PUSH2 0x86D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x864 SWAP1 PUSH2 0x1B9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x879 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF58 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x88A DUP3 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x894 PUSH2 0xFB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x8B4 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x8DF JUMP JUMPDEST DUP1 PUSH2 0x8BE DUP5 PUSH2 0xFCB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x8CF SWAP3 SWAP2 SWAP1 PUSH2 0x1CF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP3 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9EE DUP2 PUSH2 0x1099 JUMP JUMPDEST PUSH2 0xA2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA24 SWAP1 PUSH2 0x1C09 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x4 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xAAB DUP4 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xAFD DUP4 PUSH2 0x60D JUMP JUMPDEST SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0xB3F JUMPI POP PUSH2 0xB3E DUP2 DUP6 PUSH2 0x8E7 JUMP JUMPDEST JUMPDEST DUP1 PUSH2 0xB7D JUMPI POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB65 DUP5 PUSH2 0x430 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBA6 DUP3 PUSH2 0x60D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBFC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF3 SWAP1 PUSH2 0x1D8D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xC6B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC62 SWAP1 PUSH2 0x1E1F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC76 DUP4 DUP4 DUP4 PUSH2 0x1105 JUMP JUMPDEST PUSH2 0xC81 PUSH1 0x0 DUP3 PUSH2 0xA38 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xCD1 SWAP2 SWAP1 PUSH2 0x1E6E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD28 SWAP2 SWAP1 PUSH2 0x1EA2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xDE7 DUP4 DUP4 DUP4 PUSH2 0x110A JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE51 SWAP1 PUSH2 0x1F44 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD PUSH2 0xF4B SWAP2 SWAP1 PUSH2 0x1498 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xF63 DUP5 DUP5 DUP5 PUSH2 0xB86 JUMP JUMPDEST PUSH2 0xF6F DUP5 DUP5 DUP5 DUP5 PUSH2 0x110F JUMP JUMPDEST PUSH2 0xFAE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFA5 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x1 PUSH2 0xFDA DUP5 PUSH2 0x1291 JUMP JUMPDEST ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFF9 JUMPI PUSH2 0xFF8 PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x102B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x20 ADD DUP3 ADD SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x108E JUMPI DUP1 DUP1 PUSH1 0x1 SWAP1 SUB SWAP2 POP POP PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DUP2 PUSH2 0x1082 JUMPI PUSH2 0x1081 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP5 POP PUSH1 0x0 DUP6 SUB PUSH2 0x1039 JUMPI JUMPDEST DUP2 SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x2 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EXTCODESIZE GT ISZERO PUSH2 0x1284 JUMPI DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 PUSH2 0x1154 PUSH2 0xA30 JUMP JUMPDEST DUP8 DUP7 DUP7 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1176 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x207A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x11B2 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11AF SWAP2 SWAP1 PUSH2 0x20DB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1234 JUMPI RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x11E2 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 0x11E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x0 DUP2 MLOAD SUB PUSH2 0x122C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1223 SWAP1 PUSH2 0x1FD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH4 0x150B7A02 PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND EQ SWAP2 POP POP PUSH2 0x1289 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x12EF JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DUP2 PUSH2 0x12E5 JUMPI PUSH2 0x12E4 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x40 DUP2 ADD SWAP1 POP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x132C JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DUP2 PUSH2 0x1322 JUMPI PUSH2 0x1321 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x135B JUMPI PUSH7 0x2386F26FC10000 DUP4 DUP2 PUSH2 0x1351 JUMPI PUSH2 0x1350 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x10 DUP2 ADD SWAP1 POP JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x1384 JUMPI PUSH4 0x5F5E100 DUP4 DUP2 PUSH2 0x137A JUMPI PUSH2 0x1379 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x8 DUP2 ADD SWAP1 POP JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x13A9 JUMPI PUSH2 0x2710 DUP4 DUP2 PUSH2 0x139F JUMPI PUSH2 0x139E PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x4 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x13CC JUMPI PUSH1 0x64 DUP4 DUP2 PUSH2 0x13C2 JUMPI PUSH2 0x13C1 PUSH2 0x1FF6 JUMP JUMPDEST JUMPDEST DIV SWAP3 POP PUSH1 0x2 DUP2 ADD SWAP1 POP JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x13DB JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP JUMPDEST DUP1 SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x142D DUP2 PUSH2 0x13F8 JUMP JUMPDEST DUP2 EQ PUSH2 0x1438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x144A DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1466 JUMPI PUSH2 0x1465 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1474 DUP5 DUP3 DUP6 ADD PUSH2 0x143B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1492 DUP2 PUSH2 0x147D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x14AD PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1489 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14ED JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x14D2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x14FC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x151E DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1528 DUP2 DUP6 PUSH2 0x14BE JUMP JUMPDEST SWAP4 POP PUSH2 0x1538 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x1541 DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1566 DUP2 DUP5 PUSH2 0x1513 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1581 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP2 EQ PUSH2 0x158C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x159E DUP2 PUSH2 0x1578 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15BA JUMPI PUSH2 0x15B9 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x15C8 DUP5 DUP3 DUP6 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15FC DUP3 PUSH2 0x15D1 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x160C DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1627 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1603 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1636 DUP2 PUSH2 0x15F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x1641 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1653 DUP2 PUSH2 0x162D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1670 JUMPI PUSH2 0x166F PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x167E DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x168F DUP6 DUP3 DUP7 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x16B2 JUMPI PUSH2 0x16B1 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x16C0 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x16D1 DUP7 DUP3 DUP8 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x16E2 DUP7 DUP3 DUP8 ADD PUSH2 0x158F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1702 JUMPI PUSH2 0x1701 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1710 DUP5 DUP3 DUP6 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1722 DUP2 PUSH2 0x156E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x173D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1719 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x174C DUP2 PUSH2 0x147D JUMP JUMPDEST DUP2 EQ PUSH2 0x1757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1769 DUP2 PUSH2 0x1743 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1786 JUMPI PUSH2 0x1785 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1794 DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x17A5 DUP6 DUP3 DUP7 ADD PUSH2 0x175A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x17F1 DUP3 PUSH2 0x1502 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1810 JUMPI PUSH2 0x180F PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1823 PUSH2 0x13E4 JUMP JUMPDEST SWAP1 POP PUSH2 0x182F DUP3 DUP3 PUSH2 0x17E8 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x184F JUMPI PUSH2 0x184E PUSH2 0x17B9 JUMP JUMPDEST JUMPDEST PUSH2 0x1858 DUP3 PUSH2 0x1502 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1887 PUSH2 0x1882 DUP5 PUSH2 0x1834 JUMP JUMPDEST PUSH2 0x1819 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x18A3 JUMPI PUSH2 0x18A2 PUSH2 0x17B4 JUMP JUMPDEST JUMPDEST PUSH2 0x18AE DUP5 DUP3 DUP6 PUSH2 0x1865 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x18CB JUMPI PUSH2 0x18CA PUSH2 0x17AF JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x18DB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1874 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x18FE JUMPI PUSH2 0x18FD PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x190C DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x191D DUP8 DUP3 DUP9 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x192E DUP8 DUP3 DUP9 ADD PUSH2 0x158F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x194F JUMPI PUSH2 0x194E PUSH2 0x13F3 JUMP JUMPDEST JUMPDEST PUSH2 0x195B DUP8 DUP3 DUP9 ADD PUSH2 0x18B6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x197E JUMPI PUSH2 0x197D PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x198C DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x199D DUP6 DUP3 DUP7 ADD PUSH2 0x1644 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x19EE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1A01 JUMPI PUSH2 0x1A00 PUSH2 0x19A7 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A63 PUSH1 0x21 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1A6E DUP3 PUSH2 0x1A07 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1A92 DUP2 PUSH2 0x1A56 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AF5 PUSH1 0x3E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B00 DUP3 PUSH2 0x1A99 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B24 DUP2 PUSH2 0x1AE8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x72206E6F7220617070726F766564000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B87 PUSH1 0x2E DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1B92 DUP3 PUSH2 0x1B2B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1BB6 DUP2 PUSH2 0x1B7A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BF3 PUSH1 0x18 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1BFE DUP3 PUSH2 0x1BBD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C22 DUP2 PUSH2 0x1BE6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C85 PUSH1 0x29 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1C90 DUP3 PUSH2 0x1C29 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1CB4 DUP2 PUSH2 0x1C78 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CD1 DUP3 PUSH2 0x14B3 JUMP JUMPDEST PUSH2 0x1CDB DUP2 DUP6 PUSH2 0x1CBB JUMP JUMPDEST SWAP4 POP PUSH2 0x1CEB DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D03 DUP3 DUP6 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D0F DUP3 DUP5 PUSH2 0x1CC6 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D77 PUSH1 0x25 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1D82 DUP3 PUSH2 0x1D1B JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1DA6 DUP2 PUSH2 0x1D6A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E09 PUSH1 0x24 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1E14 DUP3 PUSH2 0x1DAD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E38 DUP2 PUSH2 0x1DFC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1E79 DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1E84 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 DUP3 LT ISZERO PUSH2 0x1E97 JUMPI PUSH2 0x1E96 PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 SUB SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EAD DUP3 PUSH2 0x156E JUMP JUMPDEST SWAP2 POP PUSH2 0x1EB8 DUP4 PUSH2 0x156E JUMP JUMPDEST SWAP3 POP DUP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SUB DUP3 GT ISZERO PUSH2 0x1EED JUMPI PUSH2 0x1EEC PUSH2 0x1E3F JUMP JUMPDEST JUMPDEST DUP3 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F2E PUSH1 0x19 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1F39 DUP3 PUSH2 0x1EF8 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F5D DUP2 PUSH2 0x1F21 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FC0 PUSH1 0x32 DUP4 PUSH2 0x14BE JUMP JUMPDEST SWAP2 POP PUSH2 0x1FCB DUP3 PUSH2 0x1F64 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FEF DUP2 PUSH2 0x1FB3 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x204C DUP3 PUSH2 0x2025 JUMP JUMPDEST PUSH2 0x2056 DUP2 DUP6 PUSH2 0x2030 JUMP JUMPDEST SWAP4 POP PUSH2 0x2066 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x14CF JUMP JUMPDEST PUSH2 0x206F DUP2 PUSH2 0x1502 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x208F PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x209C PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x1603 JUMP JUMPDEST PUSH2 0x20A9 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1719 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x20BB DUP2 DUP5 PUSH2 0x2041 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x20D5 DUP2 PUSH2 0x1424 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20F1 JUMPI PUSH2 0x20F0 PUSH2 0x13EE JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20FF DUP5 DUP3 DUP6 ADD PUSH2 0x20C6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xEF 0xBB SWAP4 DUP3 EXTCODESIZE 0xB4 0xD4 RETURN 0xDD RETURNDATASIZE 0xD0 0x23 ISZERO 0xAC SUB 0xAA 0xB2 SWAP2 0xCA DUP6 0xB9 XOR 0xAC LOG3 PUSH28 0xEA81708F233E64736F6C634300080D00330000000000000000000000 ","sourceMap":"1382:13860:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:300;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3317:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4775:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4314:400;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5452:327;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5845:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3037:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3479:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5009:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6090:315;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3647:276;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5228:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2417:300;2519:4;2569:25;2554:40;;;:11;:40;;;;:104;;;;2625:33;2610:48;;;:11;:48;;;;2554:104;:156;;;;2674:36;2698:11;2674:23;:36::i;:::-;2554:156;2535:175;;2417:300;;;:::o;3317:98::-;3371:13;3403:5;3396:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3317:98;:::o;4775:167::-;4851:7;4870:23;4885:7;4870:14;:23::i;:::-;4911:15;:24;4927:7;4911:24;;;;;;;;;;;;;;;;;;;;;4904:31;;4775:167;;;:::o;4314:400::-;4394:13;4410:16;4418:7;4410;:16::i;:::-;4394:32;;4450:5;4444:11;;:2;:11;;;4436:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4541:5;4525:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;4550:37;4567:5;4574:12;:10;:12::i;:::-;4550:16;:37::i;:::-;4525:62;4504:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;4686:21;4695:2;4699:7;4686:8;:21::i;:::-;4384:330;4314:400;;:::o;5452:327::-;5641:41;5660:12;:10;:12::i;:::-;5674:7;5641:18;:41::i;:::-;5633:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;5744:28;5754:4;5760:2;5764:7;5744:9;:28::i;:::-;5452:327;;;:::o;5845:179::-;5978:39;5995:4;6001:2;6005:7;5978:39;;;;;;;;;;;;:16;:39::i;:::-;5845:179;;;:::o;3037:218::-;3109:7;3128:13;3144:7;:16;3152:7;3144:16;;;;;;;;;;;;;;;;;;;;;3128:32;;3195:1;3178:19;;:5;:19;;;3170:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3243:5;3236:12;;;3037:218;;;:::o;2776:204::-;2848:7;2892:1;2875:19;;:5;:19;;;2867:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2957:9;:16;2967:5;2957:16;;;;;;;;;;;;;;;;2950:23;;2776:204;;;:::o;3479:102::-;3535:13;3567:7;3560:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3479:102;:::o;5009:153::-;5103:52;5122:12;:10;:12::i;:::-;5136:8;5146;5103:18;:52::i;:::-;5009:153;;:::o;6090:315::-;6258:41;6277:12;:10;:12::i;:::-;6291:7;6258:18;:41::i;:::-;6250:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;6360:38;6374:4;6380:2;6384:7;6393:4;6360:13;:38::i;:::-;6090:315;;;;:::o;3647:276::-;3720:13;3745:23;3760:7;3745:14;:23::i;:::-;3779:21;3803:10;:8;:10::i;:::-;3779:34;;3854:1;3836:7;3830:21;:25;:86;;;;;;;;;;;;;;;;;3882:7;3891:18;:7;:16;:18::i;:::-;3865:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3830:86;3823:93;;;3647:276;;;:::o;5228:162::-;5325:4;5348:18;:25;5367:5;5348:25;;;;;;;;;;;;;;;:35;5374:8;5348:35;;;;;;;;;;;;;;;;;;;;;;;;;5341:42;;5228:162;;;;:::o;829:155:7:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;12550:133:12:-;12631:16;12639:7;12631;:16::i;:::-;12623:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12550:133;:::o;640:96:5:-;693:7;719:10;712:17;;640:96;:::o;11859:164:12:-;11960:2;11933:15;:24;11949:7;11933:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12008:7;12004:2;11977:39;;11986:16;11994:7;11986;:16::i;:::-;11977:39;;;;;;;;;;;;11859:164;;:::o;8157:254::-;8250:4;8266:13;8282:16;8290:7;8282;:16::i;:::-;8266:32;;8327:5;8316:16;;:7;:16;;;:52;;;;8336:32;8353:5;8360:7;8336:16;:32::i;:::-;8316:52;:87;;;;8396:7;8372:31;;:20;8384:7;8372:11;:20::i;:::-;:31;;;8316:87;8308:96;;;8157:254;;;;:::o;11149:598::-;11296:4;11276:24;;:16;11284:7;11276;:16::i;:::-;:24;;;11268:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;11374:1;11360:16;;:2;:16;;;11352:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11428:39;11449:4;11455:2;11459:7;11428:20;:39::i;:::-;11529:29;11546:1;11550:7;11529:8;:29::i;:::-;11588:1;11569:9;:15;11579:4;11569:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;11616:1;11599:9;:13;11609:2;11599:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;11646:2;11627:7;:16;11635:7;11627:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11683:7;11679:2;11664:27;;11673:4;11664:27;;;;;;;;;;;;11702:38;11722:4;11728:2;11732:7;11702:19;:38::i;:::-;11149:598;;;:::o;12159:307::-;12309:8;12300:17;;:5;:17;;;12292:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12395:8;12357:18;:25;12376:5;12357:25;;;;;;;;;;;;;;;:35;12383:8;12357:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12440:8;12418:41;;12433:5;12418:41;;;12450:8;12418:41;;;;;;:::i;:::-;;;;;;;;12159:307;;;:::o;7266:305::-;7416:28;7426:4;7432:2;7436:7;7416:9;:28::i;:::-;7462:47;7485:4;7491:2;7495:7;7504:4;7462:22;:47::i;:::-;7454:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7266:305;;;;:::o;4165:92::-;4216:13;4241:9;;;;;;;;;;;;;;4165:92;:::o;447:696:6:-;503:13;552:14;589:1;569:17;580:5;569:10;:17::i;:::-;:21;552:38;;604:20;638:6;627:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;604:41;;659:11;785:6;781:2;777:15;769:6;765:28;758:35;;820:280;827:4;820:280;;;851:5;;;;;;;;990:8;985:2;978:5;974:14;969:30;964:3;956:44;1044:2;1035:11;;;;;;:::i;:::-;;;;;1077:1;1068:5;:10;820:280;1064:21;820:280;1120:6;1113:13;;;;;447:696;;;:::o;7874:125:12:-;7939:4;7990:1;7962:30;;:7;:16;7970:7;7962:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7955:37;;7874:125;;;:::o;14625:122::-;;;;:::o;15119:121::-;;;;:::o;13235:834::-;13384:4;13421:1;13404:2;:14;;;:18;13400:663;;;13458:2;13442:36;;;13479:12;:10;:12::i;:::-;13493:4;13499:7;13508:4;13442:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13438:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13697:1;13680:6;:13;:18;13676:321;;13722:60;;;;;;;;;;:::i;:::-;;;;;;;;13676:321;13949:6;13943:13;13934:6;13930:2;13926:15;13919:38;13438:573;13573:41;;;13563:51;;;:6;:51;;;;13556:58;;;;;13400:663;14048:4;14041:11;;13235:834;;;;;;;:::o;10139:916:9:-;10192:7;10211:14;10228:1;10211:18;;10276:8;10267:5;:17;10263:103;;10313:8;10304:17;;;;;;:::i;:::-;;;;;10349:2;10339:12;;;;10263:103;10392:8;10383:5;:17;10379:103;;10429:8;10420:17;;;;;;:::i;:::-;;;;;10465:2;10455:12;;;;10379:103;10508:8;10499:5;:17;10495:103;;10545:8;10536:17;;;;;;:::i;:::-;;;;;10581:2;10571:12;;;;10495:103;10624:7;10615:5;:16;10611:100;;10660:7;10651:16;;;;;;:::i;:::-;;;;;10695:1;10685:11;;;;10611:100;10737:7;10728:5;:16;10724:100;;10773:7;10764:16;;;;;;:::i;:::-;;;;;10808:1;10798:11;;;;10724:100;10850:7;10841:5;:16;10837:100;;10886:7;10877:16;;;;;;:::i;:::-;;;;;10921:1;10911:11;;;;10837:100;10963:7;10954:5;:16;10950:66;;11000:1;10990:11;;;;10950:66;11042:6;11035:13;;;10139:916;;;:::o;7:75:13:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:619::-;5015:6;5023;5031;5080:2;5068:9;5059:7;5055:23;5051:32;5048:119;;;5086:79;;:::i;:::-;5048:119;5206:1;5231:53;5276:7;5267:6;5256:9;5252:22;5231:53;:::i;:::-;5221:63;;5177:117;5333:2;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5304:118;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;4938:619;;;;;:::o;5563:329::-;5622:6;5671:2;5659:9;5650:7;5646:23;5642:32;5639:119;;;5677:79;;:::i;:::-;5639:119;5797:1;5822:53;5867:7;5858:6;5847:9;5843:22;5822:53;:::i;:::-;5812:63;;5768:117;5563:329;;;;:::o;5898:118::-;5985:24;6003:5;5985:24;:::i;:::-;5980:3;5973:37;5898:118;;:::o;6022:222::-;6115:4;6153:2;6142:9;6138:18;6130:26;;6166:71;6234:1;6223:9;6219:17;6210:6;6166:71;:::i;:::-;6022:222;;;;:::o;6250:116::-;6320:21;6335:5;6320:21;:::i;:::-;6313:5;6310:32;6300:60;;6356:1;6353;6346:12;6300:60;6250:116;:::o;6372:133::-;6415:5;6453:6;6440:20;6431:29;;6469:30;6493:5;6469:30;:::i;:::-;6372:133;;;;:::o;6511:468::-;6576:6;6584;6633:2;6621:9;6612:7;6608:23;6604:32;6601:119;;;6639:79;;:::i;:::-;6601:119;6759:1;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6730:117;6886:2;6912:50;6954:7;6945:6;6934:9;6930:22;6912:50;:::i;:::-;6902:60;;6857:115;6511:468;;;;;:::o;6985:117::-;7094:1;7091;7084:12;7108:117;7217:1;7214;7207:12;7231:180;7279:77;7276:1;7269:88;7376:4;7373:1;7366:15;7400:4;7397:1;7390:15;7417:281;7500:27;7522:4;7500:27;:::i;:::-;7492:6;7488:40;7630:6;7618:10;7615:22;7594:18;7582:10;7579:34;7576:62;7573:88;;;7641:18;;:::i;:::-;7573:88;7681:10;7677:2;7670:22;7460:238;7417:281;;:::o;7704:129::-;7738:6;7765:20;;:::i;:::-;7755:30;;7794:33;7822:4;7814:6;7794:33;:::i;:::-;7704:129;;;:::o;7839:307::-;7900:4;7990:18;7982:6;7979:30;7976:56;;;8012:18;;:::i;:::-;7976:56;8050:29;8072:6;8050:29;:::i;:::-;8042:37;;8134:4;8128;8124:15;8116:23;;7839:307;;;:::o;8152:154::-;8236:6;8231:3;8226;8213:30;8298:1;8289:6;8284:3;8280:16;8273:27;8152:154;;;:::o;8312:410::-;8389:5;8414:65;8430:48;8471:6;8430:48;:::i;:::-;8414:65;:::i;:::-;8405:74;;8502:6;8495:5;8488:21;8540:4;8533:5;8529:16;8578:3;8569:6;8564:3;8560:16;8557:25;8554:112;;;8585:79;;:::i;:::-;8554:112;8675:41;8709:6;8704:3;8699;8675:41;:::i;:::-;8395:327;8312:410;;;;;:::o;8741:338::-;8796:5;8845:3;8838:4;8830:6;8826:17;8822:27;8812:122;;8853:79;;:::i;:::-;8812:122;8970:6;8957:20;8995:78;9069:3;9061:6;9054:4;9046:6;9042:17;8995:78;:::i;:::-;8986:87;;8802:277;8741:338;;;;:::o;9085:943::-;9180:6;9188;9196;9204;9253:3;9241:9;9232:7;9228:23;9224:33;9221:120;;;9260:79;;:::i;:::-;9221:120;9380:1;9405:53;9450:7;9441:6;9430:9;9426:22;9405:53;:::i;:::-;9395:63;;9351:117;9507:2;9533:53;9578:7;9569:6;9558:9;9554:22;9533:53;:::i;:::-;9523:63;;9478:118;9635:2;9661:53;9706:7;9697:6;9686:9;9682:22;9661:53;:::i;:::-;9651:63;;9606:118;9791:2;9780:9;9776:18;9763:32;9822:18;9814:6;9811:30;9808:117;;;9844:79;;:::i;:::-;9808:117;9949:62;10003:7;9994:6;9983:9;9979:22;9949:62;:::i;:::-;9939:72;;9734:287;9085:943;;;;;;;:::o;10034:474::-;10102:6;10110;10159:2;10147:9;10138:7;10134:23;10130:32;10127:119;;;10165:79;;:::i;:::-;10127:119;10285:1;10310:53;10355:7;10346:6;10335:9;10331:22;10310:53;:::i;:::-;10300:63;;10256:117;10412:2;10438:53;10483:7;10474:6;10463:9;10459:22;10438:53;:::i;:::-;10428:63;;10383:118;10034:474;;;;;:::o;10514:180::-;10562:77;10559:1;10552:88;10659:4;10656:1;10649:15;10683:4;10680:1;10673:15;10700:320;10744:6;10781:1;10775:4;10771:12;10761:22;;10828:1;10822:4;10818:12;10849:18;10839:81;;10905:4;10897:6;10893:17;10883:27;;10839:81;10967:2;10959:6;10956:14;10936:18;10933:38;10930:84;;10986:18;;:::i;:::-;10930:84;10751:269;10700:320;;;:::o;11026:220::-;11166:34;11162:1;11154:6;11150:14;11143:58;11235:3;11230:2;11222:6;11218:15;11211:28;11026:220;:::o;11252:366::-;11394:3;11415:67;11479:2;11474:3;11415:67;:::i;:::-;11408:74;;11491:93;11580:3;11491:93;:::i;:::-;11609:2;11604:3;11600:12;11593:19;;11252:366;;;:::o;11624:419::-;11790:4;11828:2;11817:9;11813:18;11805:26;;11877:9;11871:4;11867:20;11863:1;11852:9;11848:17;11841:47;11905:131;12031:4;11905:131;:::i;:::-;11897:139;;11624:419;;;:::o;12049:249::-;12189:34;12185:1;12177:6;12173:14;12166:58;12258:32;12253:2;12245:6;12241:15;12234:57;12049:249;:::o;12304:366::-;12446:3;12467:67;12531:2;12526:3;12467:67;:::i;:::-;12460:74;;12543:93;12632:3;12543:93;:::i;:::-;12661:2;12656:3;12652:12;12645:19;;12304:366;;;:::o;12676:419::-;12842:4;12880:2;12869:9;12865:18;12857:26;;12929:9;12923:4;12919:20;12915:1;12904:9;12900:17;12893:47;12957:131;13083:4;12957:131;:::i;:::-;12949:139;;12676:419;;;:::o;13101:233::-;13241:34;13237:1;13229:6;13225:14;13218:58;13310:16;13305:2;13297:6;13293:15;13286:41;13101:233;:::o;13340:366::-;13482:3;13503:67;13567:2;13562:3;13503:67;:::i;:::-;13496:74;;13579:93;13668:3;13579:93;:::i;:::-;13697:2;13692:3;13688:12;13681:19;;13340:366;;;:::o;13712:419::-;13878:4;13916:2;13905:9;13901:18;13893:26;;13965:9;13959:4;13955:20;13951:1;13940:9;13936:17;13929:47;13993:131;14119:4;13993:131;:::i;:::-;13985:139;;13712:419;;;:::o;14137:174::-;14277:26;14273:1;14265:6;14261:14;14254:50;14137:174;:::o;14317:366::-;14459:3;14480:67;14544:2;14539:3;14480:67;:::i;:::-;14473:74;;14556:93;14645:3;14556:93;:::i;:::-;14674:2;14669:3;14665:12;14658:19;;14317:366;;;:::o;14689:419::-;14855:4;14893:2;14882:9;14878:18;14870:26;;14942:9;14936:4;14932:20;14928:1;14917:9;14913:17;14906:47;14970:131;15096:4;14970:131;:::i;:::-;14962:139;;14689:419;;;:::o;15114:228::-;15254:34;15250:1;15242:6;15238:14;15231:58;15323:11;15318:2;15310:6;15306:15;15299:36;15114:228;:::o;15348:366::-;15490:3;15511:67;15575:2;15570:3;15511:67;:::i;:::-;15504:74;;15587:93;15676:3;15587:93;:::i;:::-;15705:2;15700:3;15696:12;15689:19;;15348:366;;;:::o;15720:419::-;15886:4;15924:2;15913:9;15909:18;15901:26;;15973:9;15967:4;15963:20;15959:1;15948:9;15944:17;15937:47;16001:131;16127:4;16001:131;:::i;:::-;15993:139;;15720:419;;;:::o;16145:148::-;16247:11;16284:3;16269:18;;16145:148;;;;:::o;16299:377::-;16405:3;16433:39;16466:5;16433:39;:::i;:::-;16488:89;16570:6;16565:3;16488:89;:::i;:::-;16481:96;;16586:52;16631:6;16626:3;16619:4;16612:5;16608:16;16586:52;:::i;:::-;16663:6;16658:3;16654:16;16647:23;;16409:267;16299:377;;;;:::o;16682:435::-;16862:3;16884:95;16975:3;16966:6;16884:95;:::i;:::-;16877:102;;16996:95;17087:3;17078:6;16996:95;:::i;:::-;16989:102;;17108:3;17101:10;;16682:435;;;;;:::o;17123:224::-;17263:34;17259:1;17251:6;17247:14;17240:58;17332:7;17327:2;17319:6;17315:15;17308:32;17123:224;:::o;17353:366::-;17495:3;17516:67;17580:2;17575:3;17516:67;:::i;:::-;17509:74;;17592:93;17681:3;17592:93;:::i;:::-;17710:2;17705:3;17701:12;17694:19;;17353:366;;;:::o;17725:419::-;17891:4;17929:2;17918:9;17914:18;17906:26;;17978:9;17972:4;17968:20;17964:1;17953:9;17949:17;17942:47;18006:131;18132:4;18006:131;:::i;:::-;17998:139;;17725:419;;;:::o;18150:223::-;18290:34;18286:1;18278:6;18274:14;18267:58;18359:6;18354:2;18346:6;18342:15;18335:31;18150:223;:::o;18379:366::-;18521:3;18542:67;18606:2;18601:3;18542:67;:::i;:::-;18535:74;;18618:93;18707:3;18618:93;:::i;:::-;18736:2;18731:3;18727:12;18720:19;;18379:366;;;:::o;18751:419::-;18917:4;18955:2;18944:9;18940:18;18932:26;;19004:9;18998:4;18994:20;18990:1;18979:9;18975:17;18968:47;19032:131;19158:4;19032:131;:::i;:::-;19024:139;;18751:419;;;:::o;19176:180::-;19224:77;19221:1;19214:88;19321:4;19318:1;19311:15;19345:4;19342:1;19335:15;19362:191;19402:4;19422:20;19440:1;19422:20;:::i;:::-;19417:25;;19456:20;19474:1;19456:20;:::i;:::-;19451:25;;19495:1;19492;19489:8;19486:34;;;19500:18;;:::i;:::-;19486:34;19545:1;19542;19538:9;19530:17;;19362:191;;;;:::o;19559:305::-;19599:3;19618:20;19636:1;19618:20;:::i;:::-;19613:25;;19652:20;19670:1;19652:20;:::i;:::-;19647:25;;19806:1;19738:66;19734:74;19731:1;19728:81;19725:107;;;19812:18;;:::i;:::-;19725:107;19856:1;19853;19849:9;19842:16;;19559:305;;;;:::o;19870:175::-;20010:27;20006:1;19998:6;19994:14;19987:51;19870:175;:::o;20051:366::-;20193:3;20214:67;20278:2;20273:3;20214:67;:::i;:::-;20207:74;;20290:93;20379:3;20290:93;:::i;:::-;20408:2;20403:3;20399:12;20392:19;;20051:366;;;:::o;20423:419::-;20589:4;20627:2;20616:9;20612:18;20604:26;;20676:9;20670:4;20666:20;20662:1;20651:9;20647:17;20640:47;20704:131;20830:4;20704:131;:::i;:::-;20696:139;;20423:419;;;:::o;20848:237::-;20988:34;20984:1;20976:6;20972:14;20965:58;21057:20;21052:2;21044:6;21040:15;21033:45;20848:237;:::o;21091:366::-;21233:3;21254:67;21318:2;21313:3;21254:67;:::i;:::-;21247:74;;21330:93;21419:3;21330:93;:::i;:::-;21448:2;21443:3;21439:12;21432:19;;21091:366;;;:::o;21463:419::-;21629:4;21667:2;21656:9;21652:18;21644:26;;21716:9;21710:4;21706:20;21702:1;21691:9;21687:17;21680:47;21744:131;21870:4;21744:131;:::i;:::-;21736:139;;21463:419;;;:::o;21888:180::-;21936:77;21933:1;21926:88;22033:4;22030:1;22023:15;22057:4;22054:1;22047:15;22074:98;22125:6;22159:5;22153:12;22143:22;;22074:98;;;:::o;22178:168::-;22261:11;22295:6;22290:3;22283:19;22335:4;22330:3;22326:14;22311:29;;22178:168;;;;:::o;22352:360::-;22438:3;22466:38;22498:5;22466:38;:::i;:::-;22520:70;22583:6;22578:3;22520:70;:::i;:::-;22513:77;;22599:52;22644:6;22639:3;22632:4;22625:5;22621:16;22599:52;:::i;:::-;22676:29;22698:6;22676:29;:::i;:::-;22671:3;22667:39;22660:46;;22442:270;22352:360;;;;:::o;22718:640::-;22913:4;22951:3;22940:9;22936:19;22928:27;;22965:71;23033:1;23022:9;23018:17;23009:6;22965:71;:::i;:::-;23046:72;23114:2;23103:9;23099:18;23090:6;23046:72;:::i;:::-;23128;23196:2;23185:9;23181:18;23172:6;23128:72;:::i;:::-;23247:9;23241:4;23237:20;23232:2;23221:9;23217:18;23210:48;23275:76;23346:4;23337:6;23275:76;:::i;:::-;23267:84;;22718:640;;;;;;;:::o;23364:141::-;23420:5;23451:6;23445:13;23436:22;;23467:32;23493:5;23467:32;:::i;:::-;23364:141;;;;:::o;23511:349::-;23580:6;23629:2;23617:9;23608:7;23604:23;23600:32;23597:119;;;23635:79;;:::i;:::-;23597:119;23755:1;23780:63;23835:7;23826:6;23815:9;23811:22;23780:63;:::i;:::-;23770:73;;23726:127;23511:349;;;;:::o"},"gasEstimates":{"creation":{"codeDepositCost":"1702000","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"infinite","balanceOf(address)":"2921","getApproved(uint256)":"5234","isApprovedForAll(address,address)":"infinite","name()":"infinite","ownerOf(uint256)":"2979","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"infinite","supportsInterface(bytes4)":"774","symbol()":"infinite","tokenURI(uint256)":"3424","transferFrom(address,address,uint256)":"infinite"},"internal":{"_afterTokenTransfer(address,address,uint256)":"15","_approve(address,uint256)":"infinite","_baseURI()":"infinite","_beforeTokenTransfer(address,address,uint256)":"15","_burn(uint256)":"infinite","_checkOnERC721Received(address,address,uint256,bytes memory)":"infinite","_exists(uint256)":"2269","_isApprovedOrOwner(address,uint256)":"infinite","_mint(address,uint256)":"infinite","_requireMinted(uint256)":"infinite","_safeMint(address,uint256)":"infinite","_safeMint(address,uint256,bytes memory)":"infinite","_safeTransfer(address,address,uint256,bytes memory)":"infinite","_setApprovalForAll(address,address,bool)":"infinite","_transfer(address,address,uint256)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}. NOTE: The only changes made here are: - change scope of \\\"_owners\\\" from private to internal - change scope of \\\"_balances\\\" from private to internal - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\" - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/lib/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 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 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 ERC721 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 {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon 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 ERC721\\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 caller.\\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\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 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 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\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\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[EIP 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\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/lib/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Modifed from: OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol)\\n// Modified by: Rob Secord (https://twitter.com/robsecord)\\n// Co-founder @ Charged Particles - Visit: https://charged.fi\\n// Co-founder @ Taggr - Visit: https://taggr.io\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Address.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Context.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/Strings.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n *\\n * NOTE:\\n * The only changes made here are:\\n * - change scope of \\\"_owners\\\" from private to internal\\n * - change scope of \\\"_balances\\\" from private to internal\\n * - remove \\\"ERC721\\\" scope-resolution from \\\"ownerOf\\\" calls in order to override \\\"ownerOf\\\"\\n * - modify the _burn function to burn to an alternate Null Address (prevents reassignment back to Pre-Mint Receiver)\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n address constant internal _NULL_ADDRESS = 0x000000000000000000000000000000000000dEaD;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) internal _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) internal _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _owners[tokenId];\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner nor approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner nor approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\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 `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _owners[tokenId] != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId);\\n\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId);\\n\\n // Clear approvals\\n _approve(address(0), tokenId);\\n\\n _balances[owner] -= 1;\\n // Prevent re-assigning the token back to the Pre-Mint Receiver\\n _owners[tokenId] = _NULL_ADDRESS;\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {\\n require(ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId);\\n\\n // Clear approvals from the previous owner\\n _approve(address(0), tokenId);\\n\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(\\n address owner,\\n address operator,\\n bool approved\\n ) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.code.length > 0) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting\\n * and burning.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\\n * transferred to `to`.\\n * - When `from` is zero, `tokenId` will be minted for `to`.\\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any transfer of tokens. This includes\\n * minting and burning.\\n *\\n * Calling conditions:\\n *\\n * - when `from` and `to` are both non-zero.\\n * - `from` and `to` are never both zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(\\n address from,\\n address to,\\n uint256 tokenId\\n ) internal virtual {}\\n}\\n\",\"keccak256\":\"0x726960336df673d5fd509dde21ba3bed24645291d201f74762b945fe4d5aa016\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2200,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":2202,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":2206,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":2210,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":2214,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":2220,"contract":"contracts/lib/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}}}}} \ No newline at end of file diff --git a/build/contracts/contracts/Account.sol/Account.dbg.json b/build/contracts/contracts/Account.sol/Account.dbg.json index 7b9b596..51f4c0b 100644 --- a/build/contracts/contracts/Account.sol/Account.dbg.json +++ b/build/contracts/contracts/Account.sol/Account.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" + "buildInfo": "../../build-info/12d08302563728732d9881031a37cca7.json" } diff --git a/build/contracts/contracts/Account.sol/Account.json b/build/contracts/contracts/Account.sol/Account.json index 3c01347..f2cda85 100644 --- a/build/contracts/contracts/Account.sol/Account.json +++ b/build/contracts/contracts/Account.sol/Account.json @@ -97,49 +97,29 @@ "type": "event" }, { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "target", + "name": "to", "type": "address" }, { - "indexed": true, "internalType": "uint256", "name": "value", "type": "uint256" }, { - "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" - } - ], - "name": "TransactionExecuted", - "type": "event" - }, - { - "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": "executeCall", + "name": "execute", "outputs": [ { "internalType": "bytes", @@ -151,14 +131,8 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "caller", - "type": "address" - } - ], - "name": "isAuthorized", + "inputs": [], + "name": "isLocked", "outputs": [ { "internalType": "bool", @@ -170,13 +144,24 @@ "type": "function" }, { - "inputs": [], - "name": "isLocked", + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "isValidSigner", "outputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" } ], "stateMutability": "view", @@ -394,6 +379,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "state", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -441,8 +439,8 @@ "type": "receive" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061112a806100206000396000f3fe6080604052600436106100e15760003560e01c8063bc197c811161007f578063dd46706411610059578063dd4670641461028c578063f23a6e61146102ac578063fc0c546a146102d8578063fe9fbb801461031057600080fd5b8063bc197c811461021c578063ce0617ec14610248578063d0ad25351461026c57600080fd5b80631f9838b5116100bb5780631f9838b51461017d5780638da5cb5b146101b85780639e5d4c49146101e5578063a4e2d6341461020557600080fd5b806301ffc9a7146100ed578063039721b114610122578063150b7a021461014457600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b5061010d610108366004610a4a565b610330565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004610ac7565b610397565b005b34801561015057600080fd5b5061016461015f366004610c02565b610560565b6040516001600160e01b03199091168152602001610119565b34801561018957600080fd5b5061010d610198366004610c6e565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101c457600080fd5b506101cd6105c8565b6040516001600160a01b039091168152602001610119565b6101f86101f3366004610ce9565b61065e565b6040516101199190610d39565b34801561021157600080fd5b50600054421061010d565b34801561022857600080fd5b50610164610237366004610dfc565b63bc197c8160e01b95945050505050565b34801561025457600080fd5b5061025e60005481565b604051908152602001610119565b34801561027857600080fd5b50610164610287366004610eaa565b610759565b34801561029857600080fd5b506101426102a7366004610eec565b61077a565b3480156102b857600080fd5b506101646102c7366004610f05565b63f23a6e6160e01b95945050505050565b3480156102e457600080fd5b506102ed61083f565b604080519384526001600160a01b03909216602084015290820152606001610119565b34801561031c57600080fd5b5061010d61032b366004610f6e565b610857565b6000806001600160e01b031983166301ffc9a760e01b148061036257506001600160e01b03198316630271189760e51b145b8061037d57506001600160e01b03198316631dfe9a6f60e31b145b9050801561038e5750600192915050565b50600092915050565b6000544210156103ba57604051636315bfbb60e01b815260040160405180910390fd5b60006103c46105c8565b9050336001600160a01b038216146103ef5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104105760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156105575784848281811061042d5761042d610f8b565b90506020020160208101906104429190610fa1565b6001600160a01b03841660009081526001602052604081209089898581811061046d5761046d610f8b565b90506020020160208101906104829190610f6e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106104de576104de610f8b565b90506020020160208101906104f39190610f6e565b87878581811061050557610505610f8b565b905060200201602081019061051a9190610fa1565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a18061054f81610fd9565b915050610413565b50505050505050565b60008060008061056e610940565b925092509250468314801561058b57506001600160a01b03821633145b801561059657508581145b156105b45760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806105d6610940565b9250925092504683146105ed576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106569190610ff2565b935050505090565b606061066933610857565b6106865760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156106a957604051636315bfbb60e01b815260040160405180910390fd5b82826106b58282610993565b6106fe5760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b85876001600160a01b03167f47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d2878760405161073a92919061100f565b60405180910390a361074e878787876109ce565b979650505050505050565b6000610768600482848661103e565b61077191611068565b90505b92915050565b6107826105c8565b6001600160a01b0316336001600160a01b0316146107b35760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156107d657604051636315bfbb60e01b815260040160405180910390fd5b6107e4426301e13380611098565b811115610804576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b600080600061084c610940565b925092509250909192565b6000806000610864610940565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190610ff2565b9050806001600160a01b0316856001600160a01b0316036108fc57506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff161561093557506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c8080602001905181019061098791906110ab565b93509350935050909192565b6000806109a08484610759565b90506001600160e01b0319811663095ea7b360e01b036109c4576000915050610774565b5060019392505050565b60606000856001600160a01b03168585856040516109ed9291906110e4565b60006040518083038185875af1925050503d8060008114610a2a576040519150601f19603f3d011682016040523d82523d6000602084013e610a2f565b606091505b509250905080610a4157815160208301fd5b50949350505050565b600060208284031215610a5c57600080fd5b81356001600160e01b031981168114610a7457600080fd5b9392505050565b60008083601f840112610a8d57600080fd5b50813567ffffffffffffffff811115610aa557600080fd5b6020830191508360208260051b8501011115610ac057600080fd5b9250929050565b60008060008060408587031215610add57600080fd5b843567ffffffffffffffff80821115610af557600080fd5b610b0188838901610a7b565b90965094506020870135915080821115610b1a57600080fd5b50610b2787828801610a7b565b95989497509550505050565b6001600160a01b0381168114610b4857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b8a57610b8a610b4b565b604052919050565b600082601f830112610ba357600080fd5b813567ffffffffffffffff811115610bbd57610bbd610b4b565b610bd0601f8201601f1916602001610b61565b818152846020838601011115610be557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610c1857600080fd5b8435610c2381610b33565b93506020850135610c3381610b33565b925060408501359150606085013567ffffffffffffffff811115610c5657600080fd5b610c6287828801610b92565b91505092959194509250565b60008060408385031215610c8157600080fd5b8235610c8c81610b33565b91506020830135610c9c81610b33565b809150509250929050565b60008083601f840112610cb957600080fd5b50813567ffffffffffffffff811115610cd157600080fd5b602083019150836020828501011115610ac057600080fd5b60008060008060608587031215610cff57600080fd5b8435610d0a81610b33565b935060208501359250604085013567ffffffffffffffff811115610d2d57600080fd5b610b2787828801610ca7565b600060208083528351808285015260005b81811015610d6657858101830151858201604001528201610d4a565b506000604082860101526040601f19601f8301168501019250505092915050565b600082601f830112610d9857600080fd5b8135602067ffffffffffffffff821115610db457610db4610b4b565b8160051b610dc3828201610b61565b9283528481018201928281019087851115610ddd57600080fd5b83870192505b8483101561074e57823582529183019190830190610de3565b600080600080600060a08688031215610e1457600080fd5b8535610e1f81610b33565b94506020860135610e2f81610b33565b9350604086013567ffffffffffffffff80821115610e4c57600080fd5b610e5889838a01610d87565b94506060880135915080821115610e6e57600080fd5b610e7a89838a01610d87565b93506080880135915080821115610e9057600080fd5b50610e9d88828901610b92565b9150509295509295909350565b60008060208385031215610ebd57600080fd5b823567ffffffffffffffff811115610ed457600080fd5b610ee085828601610ca7565b90969095509350505050565b600060208284031215610efe57600080fd5b5035919050565b600080600080600060a08688031215610f1d57600080fd5b8535610f2881610b33565b94506020860135610f3881610b33565b93506040860135925060608601359150608086013567ffffffffffffffff811115610f6257600080fd5b610e9d88828901610b92565b600060208284031215610f8057600080fd5b8135610a7481610b33565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610fb357600080fd5b81358015158114610a7457600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610feb57610feb610fc3565b5060010190565b60006020828403121561100457600080fd5b8151610a7481610b33565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000808585111561104e57600080fd5b8386111561105b57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156110905780818660040360031b1b83161692505b505092915050565b8082018082111561077457610774610fc3565b6000806000606084860312156110c057600080fd5b8351925060208401516110d281610b33565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220eb423394a29a0abcff8a03bc98ea584b29ef60c7e1a560777f769e6a618feb1564736f6c63430008110033", - "deployedBytecode": "0x6080604052600436106100e15760003560e01c8063bc197c811161007f578063dd46706411610059578063dd4670641461028c578063f23a6e61146102ac578063fc0c546a146102d8578063fe9fbb801461031057600080fd5b8063bc197c811461021c578063ce0617ec14610248578063d0ad25351461026c57600080fd5b80631f9838b5116100bb5780631f9838b51461017d5780638da5cb5b146101b85780639e5d4c49146101e5578063a4e2d6341461020557600080fd5b806301ffc9a7146100ed578063039721b114610122578063150b7a021461014457600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b5061010d610108366004610a4a565b610330565b60405190151581526020015b60405180910390f35b34801561012e57600080fd5b5061014261013d366004610ac7565b610397565b005b34801561015057600080fd5b5061016461015f366004610c02565b610560565b6040516001600160e01b03199091168152602001610119565b34801561018957600080fd5b5061010d610198366004610c6e565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101c457600080fd5b506101cd6105c8565b6040516001600160a01b039091168152602001610119565b6101f86101f3366004610ce9565b61065e565b6040516101199190610d39565b34801561021157600080fd5b50600054421061010d565b34801561022857600080fd5b50610164610237366004610dfc565b63bc197c8160e01b95945050505050565b34801561025457600080fd5b5061025e60005481565b604051908152602001610119565b34801561027857600080fd5b50610164610287366004610eaa565b610759565b34801561029857600080fd5b506101426102a7366004610eec565b61077a565b3480156102b857600080fd5b506101646102c7366004610f05565b63f23a6e6160e01b95945050505050565b3480156102e457600080fd5b506102ed61083f565b604080519384526001600160a01b03909216602084015290820152606001610119565b34801561031c57600080fd5b5061010d61032b366004610f6e565b610857565b6000806001600160e01b031983166301ffc9a760e01b148061036257506001600160e01b03198316630271189760e51b145b8061037d57506001600160e01b03198316631dfe9a6f60e31b145b9050801561038e5750600192915050565b50600092915050565b6000544210156103ba57604051636315bfbb60e01b815260040160405180910390fd5b60006103c46105c8565b9050336001600160a01b038216146103ef5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104105760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156105575784848281811061042d5761042d610f8b565b90506020020160208101906104429190610fa1565b6001600160a01b03841660009081526001602052604081209089898581811061046d5761046d610f8b565b90506020020160208101906104829190610f6e565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106104de576104de610f8b565b90506020020160208101906104f39190610f6e565b87878581811061050557610505610f8b565b905060200201602081019061051a9190610fa1565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a18061054f81610fd9565b915050610413565b50505050505050565b60008060008061056e610940565b925092509250468314801561058b57506001600160a01b03821633145b801561059657508581145b156105b45760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806105d6610940565b9250925092504683146105ed576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106569190610ff2565b935050505090565b606061066933610857565b6106865760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156106a957604051636315bfbb60e01b815260040160405180910390fd5b82826106b58282610993565b6106fe5760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b85876001600160a01b03167f47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d2878760405161073a92919061100f565b60405180910390a361074e878787876109ce565b979650505050505050565b6000610768600482848661103e565b61077191611068565b90505b92915050565b6107826105c8565b6001600160a01b0316336001600160a01b0316146107b35760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156107d657604051636315bfbb60e01b815260040160405180910390fd5b6107e4426301e13380611098565b811115610804576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b600080600061084c610940565b925092509250909192565b6000806000610864610940565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190610ff2565b9050806001600160a01b0316856001600160a01b0316036108fc57506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff161561093557506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c8080602001905181019061098791906110ab565b93509350935050909192565b6000806109a08484610759565b90506001600160e01b0319811663095ea7b360e01b036109c4576000915050610774565b5060019392505050565b60606000856001600160a01b03168585856040516109ed9291906110e4565b60006040518083038185875af1925050503d8060008114610a2a576040519150601f19603f3d011682016040523d82523d6000602084013e610a2f565b606091505b509250905080610a4157815160208301fd5b50949350505050565b600060208284031215610a5c57600080fd5b81356001600160e01b031981168114610a7457600080fd5b9392505050565b60008083601f840112610a8d57600080fd5b50813567ffffffffffffffff811115610aa557600080fd5b6020830191508360208260051b8501011115610ac057600080fd5b9250929050565b60008060008060408587031215610add57600080fd5b843567ffffffffffffffff80821115610af557600080fd5b610b0188838901610a7b565b90965094506020870135915080821115610b1a57600080fd5b50610b2787828801610a7b565b95989497509550505050565b6001600160a01b0381168114610b4857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b8a57610b8a610b4b565b604052919050565b600082601f830112610ba357600080fd5b813567ffffffffffffffff811115610bbd57610bbd610b4b565b610bd0601f8201601f1916602001610b61565b818152846020838601011115610be557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610c1857600080fd5b8435610c2381610b33565b93506020850135610c3381610b33565b925060408501359150606085013567ffffffffffffffff811115610c5657600080fd5b610c6287828801610b92565b91505092959194509250565b60008060408385031215610c8157600080fd5b8235610c8c81610b33565b91506020830135610c9c81610b33565b809150509250929050565b60008083601f840112610cb957600080fd5b50813567ffffffffffffffff811115610cd157600080fd5b602083019150836020828501011115610ac057600080fd5b60008060008060608587031215610cff57600080fd5b8435610d0a81610b33565b935060208501359250604085013567ffffffffffffffff811115610d2d57600080fd5b610b2787828801610ca7565b600060208083528351808285015260005b81811015610d6657858101830151858201604001528201610d4a565b506000604082860101526040601f19601f8301168501019250505092915050565b600082601f830112610d9857600080fd5b8135602067ffffffffffffffff821115610db457610db4610b4b565b8160051b610dc3828201610b61565b9283528481018201928281019087851115610ddd57600080fd5b83870192505b8483101561074e57823582529183019190830190610de3565b600080600080600060a08688031215610e1457600080fd5b8535610e1f81610b33565b94506020860135610e2f81610b33565b9350604086013567ffffffffffffffff80821115610e4c57600080fd5b610e5889838a01610d87565b94506060880135915080821115610e6e57600080fd5b610e7a89838a01610d87565b93506080880135915080821115610e9057600080fd5b50610e9d88828901610b92565b9150509295509295909350565b60008060208385031215610ebd57600080fd5b823567ffffffffffffffff811115610ed457600080fd5b610ee085828601610ca7565b90969095509350505050565b600060208284031215610efe57600080fd5b5035919050565b600080600080600060a08688031215610f1d57600080fd5b8535610f2881610b33565b94506020860135610f3881610b33565b93506040860135925060608601359150608086013567ffffffffffffffff811115610f6257600080fd5b610e9d88828901610b92565b600060208284031215610f8057600080fd5b8135610a7481610b33565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610fb357600080fd5b81358015158114610a7457600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610feb57610feb610fc3565b5060010190565b60006020828403121561100457600080fd5b8151610a7481610b33565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000808585111561104e57600080fd5b8386111561105b57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156110905780818660040360031b1b83161692505b505092915050565b8082018082111561077457610774610fc3565b6000806000606084860312156110c057600080fd5b8351925060208401516110d281610b33565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220eb423394a29a0abcff8a03bc98ea584b29ef60c7e1a560777f769e6a618feb1564736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b5061118a806100206000396000f3fe6080604052600436106100ec5760003560e01c8063a4e2d6341161008a578063d0ad253511610059578063d0ad2535146102a7578063dd467064146102c7578063f23a6e61146102e7578063fc0c546a1461031357600080fd5b8063a4e2d63414610230578063bc197c8114610247578063c19d93fb14610273578063ce0617ec1461029157600080fd5b80631f9838b5116100c65780631f9838b51461018857806351945447146101c3578063523e3260146101e35780638da5cb5b1461020357600080fd5b806301ffc9a7146100f8578063039721b11461012d578063150b7a021461014f57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004610a56565b61034b565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004610acc565b6103b2565b005b34801561015b57600080fd5b5061016f61016a366004610c07565b61057b565b6040516001600160e01b03199091168152602001610124565b34801561019457600080fd5b506101186101a3366004610c73565b600160209081526000928352604080842090915290825290205460ff1681565b6101d66101d1366004610cee565b6105e3565b6040516101249190610d68565b3480156101ef57600080fd5b5061016f6101fe366004610db6565b6106b4565b34801561020f57600080fd5b506102186107b8565b6040516001600160a01b039091168152602001610124565b34801561023c57600080fd5b506000544210610118565b34801561025357600080fd5b5061016f610262366004610e8b565b63bc197c8160e01b95945050505050565b34801561027f57600080fd5b5060015b604051908152602001610124565b34801561029d57600080fd5b5061028360005481565b3480156102b357600080fd5b5061016f6102c2366004610f39565b61084e565b3480156102d357600080fd5b5061014d6102e2366004610f7b565b61086f565b3480156102f357600080fd5b5061016f610302366004610f94565b63f23a6e6160e01b95945050505050565b34801561031f57600080fd5b50610328610934565b604080519384526001600160a01b03909216602084015290820152606001610124565b6000806001600160e01b031983166301ffc9a760e01b148061037d57506001600160e01b03198316630271189760e51b145b8061039857506001600160e01b03198316636faff5f160e01b145b905080156103a95750600192915050565b50600092915050565b6000544210156103d557604051636315bfbb60e01b815260040160405180910390fd5b60006103df6107b8565b9050336001600160a01b0382161461040a5760405163ea8e4eb560e01b815260040160405180910390fd5b8382811461042b5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156105725784848281811061044857610448610ffd565b905060200201602081019061045d9190611013565b6001600160a01b03841660009081526001602052604081209089898581811061048857610488610ffd565b905060200201602081019061049d9190611035565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106104f9576104f9610ffd565b905060200201602081019061050e9190611035565b87878581811061052057610520610ffd565b90506020020160208101906105359190611013565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a18061056a81611068565b91505061042e565b50505050505050565b60008060008061058961094c565b92509250925046831480156105a657506001600160a01b03821633145b80156105b157508581145b156105cf5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b606083836105f23383836106b4565b6001600160e01b03191663523e326060e01b146106225760405163ea8e4eb560e01b815260040160405180910390fd5b60005442101561064557604051636315bfbb60e01b815260040160405180910390fd5b8585610651828261099f565b61069a5760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b6106a68a8a8a8a6109da565b9a9950505050505050505050565b60008060006106c161094c565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa15801561070f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107339190611081565b9050806001600160a01b0316876001600160a01b0316036107615750630291f19360e51b92506107b1915050565b6001600160a01b038082166000908152600160209081526040808320938b168352929052205460ff16156107a25750630291f19360e51b92506107b1915050565b506001600160e01b0319925050505b9392505050565b6000806000806107c661094c565b9250925092504683146107dd576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108469190611081565b935050505090565b600061085d600482848661109e565b610866916110c8565b90505b92915050565b6108776107b8565b6001600160a01b0316336001600160a01b0316146108a85760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156108cb57604051636315bfbb60e01b815260040160405180910390fd5b6108d9426301e133806110f8565b8111156108f9576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b600080600061094161094c565b925092509250909192565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610993919061110b565b93509350935050909192565b6000806109ac848461084e565b90506001600160e01b0319811663095ea7b360e01b036109d0576000915050610869565b5060019392505050565b60606000856001600160a01b03168585856040516109f9929190611144565b60006040518083038185875af1925050503d8060008114610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b509250905080610a4d57815160208301fd5b50949350505050565b600060208284031215610a6857600080fd5b81356001600160e01b0319811681146107b157600080fd5b60008083601f840112610a9257600080fd5b50813567ffffffffffffffff811115610aaa57600080fd5b6020830191508360208260051b8501011115610ac557600080fd5b9250929050565b60008060008060408587031215610ae257600080fd5b843567ffffffffffffffff80821115610afa57600080fd5b610b0688838901610a80565b90965094506020870135915080821115610b1f57600080fd5b50610b2c87828801610a80565b95989497509550505050565b6001600160a01b0381168114610b4d57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b8f57610b8f610b50565b604052919050565b600082601f830112610ba857600080fd5b813567ffffffffffffffff811115610bc257610bc2610b50565b610bd5601f8201601f1916602001610b66565b818152846020838601011115610bea57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610c1d57600080fd5b8435610c2881610b38565b93506020850135610c3881610b38565b925060408501359150606085013567ffffffffffffffff811115610c5b57600080fd5b610c6787828801610b97565b91505092959194509250565b60008060408385031215610c8657600080fd5b8235610c9181610b38565b91506020830135610ca181610b38565b809150509250929050565b60008083601f840112610cbe57600080fd5b50813567ffffffffffffffff811115610cd657600080fd5b602083019150836020828501011115610ac557600080fd5b600080600080600060808688031215610d0657600080fd5b8535610d1181610b38565b945060208601359350604086013567ffffffffffffffff811115610d3457600080fd5b610d4088828901610cac565b909450925050606086013560ff81168114610d5a57600080fd5b809150509295509295909350565b600060208083528351808285015260005b81811015610d9557858101830151858201604001528201610d79565b506000604082860101526040601f19601f8301168501019250505092915050565b600080600060408486031215610dcb57600080fd5b8335610dd681610b38565b9250602084013567ffffffffffffffff811115610df257600080fd5b610dfe86828701610cac565b9497909650939450505050565b600082601f830112610e1c57600080fd5b8135602067ffffffffffffffff821115610e3857610e38610b50565b8160051b610e47828201610b66565b9283528481018201928281019087851115610e6157600080fd5b83870192505b84831015610e8057823582529183019190830190610e67565b979650505050505050565b600080600080600060a08688031215610ea357600080fd5b8535610eae81610b38565b94506020860135610ebe81610b38565b9350604086013567ffffffffffffffff80821115610edb57600080fd5b610ee789838a01610e0b565b94506060880135915080821115610efd57600080fd5b610f0989838a01610e0b565b93506080880135915080821115610f1f57600080fd5b50610f2c88828901610b97565b9150509295509295909350565b60008060208385031215610f4c57600080fd5b823567ffffffffffffffff811115610f6357600080fd5b610f6f85828601610cac565b90969095509350505050565b600060208284031215610f8d57600080fd5b5035919050565b600080600080600060a08688031215610fac57600080fd5b8535610fb781610b38565b94506020860135610fc781610b38565b93506040860135925060608601359150608086013567ffffffffffffffff811115610ff157600080fd5b610f2c88828901610b97565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561102557600080fd5b813580151581146107b157600080fd5b60006020828403121561104757600080fd5b81356107b181610b38565b634e487b7160e01b600052601160045260246000fd5b60006001820161107a5761107a611052565b5060010190565b60006020828403121561109357600080fd5b81516107b181610b38565b600080858511156110ae57600080fd5b838611156110bb57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156110f05780818660040360031b1b83161692505b505092915050565b8082018082111561086957610869611052565b60008060006060848603121561112057600080fd5b83519250602084015161113281610b38565b80925050604084015190509250925092565b818382376000910190815291905056fea264697066735822122062a000d968f4f9e334ac56f8fdc909890fab65dffc1717506fc748f45a7b83ba64736f6c63430008110033", + "deployedBytecode": "0x6080604052600436106100ec5760003560e01c8063a4e2d6341161008a578063d0ad253511610059578063d0ad2535146102a7578063dd467064146102c7578063f23a6e61146102e7578063fc0c546a1461031357600080fd5b8063a4e2d63414610230578063bc197c8114610247578063c19d93fb14610273578063ce0617ec1461029157600080fd5b80631f9838b5116100c65780631f9838b51461018857806351945447146101c3578063523e3260146101e35780638da5cb5b1461020357600080fd5b806301ffc9a7146100f8578063039721b11461012d578063150b7a021461014f57600080fd5b366100f357005b600080fd5b34801561010457600080fd5b50610118610113366004610a56565b61034b565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061014d610148366004610acc565b6103b2565b005b34801561015b57600080fd5b5061016f61016a366004610c07565b61057b565b6040516001600160e01b03199091168152602001610124565b34801561019457600080fd5b506101186101a3366004610c73565b600160209081526000928352604080842090915290825290205460ff1681565b6101d66101d1366004610cee565b6105e3565b6040516101249190610d68565b3480156101ef57600080fd5b5061016f6101fe366004610db6565b6106b4565b34801561020f57600080fd5b506102186107b8565b6040516001600160a01b039091168152602001610124565b34801561023c57600080fd5b506000544210610118565b34801561025357600080fd5b5061016f610262366004610e8b565b63bc197c8160e01b95945050505050565b34801561027f57600080fd5b5060015b604051908152602001610124565b34801561029d57600080fd5b5061028360005481565b3480156102b357600080fd5b5061016f6102c2366004610f39565b61084e565b3480156102d357600080fd5b5061014d6102e2366004610f7b565b61086f565b3480156102f357600080fd5b5061016f610302366004610f94565b63f23a6e6160e01b95945050505050565b34801561031f57600080fd5b50610328610934565b604080519384526001600160a01b03909216602084015290820152606001610124565b6000806001600160e01b031983166301ffc9a760e01b148061037d57506001600160e01b03198316630271189760e51b145b8061039857506001600160e01b03198316636faff5f160e01b145b905080156103a95750600192915050565b50600092915050565b6000544210156103d557604051636315bfbb60e01b815260040160405180910390fd5b60006103df6107b8565b9050336001600160a01b0382161461040a5760405163ea8e4eb560e01b815260040160405180910390fd5b8382811461042b5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b818110156105725784848281811061044857610448610ffd565b905060200201602081019061045d9190611013565b6001600160a01b03841660009081526001602052604081209089898581811061048857610488610ffd565b905060200201602081019061049d9190611035565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106104f9576104f9610ffd565b905060200201602081019061050e9190611035565b87878581811061052057610520610ffd565b90506020020160208101906105359190611013565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a18061056a81611068565b91505061042e565b50505050505050565b60008060008061058961094c565b92509250925046831480156105a657506001600160a01b03821633145b80156105b157508581145b156105cf5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b606083836105f23383836106b4565b6001600160e01b03191663523e326060e01b146106225760405163ea8e4eb560e01b815260040160405180910390fd5b60005442101561064557604051636315bfbb60e01b815260040160405180910390fd5b8585610651828261099f565b61069a5760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b6106a68a8a8a8a6109da565b9a9950505050505050505050565b60008060006106c161094c565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa15801561070f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107339190611081565b9050806001600160a01b0316876001600160a01b0316036107615750630291f19360e51b92506107b1915050565b6001600160a01b038082166000908152600160209081526040808320938b168352929052205460ff16156107a25750630291f19360e51b92506107b1915050565b506001600160e01b0319925050505b9392505050565b6000806000806107c661094c565b9250925092504683146107dd576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108469190611081565b935050505090565b600061085d600482848661109e565b610866916110c8565b90505b92915050565b6108776107b8565b6001600160a01b0316336001600160a01b0316146108a85760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156108cb57604051636315bfbb60e01b815260040160405180910390fd5b6108d9426301e133806110f8565b8111156108f9576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b600080600061094161094c565b925092509250909192565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610993919061110b565b93509350935050909192565b6000806109ac848461084e565b90506001600160e01b0319811663095ea7b360e01b036109d0576000915050610869565b5060019392505050565b60606000856001600160a01b03168585856040516109f9929190611144565b60006040518083038185875af1925050503d8060008114610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b509250905080610a4d57815160208301fd5b50949350505050565b600060208284031215610a6857600080fd5b81356001600160e01b0319811681146107b157600080fd5b60008083601f840112610a9257600080fd5b50813567ffffffffffffffff811115610aaa57600080fd5b6020830191508360208260051b8501011115610ac557600080fd5b9250929050565b60008060008060408587031215610ae257600080fd5b843567ffffffffffffffff80821115610afa57600080fd5b610b0688838901610a80565b90965094506020870135915080821115610b1f57600080fd5b50610b2c87828801610a80565b95989497509550505050565b6001600160a01b0381168114610b4d57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610b8f57610b8f610b50565b604052919050565b600082601f830112610ba857600080fd5b813567ffffffffffffffff811115610bc257610bc2610b50565b610bd5601f8201601f1916602001610b66565b818152846020838601011115610bea57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610c1d57600080fd5b8435610c2881610b38565b93506020850135610c3881610b38565b925060408501359150606085013567ffffffffffffffff811115610c5b57600080fd5b610c6787828801610b97565b91505092959194509250565b60008060408385031215610c8657600080fd5b8235610c9181610b38565b91506020830135610ca181610b38565b809150509250929050565b60008083601f840112610cbe57600080fd5b50813567ffffffffffffffff811115610cd657600080fd5b602083019150836020828501011115610ac557600080fd5b600080600080600060808688031215610d0657600080fd5b8535610d1181610b38565b945060208601359350604086013567ffffffffffffffff811115610d3457600080fd5b610d4088828901610cac565b909450925050606086013560ff81168114610d5a57600080fd5b809150509295509295909350565b600060208083528351808285015260005b81811015610d9557858101830151858201604001528201610d79565b506000604082860101526040601f19601f8301168501019250505092915050565b600080600060408486031215610dcb57600080fd5b8335610dd681610b38565b9250602084013567ffffffffffffffff811115610df257600080fd5b610dfe86828701610cac565b9497909650939450505050565b600082601f830112610e1c57600080fd5b8135602067ffffffffffffffff821115610e3857610e38610b50565b8160051b610e47828201610b66565b9283528481018201928281019087851115610e6157600080fd5b83870192505b84831015610e8057823582529183019190830190610e67565b979650505050505050565b600080600080600060a08688031215610ea357600080fd5b8535610eae81610b38565b94506020860135610ebe81610b38565b9350604086013567ffffffffffffffff80821115610edb57600080fd5b610ee789838a01610e0b565b94506060880135915080821115610efd57600080fd5b610f0989838a01610e0b565b93506080880135915080821115610f1f57600080fd5b50610f2c88828901610b97565b9150509295509295909350565b60008060208385031215610f4c57600080fd5b823567ffffffffffffffff811115610f6357600080fd5b610f6f85828601610cac565b90969095509350505050565b600060208284031215610f8d57600080fd5b5035919050565b600080600080600060a08688031215610fac57600080fd5b8535610fb781610b38565b94506020860135610fc781610b38565b93506040860135925060608601359150608086013567ffffffffffffffff811115610ff157600080fd5b610f2c88828901610b97565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561102557600080fd5b813580151581146107b157600080fd5b60006020828403121561104757600080fd5b81356107b181610b38565b634e487b7160e01b600052601160045260246000fd5b60006001820161107a5761107a611052565b5060010190565b60006020828403121561109357600080fd5b81516107b181610b38565b600080858511156110ae57600080fd5b838611156110bb57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156110f05780818660040360031b1b83161692505b505092915050565b8082018082111561086957610869611052565b60008060006060848603121561112057600080fd5b83519250602084015161113281610b38565b80925050604084015190509250925092565b818382376000910190815291905056fea264697066735822122062a000d968f4f9e334ac56f8fdc909890fab65dffc1717506fc748f45a7b83ba64736f6c63430008110033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/build/contracts/contracts/AccountRegistryBridge.sol/AccountRegistryBridge.dbg.json b/build/contracts/contracts/AccountRegistryBridge.sol/AccountRegistryBridge.dbg.json index 7b9b596..9bf173d 100644 --- a/build/contracts/contracts/AccountRegistryBridge.sol/AccountRegistryBridge.dbg.json +++ b/build/contracts/contracts/AccountRegistryBridge.sol/AccountRegistryBridge.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" + "buildInfo": "../../build-info/50bef133a3a4ef56dcc656e5ddaa5648.json" } diff --git a/build/contracts/contracts/AccountRegistryBridge.sol/AccountRegistryBridge.json b/build/contracts/contracts/AccountRegistryBridge.sol/AccountRegistryBridge.json index b1fc0b2..1ad89ac 100644 --- a/build/contracts/contracts/AccountRegistryBridge.sol/AccountRegistryBridge.json +++ b/build/contracts/contracts/AccountRegistryBridge.sol/AccountRegistryBridge.json @@ -78,8 +78,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506102ad806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806306433b1b14610051578063192df655146100885780633a4741bd1461009b5780635fbfb9cf146100b6575b600080fd5b61006c7302101dfb77fde026414827fdc604ddaf224f092181565b6040516001600160a01b03909116815260200160405180910390f35b61006c61009636600461022e565b6100c9565b61006c732d25602551487c3f3354dd80d76d54383a24335881565b61006c6100c436600461022e565b61017d565b604051632f4de29b60e11b8152732d25602551487c3f3354dd80d76d54383a24335860048201524660248201526001600160a01b038316604482015260648101829052600060848201819052907302101dfb77fde026414827fdc604ddaf224f092190635e9bc5369060a401602060405180830381865afa158015610152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610176919061025a565b9392505050565b60405163da7323b360e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201524660248201526001600160a01b03831660448201526064810182905260006084820181905260c060a483015260c48201819052907302101dfb77fde026414827fdc604ddaf224f09219063da7323b39060e4016020604051808303816000875af1158015610152573d6000803e3d6000fd5b6001600160a01b038116811461022b57600080fd5b50565b6000806040838503121561024157600080fd5b823561024c81610216565b946020939093013593505050565b60006020828403121561026c57600080fd5b81516101768161021656fea26469706673582212200b4836e18ca9294f39a0f67787d9af3a81bbfd3510dceb2abf00f235aa0e1ecf64736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806306433b1b14610051578063192df655146100885780633a4741bd1461009b5780635fbfb9cf146100b6575b600080fd5b61006c7302101dfb77fde026414827fdc604ddaf224f092181565b6040516001600160a01b03909116815260200160405180910390f35b61006c61009636600461022e565b6100c9565b61006c732d25602551487c3f3354dd80d76d54383a24335881565b61006c6100c436600461022e565b61017d565b604051632f4de29b60e11b8152732d25602551487c3f3354dd80d76d54383a24335860048201524660248201526001600160a01b038316604482015260648101829052600060848201819052907302101dfb77fde026414827fdc604ddaf224f092190635e9bc5369060a401602060405180830381865afa158015610152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610176919061025a565b9392505050565b60405163da7323b360e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201524660248201526001600160a01b03831660448201526064810182905260006084820181905260c060a483015260c48201819052907302101dfb77fde026414827fdc604ddaf224f09219063da7323b39060e4016020604051808303816000875af1158015610152573d6000803e3d6000fd5b6001600160a01b038116811461022b57600080fd5b50565b6000806040838503121561024157600080fd5b823561024c81610216565b946020939093013593505050565b60006020828403121561026c57600080fd5b81516101768161021656fea26469706673582212200b4836e18ca9294f39a0f67787d9af3a81bbfd3510dceb2abf00f235aa0e1ecf64736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b5061029f806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806306433b1b14610051578063192df655146100885780633a4741bd1461009b5780635fbfb9cf146100b6575b600080fd5b61006c7302101dfb77fde026414827fdc604ddaf224f092181565b6040516001600160a01b03909116815260200160405180910390f35b61006c610096366004610220565b6100c9565b61006c732d25602551487c3f3354dd80d76d54383a24335881565b61006c6100c4366004610220565b61017d565b60405163246a002160e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201526000602482018190524660448301526001600160a01b038416606483015260848201839052907302101dfb77fde026414827fdc604ddaf224f09219063246a00219060a401602060405180830381865afa158015610152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610176919061024c565b9392505050565b604051638a54c52f60e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201526000602482018190524660448301526001600160a01b038416606483015260848201839052907302101dfb77fde026414827fdc604ddaf224f092190638a54c52f9060a4016020604051808303816000875af1158015610152573d6000803e3d6000fd5b6001600160a01b038116811461021d57600080fd5b50565b6000806040838503121561023357600080fd5b823561023e81610208565b946020939093013593505050565b60006020828403121561025e57600080fd5b81516101768161020856fea264697066735822122076764d0e6825b0a387a421cff599da2214256000f08c283c24ee97998cb6a4c764736f6c63430008110033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806306433b1b14610051578063192df655146100885780633a4741bd1461009b5780635fbfb9cf146100b6575b600080fd5b61006c7302101dfb77fde026414827fdc604ddaf224f092181565b6040516001600160a01b03909116815260200160405180910390f35b61006c610096366004610220565b6100c9565b61006c732d25602551487c3f3354dd80d76d54383a24335881565b61006c6100c4366004610220565b61017d565b60405163246a002160e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201526000602482018190524660448301526001600160a01b038416606483015260848201839052907302101dfb77fde026414827fdc604ddaf224f09219063246a00219060a401602060405180830381865afa158015610152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610176919061024c565b9392505050565b604051638a54c52f60e01b8152732d25602551487c3f3354dd80d76d54383a24335860048201526000602482018190524660448301526001600160a01b038416606483015260848201839052907302101dfb77fde026414827fdc604ddaf224f092190638a54c52f9060a4016020604051808303816000875af1158015610152573d6000803e3d6000fd5b6001600160a01b038116811461021d57600080fd5b50565b6000806040838503121561023357600080fd5b823561023e81610208565b946020939093013593505050565b60006020828403121561025e57600080fd5b81516101768161020856fea264697066735822122076764d0e6825b0a387a421cff599da2214256000f08c283c24ee97998cb6a4c764736f6c63430008110033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/build/contracts/contracts/ChargedParticlesAccount.sol/ChargedParticlesAccount.dbg.json b/build/contracts/contracts/ChargedParticlesAccount.sol/ChargedParticlesAccount.dbg.json index 7b9b596..51f4c0b 100644 --- a/build/contracts/contracts/ChargedParticlesAccount.sol/ChargedParticlesAccount.dbg.json +++ b/build/contracts/contracts/ChargedParticlesAccount.sol/ChargedParticlesAccount.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" + "buildInfo": "../../build-info/12d08302563728732d9881031a37cca7.json" } diff --git a/build/contracts/contracts/ChargedParticlesAccount.sol/ChargedParticlesAccount.json b/build/contracts/contracts/ChargedParticlesAccount.sol/ChargedParticlesAccount.json index de559c1..d03b634 100644 --- a/build/contracts/contracts/ChargedParticlesAccount.sol/ChargedParticlesAccount.json +++ b/build/contracts/contracts/ChargedParticlesAccount.sol/ChargedParticlesAccount.json @@ -91,31 +91,6 @@ "name": "PermissionUpdated", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "TransactionExecuted", - "type": "event" - }, { "inputs": [ { @@ -224,9 +199,14 @@ "internalType": "bytes", "name": "data", "type": "bytes" + }, + { + "internalType": "uint8", + "name": "operation", + "type": "uint8" } ], - "name": "executeCall", + "name": "execute", "outputs": [ { "internalType": "bytes", @@ -238,14 +218,8 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "caller", - "type": "address" - } - ], - "name": "isAuthorized", + "inputs": [], + "name": "isLocked", "outputs": [ { "internalType": "bool", @@ -257,13 +231,24 @@ "type": "function" }, { - "inputs": [], - "name": "isLocked", + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "isValidSigner", "outputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" } ], "stateMutability": "view", @@ -481,6 +466,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "state", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -528,8 +526,8 @@ "type": "receive" } ], - "bytecode": "0x608060405234801561001057600080fd5b506114a9806100206000396000f3fe60806040526004361061010d5760003560e01c8063a737a29911610095578063d0ad253511610064578063d0ad253514610318578063dd46706414610338578063f23a6e6114610358578063fc0c546a14610384578063fe9fbb80146103bc57600080fd5b8063a737a29914610288578063bc197c81146102a8578063ca1cc220146102d4578063ce0617ec146102f457600080fd5b80636b764e1b116100dc5780636b764e1b146101e45780638da5cb5b146102045780639e5d4c4914610231578063a4e2d63414610251578063a65e78f11461026857600080fd5b806301ffc9a714610119578063039721b11461014e578063150b7a02146101705780631f9838b5146101a957600080fd5b3661011457005b600080fd5b34801561012557600080fd5b50610139610134366004610cbb565b6103dc565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b5061016e610169366004610d38565b610443565b005b34801561017c57600080fd5b5061019061018b366004610e73565b61060c565b6040516001600160e01b03199091168152602001610145565b3480156101b557600080fd5b506101396101c4366004610edf565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101f057600080fd5b5061016e6101ff366004610f18565b610674565b34801561021057600080fd5b506102196106e2565b6040516001600160a01b039091168152602001610145565b61024461023f366004610fa0565b610778565b6040516101459190610ff0565b34801561025d57600080fd5b506000544210610139565b34801561027457600080fd5b5061016e61028336600461103e565b610873565b34801561029457600080fd5b5061016e6102a336600461106a565b6108ef565b3480156102b457600080fd5b506101906102c3366004611114565b63bc197c8160e01b95945050505050565b3480156102e057600080fd5b5061016e6102ef3660046111c2565b610951565b34801561030057600080fd5b5061030a60005481565b604051908152602001610145565b34801561032457600080fd5b50610190610333366004611203565b6109ca565b34801561034457600080fd5b5061016e610353366004611245565b6109eb565b34801561036457600080fd5b5061019061037336600461125e565b63f23a6e6160e01b95945050505050565b34801561039057600080fd5b50610399610ab0565b604080519384526001600160a01b03909216602084015290820152606001610145565b3480156103c857600080fd5b506101396103d73660046112c7565b610ac8565b6000806001600160e01b031983166301ffc9a760e01b148061040e57506001600160e01b03198316630271189760e51b145b8061042957506001600160e01b03198316631dfe9a6f60e31b145b9050801561043a5750600192915050565b50600092915050565b60005442101561046657604051636315bfbb60e01b815260040160405180910390fd5b60006104706106e2565b9050336001600160a01b0382161461049b5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104bc5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b81811015610603578484828181106104d9576104d96112e4565b90506020020160208101906104ee9190611308565b6001600160a01b038416600090815260016020526040812090898985818110610519576105196112e4565b905060200201602081019061052e91906112c7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf58388888481811061058a5761058a6112e4565b905060200201602081019061059f91906112c7565b8787858181106105b1576105b16112e4565b90506020020160208101906105c69190611308565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a1806105fb8161133b565b9150506104bf565b50505050505050565b60008060008061061a610bb1565b925092509250468314801561063757506001600160a01b03821633145b801561064257508581145b156106605760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b604051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156106c457600080fd5b505af11580156106d8573d6000803e3d6000fd5b5050505050505050565b6000806000806106f0610bb1565b925092509250468314610707576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa15801561074c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107709190611354565b935050505090565b606061078333610ac8565b6107a05760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156107c357604051636315bfbb60e01b815260040160405180910390fd5b82826107cf8282610c04565b6108185760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b85876001600160a01b03167f47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d28787604051610854929190611371565b60405180910390a361086887878787610c3f565b979650505050505050565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af11580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea91906113a0565b505050565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038416906342842e0e90606401600060405180830381600087803b15801561093d57600080fd5b505af1158015610603573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af11580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c491906113a0565b50505050565b60006109d960048284866113bd565b6109e2916113e7565b90505b92915050565b6109f36106e2565b6001600160a01b0316336001600160a01b031614610a245760405163ea8e4eb560e01b815260040160405180910390fd5b600054421015610a4757604051636315bfbb60e01b815260040160405180910390fd5b610a55426301e13380611417565b811115610a75576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b6000806000610abd610bb1565b925092509250909192565b6000806000610ad5610bb1565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190611354565b9050806001600160a01b0316856001600160a01b031603610b6d57506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff1615610ba657506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610bf8919061142a565b93509350935050909192565b600080610c1184846109ca565b90506001600160e01b0319811663095ea7b360e01b03610c355760009150506109e5565b5060019392505050565b60606000856001600160a01b0316858585604051610c5e929190611463565b60006040518083038185875af1925050503d8060008114610c9b576040519150601f19603f3d011682016040523d82523d6000602084013e610ca0565b606091505b509250905080610cb257815160208301fd5b50949350505050565b600060208284031215610ccd57600080fd5b81356001600160e01b031981168114610ce557600080fd5b9392505050565b60008083601f840112610cfe57600080fd5b50813567ffffffffffffffff811115610d1657600080fd5b6020830191508360208260051b8501011115610d3157600080fd5b9250929050565b60008060008060408587031215610d4e57600080fd5b843567ffffffffffffffff80821115610d6657600080fd5b610d7288838901610cec565b90965094506020870135915080821115610d8b57600080fd5b50610d9887828801610cec565b95989497509550505050565b6001600160a01b0381168114610db957600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610dfb57610dfb610dbc565b604052919050565b600082601f830112610e1457600080fd5b813567ffffffffffffffff811115610e2e57610e2e610dbc565b610e41601f8201601f1916602001610dd2565b818152846020838601011115610e5657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e8957600080fd5b8435610e9481610da4565b93506020850135610ea481610da4565b925060408501359150606085013567ffffffffffffffff811115610ec757600080fd5b610ed387828801610e03565b91505092959194509250565b60008060408385031215610ef257600080fd5b8235610efd81610da4565b91506020830135610f0d81610da4565b809150509250929050565b60008060008060808587031215610f2e57600080fd5b8435610f3981610da4565b93506020850135610f4981610da4565b93969395505050506040820135916060013590565b60008083601f840112610f7057600080fd5b50813567ffffffffffffffff811115610f8857600080fd5b602083019150836020828501011115610d3157600080fd5b60008060008060608587031215610fb657600080fd5b8435610fc181610da4565b935060208501359250604085013567ffffffffffffffff811115610fe457600080fd5b610d9887828801610f5e565b600060208083528351808285015260005b8181101561101d57858101830151858201604001528201611001565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561105157600080fd5b823561105c81610da4565b946020939093013593505050565b60008060006060848603121561107f57600080fd5b833561108a81610da4565b95602085013595506040909401359392505050565b600082601f8301126110b057600080fd5b8135602067ffffffffffffffff8211156110cc576110cc610dbc565b8160051b6110db828201610dd2565b92835284810182019282810190878511156110f557600080fd5b83870192505b84831015610868578235825291830191908301906110fb565b600080600080600060a0868803121561112c57600080fd5b853561113781610da4565b9450602086013561114781610da4565b9350604086013567ffffffffffffffff8082111561116457600080fd5b61117089838a0161109f565b9450606088013591508082111561118657600080fd5b61119289838a0161109f565b935060808801359150808211156111a857600080fd5b506111b588828901610e03565b9150509295509295909350565b6000806000606084860312156111d757600080fd5b83356111e281610da4565b925060208401356111f281610da4565b929592945050506040919091013590565b6000806020838503121561121657600080fd5b823567ffffffffffffffff81111561122d57600080fd5b61123985828601610f5e565b90969095509350505050565b60006020828403121561125757600080fd5b5035919050565b600080600080600060a0868803121561127657600080fd5b853561128181610da4565b9450602086013561129181610da4565b93506040860135925060608601359150608086013567ffffffffffffffff8111156112bb57600080fd5b6111b588828901610e03565b6000602082840312156112d957600080fd5b8135610ce581610da4565b634e487b7160e01b600052603260045260246000fd5b8015158114610db957600080fd5b60006020828403121561131a57600080fd5b8135610ce5816112fa565b634e487b7160e01b600052601160045260246000fd5b60006001820161134d5761134d611325565b5060010190565b60006020828403121561136657600080fd5b8151610ce581610da4565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156113b257600080fd5b8151610ce5816112fa565b600080858511156113cd57600080fd5b838611156113da57600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561140f5780818660040360031b1b83161692505b505092915050565b808201808211156109e5576109e5611325565b60008060006060848603121561143f57600080fd5b83519250602084015161145181610da4565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220a53d9f0a5da30624ea9d8a215cb356ee157dbd7bc9d81c8b84c41586262e0b7464736f6c63430008110033", - "deployedBytecode": "0x60806040526004361061010d5760003560e01c8063a737a29911610095578063d0ad253511610064578063d0ad253514610318578063dd46706414610338578063f23a6e6114610358578063fc0c546a14610384578063fe9fbb80146103bc57600080fd5b8063a737a29914610288578063bc197c81146102a8578063ca1cc220146102d4578063ce0617ec146102f457600080fd5b80636b764e1b116100dc5780636b764e1b146101e45780638da5cb5b146102045780639e5d4c4914610231578063a4e2d63414610251578063a65e78f11461026857600080fd5b806301ffc9a714610119578063039721b11461014e578063150b7a02146101705780631f9838b5146101a957600080fd5b3661011457005b600080fd5b34801561012557600080fd5b50610139610134366004610cbb565b6103dc565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b5061016e610169366004610d38565b610443565b005b34801561017c57600080fd5b5061019061018b366004610e73565b61060c565b6040516001600160e01b03199091168152602001610145565b3480156101b557600080fd5b506101396101c4366004610edf565b600160209081526000928352604080842090915290825290205460ff1681565b3480156101f057600080fd5b5061016e6101ff366004610f18565b610674565b34801561021057600080fd5b506102196106e2565b6040516001600160a01b039091168152602001610145565b61024461023f366004610fa0565b610778565b6040516101459190610ff0565b34801561025d57600080fd5b506000544210610139565b34801561027457600080fd5b5061016e61028336600461103e565b610873565b34801561029457600080fd5b5061016e6102a336600461106a565b6108ef565b3480156102b457600080fd5b506101906102c3366004611114565b63bc197c8160e01b95945050505050565b3480156102e057600080fd5b5061016e6102ef3660046111c2565b610951565b34801561030057600080fd5b5061030a60005481565b604051908152602001610145565b34801561032457600080fd5b50610190610333366004611203565b6109ca565b34801561034457600080fd5b5061016e610353366004611245565b6109eb565b34801561036457600080fd5b5061019061037336600461125e565b63f23a6e6160e01b95945050505050565b34801561039057600080fd5b50610399610ab0565b604080519384526001600160a01b03909216602084015290820152606001610145565b3480156103c857600080fd5b506101396103d73660046112c7565b610ac8565b6000806001600160e01b031983166301ffc9a760e01b148061040e57506001600160e01b03198316630271189760e51b145b8061042957506001600160e01b03198316631dfe9a6f60e31b145b9050801561043a5750600192915050565b50600092915050565b60005442101561046657604051636315bfbb60e01b815260040160405180910390fd5b60006104706106e2565b9050336001600160a01b0382161461049b5760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104bc5760405163b4fa3fb360e01b815260040160405180910390fd5b60005b81811015610603578484828181106104d9576104d96112e4565b90506020020160208101906104ee9190611308565b6001600160a01b038416600090815260016020526040812090898985818110610519576105196112e4565b905060200201602081019061052e91906112c7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf58388888481811061058a5761058a6112e4565b905060200201602081019061059f91906112c7565b8787858181106105b1576105b16112e4565b90506020020160208101906105c69190611308565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a1806105fb8161133b565b9150506104bf565b50505050505050565b60008060008061061a610bb1565b925092509250468314801561063757506001600160a01b03821633145b801561064257508581145b156106605760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b604051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156106c457600080fd5b505af11580156106d8573d6000803e3d6000fd5b5050505050505050565b6000806000806106f0610bb1565b925092509250468314610707576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa15801561074c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107709190611354565b935050505090565b606061078333610ac8565b6107a05760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156107c357604051636315bfbb60e01b815260040160405180910390fd5b82826107cf8282610c04565b6108185760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b85876001600160a01b03167f47d99ad340f52da66535aff7e10da1ceb85a32bcbd9fa1c42314d194545e14d28787604051610854929190611371565b60405180910390a361086887878787610c3f565b979650505050505050565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af11580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea91906113a0565b505050565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038416906342842e0e90606401600060405180830381600087803b15801561093d57600080fd5b505af1158015610603573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af11580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c491906113a0565b50505050565b60006109d960048284866113bd565b6109e2916113e7565b90505b92915050565b6109f36106e2565b6001600160a01b0316336001600160a01b031614610a245760405163ea8e4eb560e01b815260040160405180910390fd5b600054421015610a4757604051636315bfbb60e01b815260040160405180910390fd5b610a55426301e13380611417565b811115610a75576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b6000806000610abd610bb1565b925092509250909192565b6000806000610ad5610bb1565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190611354565b9050806001600160a01b0316856001600160a01b031603610b6d57506001949350505050565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205460ff1615610ba657506001949350505050565b506000949350505050565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610bf8919061142a565b93509350935050909192565b600080610c1184846109ca565b90506001600160e01b0319811663095ea7b360e01b03610c355760009150506109e5565b5060019392505050565b60606000856001600160a01b0316858585604051610c5e929190611463565b60006040518083038185875af1925050503d8060008114610c9b576040519150601f19603f3d011682016040523d82523d6000602084013e610ca0565b606091505b509250905080610cb257815160208301fd5b50949350505050565b600060208284031215610ccd57600080fd5b81356001600160e01b031981168114610ce557600080fd5b9392505050565b60008083601f840112610cfe57600080fd5b50813567ffffffffffffffff811115610d1657600080fd5b6020830191508360208260051b8501011115610d3157600080fd5b9250929050565b60008060008060408587031215610d4e57600080fd5b843567ffffffffffffffff80821115610d6657600080fd5b610d7288838901610cec565b90965094506020870135915080821115610d8b57600080fd5b50610d9887828801610cec565b95989497509550505050565b6001600160a01b0381168114610db957600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610dfb57610dfb610dbc565b604052919050565b600082601f830112610e1457600080fd5b813567ffffffffffffffff811115610e2e57610e2e610dbc565b610e41601f8201601f1916602001610dd2565b818152846020838601011115610e5657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e8957600080fd5b8435610e9481610da4565b93506020850135610ea481610da4565b925060408501359150606085013567ffffffffffffffff811115610ec757600080fd5b610ed387828801610e03565b91505092959194509250565b60008060408385031215610ef257600080fd5b8235610efd81610da4565b91506020830135610f0d81610da4565b809150509250929050565b60008060008060808587031215610f2e57600080fd5b8435610f3981610da4565b93506020850135610f4981610da4565b93969395505050506040820135916060013590565b60008083601f840112610f7057600080fd5b50813567ffffffffffffffff811115610f8857600080fd5b602083019150836020828501011115610d3157600080fd5b60008060008060608587031215610fb657600080fd5b8435610fc181610da4565b935060208501359250604085013567ffffffffffffffff811115610fe457600080fd5b610d9887828801610f5e565b600060208083528351808285015260005b8181101561101d57858101830151858201604001528201611001565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561105157600080fd5b823561105c81610da4565b946020939093013593505050565b60008060006060848603121561107f57600080fd5b833561108a81610da4565b95602085013595506040909401359392505050565b600082601f8301126110b057600080fd5b8135602067ffffffffffffffff8211156110cc576110cc610dbc565b8160051b6110db828201610dd2565b92835284810182019282810190878511156110f557600080fd5b83870192505b84831015610868578235825291830191908301906110fb565b600080600080600060a0868803121561112c57600080fd5b853561113781610da4565b9450602086013561114781610da4565b9350604086013567ffffffffffffffff8082111561116457600080fd5b61117089838a0161109f565b9450606088013591508082111561118657600080fd5b61119289838a0161109f565b935060808801359150808211156111a857600080fd5b506111b588828901610e03565b9150509295509295909350565b6000806000606084860312156111d757600080fd5b83356111e281610da4565b925060208401356111f281610da4565b929592945050506040919091013590565b6000806020838503121561121657600080fd5b823567ffffffffffffffff81111561122d57600080fd5b61123985828601610f5e565b90969095509350505050565b60006020828403121561125757600080fd5b5035919050565b600080600080600060a0868803121561127657600080fd5b853561128181610da4565b9450602086013561129181610da4565b93506040860135925060608601359150608086013567ffffffffffffffff8111156112bb57600080fd5b6111b588828901610e03565b6000602082840312156112d957600080fd5b8135610ce581610da4565b634e487b7160e01b600052603260045260246000fd5b8015158114610db957600080fd5b60006020828403121561131a57600080fd5b8135610ce5816112fa565b634e487b7160e01b600052601160045260246000fd5b60006001820161134d5761134d611325565b5060010190565b60006020828403121561136657600080fd5b8151610ce581610da4565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156113b257600080fd5b8151610ce5816112fa565b600080858511156113cd57600080fd5b838611156113da57600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561140f5780818660040360031b1b83161692505b505092915050565b808201808211156109e5576109e5611325565b60008060006060848603121561143f57600080fd5b83519250602084015161145181610da4565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220a53d9f0a5da30624ea9d8a215cb356ee157dbd7bc9d81c8b84c41586262e0b7464736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b50611509806100206000396000f3fe6080604052600436106101185760003560e01c8063a65e78f1116100a0578063ce0617ec11610064578063ce0617ec1461033d578063d0ad253514610353578063dd46706414610373578063f23a6e6114610393578063fc0c546a146103bf57600080fd5b8063a65e78f114610293578063a737a299146102b3578063bc197c81146102d3578063c19d93fb146102ff578063ca1cc2201461031d57600080fd5b806351945447116100e757806351945447146101ef578063523e32601461020f5780636b764e1b1461022f5780638da5cb5b1461024f578063a4e2d6341461027c57600080fd5b806301ffc9a714610124578063039721b114610159578063150b7a021461017b5780631f9838b5146101b457600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5061014461013f366004610cc7565b6103f7565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d3d565b61045e565b005b34801561018757600080fd5b5061019b610196366004610e78565b610627565b6040516001600160e01b03199091168152602001610150565b3480156101c057600080fd5b506101446101cf366004610ee4565b600160209081526000928352604080842090915290825290205460ff1681565b6102026101fd366004610f5f565b61068f565b6040516101509190610fd9565b34801561021b57600080fd5b5061019b61022a366004611027565b610760565b34801561023b57600080fd5b5061017961024a36600461107c565b610864565b34801561025b57600080fd5b506102646108d2565b6040516001600160a01b039091168152602001610150565b34801561028857600080fd5b506000544210610144565b34801561029f57600080fd5b506101796102ae3660046110c2565b610968565b3480156102bf57600080fd5b506101796102ce3660046110ee565b6109e4565b3480156102df57600080fd5b5061019b6102ee3660046111a3565b63bc197c8160e01b95945050505050565b34801561030b57600080fd5b5060015b604051908152602001610150565b34801561032957600080fd5b50610179610338366004611251565b610a46565b34801561034957600080fd5b5061030f60005481565b34801561035f57600080fd5b5061019b61036e366004611292565b610abf565b34801561037f57600080fd5b5061017961038e3660046112d4565b610ae0565b34801561039f57600080fd5b5061019b6103ae3660046112ed565b63f23a6e6160e01b95945050505050565b3480156103cb57600080fd5b506103d4610ba5565b604080519384526001600160a01b03909216602084015290820152606001610150565b6000806001600160e01b031983166301ffc9a760e01b148061042957506001600160e01b03198316630271189760e51b145b8061044457506001600160e01b03198316636faff5f160e01b145b905080156104555750600192915050565b50600092915050565b60005442101561048157604051636315bfbb60e01b815260040160405180910390fd5b600061048b6108d2565b9050336001600160a01b038216146104b65760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104d75760405163b4fa3fb360e01b815260040160405180910390fd5b60005b8181101561061e578484828181106104f4576104f4611356565b9050602002016020810190610509919061137a565b6001600160a01b03841660009081526001602052604081209089898581811061053457610534611356565b90506020020160208101906105499190611397565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106105a5576105a5611356565b90506020020160208101906105ba9190611397565b8787858181106105cc576105cc611356565b90506020020160208101906105e1919061137a565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a180610616816113ca565b9150506104da565b50505050505050565b600080600080610635610bbd565b925092509250468314801561065257506001600160a01b03821633145b801561065d57508581145b1561067b5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6060838361069e338383610760565b6001600160e01b03191663523e326060e01b146106ce5760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156106f157604051636315bfbb60e01b815260040160405180910390fd5b85856106fd8282610c10565b6107465760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b6107528a8a8a8a610c4b565b9a9950505050505050505050565b600080600061076d610bbd565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa1580156107bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df91906113e3565b9050806001600160a01b0316876001600160a01b03160361080d5750630291f19360e51b925061085d915050565b6001600160a01b038082166000908152600160209081526040808320938b168352929052205460ff161561084e5750630291f19360e51b925061085d915050565b506001600160e01b0319925050505b9392505050565b604051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156108b457600080fd5b505af11580156108c8573d6000803e3d6000fd5b5050505050505050565b6000806000806108e0610bbd565b9250925092504683146108f7576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906113e3565b935050505090565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af11580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190611400565b505050565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038416906342842e0e90606401600060405180830381600087803b158015610a3257600080fd5b505af115801561061e573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab99190611400565b50505050565b6000610ace600482848661141d565b610ad791611447565b90505b92915050565b610ae86108d2565b6001600160a01b0316336001600160a01b031614610b195760405163ea8e4eb560e01b815260040160405180910390fd5b600054421015610b3c57604051636315bfbb60e01b815260040160405180910390fd5b610b4a426301e13380611477565b811115610b6a576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b6000806000610bb2610bbd565b925092509250909192565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610c04919061148a565b93509350935050909192565b600080610c1d8484610abf565b90506001600160e01b0319811663095ea7b360e01b03610c41576000915050610ada565b5060019392505050565b60606000856001600160a01b0316858585604051610c6a9291906114c3565b60006040518083038185875af1925050503d8060008114610ca7576040519150601f19603f3d011682016040523d82523d6000602084013e610cac565b606091505b509250905080610cbe57815160208301fd5b50949350505050565b600060208284031215610cd957600080fd5b81356001600160e01b03198116811461085d57600080fd5b60008083601f840112610d0357600080fd5b50813567ffffffffffffffff811115610d1b57600080fd5b6020830191508360208260051b8501011115610d3657600080fd5b9250929050565b60008060008060408587031215610d5357600080fd5b843567ffffffffffffffff80821115610d6b57600080fd5b610d7788838901610cf1565b90965094506020870135915080821115610d9057600080fd5b50610d9d87828801610cf1565b95989497509550505050565b6001600160a01b0381168114610dbe57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e0057610e00610dc1565b604052919050565b600082601f830112610e1957600080fd5b813567ffffffffffffffff811115610e3357610e33610dc1565b610e46601f8201601f1916602001610dd7565b818152846020838601011115610e5b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e8e57600080fd5b8435610e9981610da9565b93506020850135610ea981610da9565b925060408501359150606085013567ffffffffffffffff811115610ecc57600080fd5b610ed887828801610e08565b91505092959194509250565b60008060408385031215610ef757600080fd5b8235610f0281610da9565b91506020830135610f1281610da9565b809150509250929050565b60008083601f840112610f2f57600080fd5b50813567ffffffffffffffff811115610f4757600080fd5b602083019150836020828501011115610d3657600080fd5b600080600080600060808688031215610f7757600080fd5b8535610f8281610da9565b945060208601359350604086013567ffffffffffffffff811115610fa557600080fd5b610fb188828901610f1d565b909450925050606086013560ff81168114610fcb57600080fd5b809150509295509295909350565b600060208083528351808285015260005b8181101561100657858101830151858201604001528201610fea565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060006040848603121561103c57600080fd5b833561104781610da9565b9250602084013567ffffffffffffffff81111561106357600080fd5b61106f86828701610f1d565b9497909650939450505050565b6000806000806080858703121561109257600080fd5b843561109d81610da9565b935060208501356110ad81610da9565b93969395505050506040820135916060013590565b600080604083850312156110d557600080fd5b82356110e081610da9565b946020939093013593505050565b60008060006060848603121561110357600080fd5b833561110e81610da9565b95602085013595506040909401359392505050565b600082601f83011261113457600080fd5b8135602067ffffffffffffffff82111561115057611150610dc1565b8160051b61115f828201610dd7565b928352848101820192828101908785111561117957600080fd5b83870192505b848310156111985782358252918301919083019061117f565b979650505050505050565b600080600080600060a086880312156111bb57600080fd5b85356111c681610da9565b945060208601356111d681610da9565b9350604086013567ffffffffffffffff808211156111f357600080fd5b6111ff89838a01611123565b9450606088013591508082111561121557600080fd5b61122189838a01611123565b9350608088013591508082111561123757600080fd5b5061124488828901610e08565b9150509295509295909350565b60008060006060848603121561126657600080fd5b833561127181610da9565b9250602084013561128181610da9565b929592945050506040919091013590565b600080602083850312156112a557600080fd5b823567ffffffffffffffff8111156112bc57600080fd5b6112c885828601610f1d565b90969095509350505050565b6000602082840312156112e657600080fd5b5035919050565b600080600080600060a0868803121561130557600080fd5b853561131081610da9565b9450602086013561132081610da9565b93506040860135925060608601359150608086013567ffffffffffffffff81111561134a57600080fd5b61124488828901610e08565b634e487b7160e01b600052603260045260246000fd5b8015158114610dbe57600080fd5b60006020828403121561138c57600080fd5b813561085d8161136c565b6000602082840312156113a957600080fd5b813561085d81610da9565b634e487b7160e01b600052601160045260246000fd5b6000600182016113dc576113dc6113b4565b5060010190565b6000602082840312156113f557600080fd5b815161085d81610da9565b60006020828403121561141257600080fd5b815161085d8161136c565b6000808585111561142d57600080fd5b8386111561143a57600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561146f5780818660040360031b1b83161692505b505092915050565b80820180821115610ada57610ada6113b4565b60008060006060848603121561149f57600080fd5b8351925060208401516114b181610da9565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220e030a8aebc0c7189e7cb5b473a0cf379bfbc7e164cde1f79e1fbd2c296e8e56a64736f6c63430008110033", + "deployedBytecode": "0x6080604052600436106101185760003560e01c8063a65e78f1116100a0578063ce0617ec11610064578063ce0617ec1461033d578063d0ad253514610353578063dd46706414610373578063f23a6e6114610393578063fc0c546a146103bf57600080fd5b8063a65e78f114610293578063a737a299146102b3578063bc197c81146102d3578063c19d93fb146102ff578063ca1cc2201461031d57600080fd5b806351945447116100e757806351945447146101ef578063523e32601461020f5780636b764e1b1461022f5780638da5cb5b1461024f578063a4e2d6341461027c57600080fd5b806301ffc9a714610124578063039721b114610159578063150b7a021461017b5780631f9838b5146101b457600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5061014461013f366004610cc7565b6103f7565b60405190151581526020015b60405180910390f35b34801561016557600080fd5b50610179610174366004610d3d565b61045e565b005b34801561018757600080fd5b5061019b610196366004610e78565b610627565b6040516001600160e01b03199091168152602001610150565b3480156101c057600080fd5b506101446101cf366004610ee4565b600160209081526000928352604080842090915290825290205460ff1681565b6102026101fd366004610f5f565b61068f565b6040516101509190610fd9565b34801561021b57600080fd5b5061019b61022a366004611027565b610760565b34801561023b57600080fd5b5061017961024a36600461107c565b610864565b34801561025b57600080fd5b506102646108d2565b6040516001600160a01b039091168152602001610150565b34801561028857600080fd5b506000544210610144565b34801561029f57600080fd5b506101796102ae3660046110c2565b610968565b3480156102bf57600080fd5b506101796102ce3660046110ee565b6109e4565b3480156102df57600080fd5b5061019b6102ee3660046111a3565b63bc197c8160e01b95945050505050565b34801561030b57600080fd5b5060015b604051908152602001610150565b34801561032957600080fd5b50610179610338366004611251565b610a46565b34801561034957600080fd5b5061030f60005481565b34801561035f57600080fd5b5061019b61036e366004611292565b610abf565b34801561037f57600080fd5b5061017961038e3660046112d4565b610ae0565b34801561039f57600080fd5b5061019b6103ae3660046112ed565b63f23a6e6160e01b95945050505050565b3480156103cb57600080fd5b506103d4610ba5565b604080519384526001600160a01b03909216602084015290820152606001610150565b6000806001600160e01b031983166301ffc9a760e01b148061042957506001600160e01b03198316630271189760e51b145b8061044457506001600160e01b03198316636faff5f160e01b145b905080156104555750600192915050565b50600092915050565b60005442101561048157604051636315bfbb60e01b815260040160405180910390fd5b600061048b6108d2565b9050336001600160a01b038216146104b65760405163ea8e4eb560e01b815260040160405180910390fd5b838281146104d75760405163b4fa3fb360e01b815260040160405180910390fd5b60005b8181101561061e578484828181106104f4576104f4611356565b9050602002016020810190610509919061137a565b6001600160a01b03841660009081526001602052604081209089898581811061053457610534611356565b90506020020160208101906105499190611397565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f394777a58092892d136a90c4bb7e4350c72ac50fba6a0208128677f36527dcf5838888848181106105a5576105a5611356565b90506020020160208101906105ba9190611397565b8787858181106105cc576105cc611356565b90506020020160208101906105e1919061137a565b604080516001600160a01b03948516815293909216602084015215159082015260600160405180910390a180610616816113ca565b9150506104da565b50505050505050565b600080600080610635610bbd565b925092509250468314801561065257506001600160a01b03821633145b801561065d57508581145b1561067b5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6060838361069e338383610760565b6001600160e01b03191663523e326060e01b146106ce5760405163ea8e4eb560e01b815260040160405180910390fd5b6000544210156106f157604051636315bfbb60e01b815260040160405180910390fd5b85856106fd8282610c10565b6107465760405162461bcd60e51b815260206004820152601660248201527513595d1a1bd908185b1b081b9bdd08185b1b1bddd95960521b604482015260640160405180910390fd5b6107528a8a8a8a610c4b565b9a9950505050505050505050565b600080600061076d610bbd565b6040516331a9108f60e11b8152600481018290529194509250600091506001600160a01b03841690636352211e90602401602060405180830381865afa1580156107bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df91906113e3565b9050806001600160a01b0316876001600160a01b03160361080d5750630291f19360e51b925061085d915050565b6001600160a01b038082166000908152600160209081526040808320938b168352929052205460ff161561084e5750630291f19360e51b925061085d915050565b506001600160e01b0319925050505b9392505050565b604051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490528416906342842e0e90606401600060405180830381600087803b1580156108b457600080fd5b505af11580156108c8573d6000803e3d6000fd5b5050505050505050565b6000806000806108e0610bbd565b9250925092504683146108f7576000935050505090565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906113e3565b935050505090565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303816000875af11580156109bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109df9190611400565b505050565b604051632142170760e11b8152336004820152306024820152604481018390526001600160a01b038416906342842e0e90606401600060405180830381600087803b158015610a3257600080fd5b505af115801561061e573d6000803e3d6000fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb906044016020604051808303816000875af1158015610a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab99190611400565b50505050565b6000610ace600482848661141d565b610ad791611447565b90505b92915050565b610ae86108d2565b6001600160a01b0316336001600160a01b031614610b195760405163ea8e4eb560e01b815260040160405180910390fd5b600054421015610b3c57604051636315bfbb60e01b815260040160405180910390fd5b610b4a426301e13380611477565b811115610b6a576040516301814f7d60e31b815260040160405180910390fd5b60008190556040518181527fa7b24c66dd3269a292a60b3facdbb8f3e7557d1e19e64d99e0d6ee7250be63ad9060200160405180910390a150565b6000806000610bb2610bbd565b925092509250909192565b604080516060808252608082019092526000918291829182919060208201818036833701905050905060ad604d60208301303c80806020019051810190610c04919061148a565b93509350935050909192565b600080610c1d8484610abf565b90506001600160e01b0319811663095ea7b360e01b03610c41576000915050610ada565b5060019392505050565b60606000856001600160a01b0316858585604051610c6a9291906114c3565b60006040518083038185875af1925050503d8060008114610ca7576040519150601f19603f3d011682016040523d82523d6000602084013e610cac565b606091505b509250905080610cbe57815160208301fd5b50949350505050565b600060208284031215610cd957600080fd5b81356001600160e01b03198116811461085d57600080fd5b60008083601f840112610d0357600080fd5b50813567ffffffffffffffff811115610d1b57600080fd5b6020830191508360208260051b8501011115610d3657600080fd5b9250929050565b60008060008060408587031215610d5357600080fd5b843567ffffffffffffffff80821115610d6b57600080fd5b610d7788838901610cf1565b90965094506020870135915080821115610d9057600080fd5b50610d9d87828801610cf1565b95989497509550505050565b6001600160a01b0381168114610dbe57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e0057610e00610dc1565b604052919050565b600082601f830112610e1957600080fd5b813567ffffffffffffffff811115610e3357610e33610dc1565b610e46601f8201601f1916602001610dd7565b818152846020838601011115610e5b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610e8e57600080fd5b8435610e9981610da9565b93506020850135610ea981610da9565b925060408501359150606085013567ffffffffffffffff811115610ecc57600080fd5b610ed887828801610e08565b91505092959194509250565b60008060408385031215610ef757600080fd5b8235610f0281610da9565b91506020830135610f1281610da9565b809150509250929050565b60008083601f840112610f2f57600080fd5b50813567ffffffffffffffff811115610f4757600080fd5b602083019150836020828501011115610d3657600080fd5b600080600080600060808688031215610f7757600080fd5b8535610f8281610da9565b945060208601359350604086013567ffffffffffffffff811115610fa557600080fd5b610fb188828901610f1d565b909450925050606086013560ff81168114610fcb57600080fd5b809150509295509295909350565b600060208083528351808285015260005b8181101561100657858101830151858201604001528201610fea565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060006040848603121561103c57600080fd5b833561104781610da9565b9250602084013567ffffffffffffffff81111561106357600080fd5b61106f86828701610f1d565b9497909650939450505050565b6000806000806080858703121561109257600080fd5b843561109d81610da9565b935060208501356110ad81610da9565b93969395505050506040820135916060013590565b600080604083850312156110d557600080fd5b82356110e081610da9565b946020939093013593505050565b60008060006060848603121561110357600080fd5b833561110e81610da9565b95602085013595506040909401359392505050565b600082601f83011261113457600080fd5b8135602067ffffffffffffffff82111561115057611150610dc1565b8160051b61115f828201610dd7565b928352848101820192828101908785111561117957600080fd5b83870192505b848310156111985782358252918301919083019061117f565b979650505050505050565b600080600080600060a086880312156111bb57600080fd5b85356111c681610da9565b945060208601356111d681610da9565b9350604086013567ffffffffffffffff808211156111f357600080fd5b6111ff89838a01611123565b9450606088013591508082111561121557600080fd5b61122189838a01611123565b9350608088013591508082111561123757600080fd5b5061124488828901610e08565b9150509295509295909350565b60008060006060848603121561126657600080fd5b833561127181610da9565b9250602084013561128181610da9565b929592945050506040919091013590565b600080602083850312156112a557600080fd5b823567ffffffffffffffff8111156112bc57600080fd5b6112c885828601610f1d565b90969095509350505050565b6000602082840312156112e657600080fd5b5035919050565b600080600080600060a0868803121561130557600080fd5b853561131081610da9565b9450602086013561132081610da9565b93506040860135925060608601359150608086013567ffffffffffffffff81111561134a57600080fd5b61124488828901610e08565b634e487b7160e01b600052603260045260246000fd5b8015158114610dbe57600080fd5b60006020828403121561138c57600080fd5b813561085d8161136c565b6000602082840312156113a957600080fd5b813561085d81610da9565b634e487b7160e01b600052601160045260246000fd5b6000600182016113dc576113dc6113b4565b5060010190565b6000602082840312156113f557600080fd5b815161085d81610da9565b60006020828403121561141257600080fd5b815161085d8161136c565b6000808585111561142d57600080fd5b8386111561143a57600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561146f5780818660040360031b1b83161692505b505092915050565b80820180821115610ada57610ada6113b4565b60008060006060848603121561149f57600080fd5b8351925060208401516114b181610da9565b80925050604084015190509250925092565b818382376000910190815291905056fea2646970667358221220e030a8aebc0c7189e7cb5b473a0cf379bfbc7e164cde1f79e1fbd2c296e8e56a64736f6c63430008110033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/build/contracts/contracts/ERC721All.sol/ERC721All.dbg.json b/build/contracts/contracts/ERC721All.sol/ERC721All.dbg.json index 30beca2..45fcfcd 100644 --- a/build/contracts/contracts/ERC721All.sol/ERC721All.dbg.json +++ b/build/contracts/contracts/ERC721All.sol/ERC721All.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/e7a523144ead89b0801158692bb4561d.json" + "buildInfo": "../../build-info/7c858448bff731211c6ab6035fe17c34.json" } diff --git a/build/contracts/contracts/ERC721i.sol/ERC721i.dbg.json b/build/contracts/contracts/ERC721i.sol/ERC721i.dbg.json index a636ec4..45fcfcd 100644 --- a/build/contracts/contracts/ERC721i.sol/ERC721i.dbg.json +++ b/build/contracts/contracts/ERC721i.sol/ERC721i.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/62b1cf2576af835fbe85a24a6aed72f2.json" + "buildInfo": "../../build-info/7c858448bff731211c6ab6035fe17c34.json" } diff --git a/build/contracts/contracts/MinimalAccount.sol/MinimalAccount.dbg.json b/build/contracts/contracts/MinimalAccount.sol/MinimalAccount.dbg.json index 7b9b596..9bf173d 100644 --- a/build/contracts/contracts/MinimalAccount.sol/MinimalAccount.dbg.json +++ b/build/contracts/contracts/MinimalAccount.sol/MinimalAccount.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" + "buildInfo": "../../build-info/50bef133a3a4ef56dcc656e5ddaa5648.json" } diff --git a/build/contracts/contracts/interfaces/IAccount.sol/IAccount.dbg.json b/build/contracts/contracts/interfaces/IAccount.sol/IAccount.dbg.json deleted file mode 100644 index 2029eed..0000000 --- a/build/contracts/contracts/interfaces/IAccount.sol/IAccount.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" -} diff --git a/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551Account.dbg.json b/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551Account.dbg.json index 2029eed..3e0dcf2 100644 --- a/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551Account.dbg.json +++ b/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551Account.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" + "buildInfo": "../../../build-info/50bef133a3a4ef56dcc656e5ddaa5648.json" } diff --git a/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551Account.json b/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551Account.json index 9c18836..db71574 100644 --- a/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551Account.json +++ b/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551Account.json @@ -4,67 +4,37 @@ "sourceName": "contracts/interfaces/IERC6551Account.sol", "abi": [ { - "anonymous": false, "inputs": [ { - "indexed": true, "internalType": "address", - "name": "target", + "name": "signer", "type": "address" }, { - "indexed": true, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, "internalType": "bytes", - "name": "data", + "name": "context", "type": "bytes" } ], - "name": "TransactionExecuted", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "executeCall", + "name": "isValidSigner", "outputs": [ { - "internalType": "bytes", - "name": "", - "type": "bytes" + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" } ], - "stateMutability": "payable", + "stateMutability": "view", "type": "function" }, { "inputs": [], - "name": "owner", + "name": "state", "outputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", diff --git a/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551AccountProxy.dbg.json b/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551AccountProxy.dbg.json deleted file mode 100644 index 2029eed..0000000 --- a/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551AccountProxy.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" -} diff --git a/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551AccountProxy.json b/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551AccountProxy.json deleted file mode 100644 index f1e0baa..0000000 --- a/build/contracts/contracts/interfaces/IERC6551Account.sol/IERC6551AccountProxy.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC6551AccountProxy", - "sourceName": "contracts/interfaces/IERC6551Account.sol", - "abi": [ - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/build/contracts/contracts/interfaces/IERC6551Executable.sol/IERC6551Executable.dbg.json b/build/contracts/contracts/interfaces/IERC6551Executable.sol/IERC6551Executable.dbg.json new file mode 100644 index 0000000..3e0dcf2 --- /dev/null +++ b/build/contracts/contracts/interfaces/IERC6551Executable.sol/IERC6551Executable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/50bef133a3a4ef56dcc656e5ddaa5648.json" +} diff --git a/build/contracts/contracts/interfaces/IAccount.sol/IAccount.json b/build/contracts/contracts/interfaces/IERC6551Executable.sol/IERC6551Executable.json similarity index 50% rename from build/contracts/contracts/interfaces/IAccount.sol/IAccount.json rename to build/contracts/contracts/interfaces/IERC6551Executable.sol/IERC6551Executable.json index 91f8386..470b1d8 100644 --- a/build/contracts/contracts/interfaces/IAccount.sol/IAccount.json +++ b/build/contracts/contracts/interfaces/IERC6551Executable.sol/IERC6551Executable.json @@ -1,7 +1,7 @@ { "_format": "hh-sol-artifact-1", - "contractName": "IAccount", - "sourceName": "contracts/interfaces/IAccount.sol", + "contractName": "IERC6551Executable", + "sourceName": "contracts/interfaces/IERC6551Executable.sol", "abi": [ { "inputs": [ @@ -19,9 +19,14 @@ "internalType": "bytes", "name": "data", "type": "bytes" + }, + { + "internalType": "uint8", + "name": "operation", + "type": "uint8" } ], - "name": "executeCall", + "name": "execute", "outputs": [ { "internalType": "bytes", @@ -31,37 +36,6 @@ ], "stateMutability": "payable", "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "address", - "name": "tokenContract", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" } ], "bytecode": "0x", diff --git a/build/contracts/contracts/interfaces/IERC6551Registry.sol/IERC6551Registry.dbg.json b/build/contracts/contracts/interfaces/IERC6551Registry.sol/IERC6551Registry.dbg.json new file mode 100644 index 0000000..3e0dcf2 --- /dev/null +++ b/build/contracts/contracts/interfaces/IERC6551Registry.sol/IERC6551Registry.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/50bef133a3a4ef56dcc656e5ddaa5648.json" +} diff --git a/build/contracts/contracts/interfaces/IRegistry.sol/IRegistry.json b/build/contracts/contracts/interfaces/IERC6551Registry.sol/IERC6551Registry.json similarity index 59% rename from build/contracts/contracts/interfaces/IRegistry.sol/IRegistry.json rename to build/contracts/contracts/interfaces/IERC6551Registry.sol/IERC6551Registry.json index cc5470c..fc70686 100644 --- a/build/contracts/contracts/interfaces/IRegistry.sol/IRegistry.json +++ b/build/contracts/contracts/interfaces/IERC6551Registry.sol/IERC6551Registry.json @@ -1,33 +1,81 @@ { "_format": "hh-sol-artifact-1", - "contractName": "IRegistry", - "sourceName": "contracts/interfaces/IRegistry.sol", + "contractName": "IERC6551Registry", + "sourceName": "contracts/interfaces/IERC6551Registry.sol", "abi": [ { + "inputs": [], + "name": "AccountCreationFailed", + "type": "error" + }, + { + "anonymous": false, "inputs": [ { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, "internalType": "address", "name": "implementation", "type": "address" }, { + "indexed": false, + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "indexed": false, "internalType": "uint256", "name": "chainId", "type": "uint256" }, { + "indexed": true, "internalType": "address", "name": "tokenContract", "type": "address" }, { + "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" + } + ], + "name": "ERC6551AccountCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" }, { - "internalType": "uint256", + "internalType": "bytes32", "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", "type": "uint256" } ], @@ -35,7 +83,7 @@ "outputs": [ { "internalType": "address", - "name": "", + "name": "account", "type": "address" } ], @@ -49,6 +97,11 @@ "name": "implementation", "type": "address" }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, { "internalType": "uint256", "name": "chainId", @@ -63,23 +116,13 @@ "internalType": "uint256", "name": "tokenId", "type": "uint256" - }, - { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "initData", - "type": "bytes" } ], "name": "createAccount", "outputs": [ { "internalType": "address", - "name": "", + "name": "account", "type": "address" } ], diff --git a/build/contracts/contracts/interfaces/IRegistry.sol/IRegistry.dbg.json b/build/contracts/contracts/interfaces/IRegistry.sol/IRegistry.dbg.json deleted file mode 100644 index 2029eed..0000000 --- a/build/contracts/contracts/interfaces/IRegistry.sol/IRegistry.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" -} diff --git a/build/contracts/contracts/lib/ERC6551AccountLib.sol/ERC6551AccountLib.dbg.json b/build/contracts/contracts/lib/ERC6551AccountLib.sol/ERC6551AccountLib.dbg.json index 2029eed..3e0dcf2 100644 --- a/build/contracts/contracts/lib/ERC6551AccountLib.sol/ERC6551AccountLib.dbg.json +++ b/build/contracts/contracts/lib/ERC6551AccountLib.sol/ERC6551AccountLib.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/aaffff74657922177b5ed9b5473c7dc7.json" + "buildInfo": "../../../build-info/50bef133a3a4ef56dcc656e5ddaa5648.json" } diff --git a/contracts/Account.sol b/contracts/Account.sol index db50ef0..81b824e 100644 --- a/contracts/Account.sol +++ b/contracts/Account.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.13; import "./interfaces/IERC6551Account.sol"; +import "./interfaces/IERC6551Executable.sol"; import "./lib/ERC6551AccountLib.sol"; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; @@ -14,7 +15,6 @@ error NotAuthorized(); error InvalidInput(); error AccountLocked(); error ExceedsMaxLockTime(); -error UntrustedImplementation(); error OwnershipCycle(); /** @@ -23,6 +23,7 @@ error OwnershipCycle(); contract Account is IERC165, IERC6551Account, + IERC6551Executable, IERC721Receiver, IERC1155Receiver { @@ -49,8 +50,8 @@ contract Account is } /// @dev reverts if caller is not authorized to execute on this account - modifier onlyAuthorized() { - if (!isAuthorized(msg.sender)) revert NotAuthorized(); + modifier onlyValidSigner(bytes calldata context) { + if (isValidSigner(msg.sender, context) != 0x523e3260) revert NotAuthorized(); _; } @@ -60,6 +61,11 @@ contract Account is _; } + modifier onlyAllowedMethod(bytes calldata _data) { + require(allowedMethod(_data), "Method all not allowed"); + _; + } + constructor() {} /// @dev allows eth transfers by default, but allows account owner to override @@ -67,13 +73,12 @@ contract Account is } /// @dev executes a low-level call against an account if the caller is authorized to make calls - function executeCall( + function execute( address to, uint256 value, - bytes calldata data - ) external payable onlyAuthorized onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) { - emit TransactionExecuted(to, value, data); - + bytes calldata data, + uint8 operation + ) external payable onlyValidSigner(data) onlyUnlocked onlyAllowedMethod(data) returns (bytes memory) { return _call(to, value, data); } @@ -139,7 +144,7 @@ contract Account is } /// @dev Returns the authorization status for a given caller - function isAuthorized(address caller) public view returns (bool) { + function isValidSigner(address signer, bytes calldata context) public view returns (bytes4 magicValue) { ( , address tokenContract, @@ -148,12 +153,12 @@ contract Account is address _owner = IERC721(tokenContract).ownerOf(tokenId); // authorize token owner - if (caller == _owner) return true; + if (signer == _owner) return 0x523e3260; // authorize caller if owner has granted permissions - if (permissions[_owner][caller]) return true; + if (permissions[_owner][signer]) return 0x523e3260; - return false; + return 0xffffffff; } /// @dev Returns true if a given interfaceId is supported by this account. This method can be @@ -265,8 +270,7 @@ contract Account is return bytes4(_data[:4]); } - modifier onlyAllowedMethod(bytes calldata _data) { - require(allowedMethod(_data), "Method all not allowed"); - _; + function state() external view returns (uint256) { + return 1; } } diff --git a/contracts/AccountRegistryBridge.sol b/contracts/AccountRegistryBridge.sol index 94abca1..31c8f41 100644 --- a/contracts/AccountRegistryBridge.sol +++ b/contracts/AccountRegistryBridge.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.13; -import "./interfaces/IRegistry.sol"; +import "./interfaces/IERC6551Registry.sol"; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; contract AccountRegistryBridge { @@ -13,13 +13,12 @@ contract AccountRegistryBridge { address contractAddress, uint256 tokenId ) external returns (address) { - return IRegistry(REGISTRY).createAccount( + return IERC6551Registry(REGISTRY).createAccount( IMPLEMENTATION, + '', block.chainid, contractAddress, - tokenId, - 0, - '' + tokenId ); } @@ -27,12 +26,12 @@ contract AccountRegistryBridge { address contractAddress, uint256 tokenId ) external view returns (address) { - return IRegistry(REGISTRY).account( + return IERC6551Registry(REGISTRY).account( IMPLEMENTATION, + '', block.chainid, contractAddress, - tokenId, - 0 + tokenId ); } } \ No newline at end of file diff --git a/contracts/interfaces/IAccount.sol b/contracts/interfaces/IAccount.sol deleted file mode 100644 index da027ae..0000000 --- a/contracts/interfaces/IAccount.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -interface IAccount { - function owner() external view returns (address); - - function token() - external - view - returns (address tokenContract, uint256 tokenId); - - function executeCall( - address to, - uint256 value, - bytes calldata data - ) external payable returns (bytes memory); -} diff --git a/contracts/interfaces/IERC6551Account.sol b/contracts/interfaces/IERC6551Account.sol index 2f28589..22b8bb3 100644 --- a/contracts/interfaces/IERC6551Account.sol +++ b/contracts/interfaces/IERC6551Account.sol @@ -1,26 +1,58 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; -interface IERC6551AccountProxy { - function implementation() external view returns (address); -} - -/// @dev the ERC-165 identifier for this interface is `0xeff4d378` +/// @dev the ERC-165 identifier for this interface is `0x6faff5f1` interface IERC6551Account { - event TransactionExecuted(address indexed target, uint256 indexed value, bytes data); - + /** + * @dev Allows the account to receive Ether. + * + * Accounts MUST implement a `receive` function. + * + * Accounts MAY perform arbitrary logic to restrict conditions + * under which Ether can be received. + */ receive() external payable; - function executeCall( - address to, - uint256 value, - bytes calldata data - ) external payable returns (bytes memory); - + /** + * @dev 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. + * + * @return chainId The chain ID of the chain the token exists on + * @return tokenContract The contract address of the token + * @return tokenId The ID of the token + */ function token() external view returns (uint256 chainId, address tokenContract, uint256 tokenId); - function owner() external view returns (address); + /** + * @dev Returns a value that SHOULD be modified each time the account changes state. + * + * @return The current account state + */ + function state() external view returns (uint256); + + /** + * @dev 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. + * + * @param signer The address to check signing authorization for + * @param context Additional data used to determine whether the signer is valid + * @return magicValue Magic value indicating whether the signer is valid + */ + function isValidSigner(address signer, bytes calldata context) + external + view + returns (bytes4 magicValue); } + diff --git a/contracts/interfaces/IERC6551Executable.sol b/contracts/interfaces/IERC6551Executable.sol new file mode 100644 index 0000000..0cf7abb --- /dev/null +++ b/contracts/interfaces/IERC6551Executable.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +/// @dev the ERC-165 identifier for this interface is `0x51945447` +interface IERC6551Executable { + /** + * @dev 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. + * + * @param to The target address of the operation + * @param value The Ether value to be sent to the target + * @param data The encoded operation calldata + * @param operation A value indicating the type of operation to perform + * @return The result of the operation + */ + function execute(address to, uint256 value, bytes calldata data, uint8 operation) + external + payable + returns (bytes memory); +} diff --git a/contracts/interfaces/IERC6551Registry.sol b/contracts/interfaces/IERC6551Registry.sol new file mode 100644 index 0000000..c2150ad --- /dev/null +++ b/contracts/interfaces/IERC6551Registry.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; +interface IERC6551Registry { + /** + * @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation. + */ + event ERC6551AccountCreated( + address account, + address indexed implementation, + bytes32 salt, + uint256 chainId, + address indexed tokenContract, + uint256 indexed tokenId + ); + + /** + * @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails. + */ + error AccountCreationFailed(); + + /** + * @dev Creates a token bound account for a non-fungible token. + * + * If account has already been created, returns the account address without calling create2. + * + * Emits ERC6551AccountCreated event. + * + * @return account The address of the token bound account + */ + function createAccount( + address implementation, + bytes32 salt, + uint256 chainId, + address tokenContract, + uint256 tokenId + ) external returns (address account); + + /** + * @dev Returns the computed token bound account address for a non-fungible token. + * + * @return account The address of the token bound account + */ + function account( + address implementation, + bytes32 salt, + uint256 chainId, + address tokenContract, + uint256 tokenId + ) external view returns (address account); +} diff --git a/contracts/interfaces/IRegistry.sol b/contracts/interfaces/IRegistry.sol deleted file mode 100644 index 664dab2..0000000 --- a/contracts/interfaces/IRegistry.sol +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -interface IRegistry { - function createAccount( - address implementation, - uint256 chainId, - address tokenContract, - uint256 tokenId, - uint256 salt, - bytes calldata initData - ) external returns (address); - - function account( - address implementation, - uint256 chainId, - address tokenContract, - uint256 tokenId, - uint256 salt - ) external view returns (address); -} diff --git a/deploy/AccountRegistryBridge.ts b/deploy/AccountRegistryBridge.ts deleted file mode 100644 index e69de29..0000000 diff --git a/hardhat.config.ts b/hardhat.config.ts index 6f197e0..ae788f5 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -63,7 +63,7 @@ const config: HardhatUserConfig = { chainId: 137, forking: { url: "https://polygon-mainnet.g.alchemy.com/v2/" + process.env.ALCHEMY_API_KEY, - blockNumber: 42543137 + blockNumber: 49144510 }, accounts: { mnemonic: mnemonic.testnet, diff --git a/test/ChargedParticlesAccount.test.ts b/test/ChargedParticlesAccount.test.ts index bf9b6f5..288e356 100644 --- a/test/ChargedParticlesAccount.test.ts +++ b/test/ChargedParticlesAccount.test.ts @@ -1,13 +1,13 @@ import { expect } from "chai"; import { ethers, network, getNamedAccounts, deployments } from 'hardhat'; -import { NFTMock, ChargedParticlesAccount, IRegistry, ERC20Mock } from "../typechain-types"; +import { NFTMock, ChargedParticlesAccount, IERC6551Registry, ERC20Mock } from "../typechain-types"; describe('Account', async function () { - const REGISTRY = "0x02101dfB77FDE026414827Fdc604ddAF224F0921"; + const REGISTRY = "0x000000006551c19487814612e58FE06813775758"; // Contracts - let chargedParticlesAccount: ChargedParticlesAccount, nftMock: NFTMock, registryContract: IRegistry; + let chargedParticlesAccount: ChargedParticlesAccount, nftMock: NFTMock, registryContract: IERC6551Registry; let erc20Mock: ERC20Mock; // Addresses @@ -15,6 +15,8 @@ describe('Account', async function () { // Signers let deployer: string, receiver: string; + const salt = ethers.encodeBytes32String('0') + before(async function () { const { deployer: deployerAccount, user1 } = await getNamedAccounts(); deployer = deployerAccount; @@ -29,7 +31,7 @@ describe('Account', async function () { erc20Mock = await ethers.getContract('ERC20Mock'); registryContract = await ethers.getContractAt( - 'IRegistry', + 'IERC6551Registry', REGISTRY ); @@ -51,20 +53,19 @@ describe('Account', async function () { const newAccountAddress = await registryContract.account( chargedParticlesAccountAddress, + salt, network.config.chainId ?? 137, nftMockAddress, tokenId, - 0 ); expect(newAccountAddress).to.not.be.empty; const newAccountReceipt = await registryContract.createAccount( chargedParticlesAccountAddress, + salt, network.config.chainId ?? 137, nftMockAddress, tokenId, - 0, - '0x' ).then(tx => tx.wait()); expect(newAccountReceipt).to.haveOwnProperty('hash'); @@ -147,19 +148,18 @@ describe('Account', async function () { // Create an account const newAccountAddress = await registryContract.account( chargedParticlesAccountAddress, + salt, network.config.chainId ?? 137, nftMockAddress, tokenId, - 0 ); await registryContract.createAccount( chargedParticlesAccountAddress, + salt, network.config.chainId ?? 137, nftMockAddress, tokenId, - 0, - '0x' ).then(tx => tx.wait()); return newAccountAddress; diff --git a/test/ExecueteCall.test.ts b/test/ExecueteCall.test.ts index 3921f6d..c2b0870 100644 --- a/test/ExecueteCall.test.ts +++ b/test/ExecueteCall.test.ts @@ -1,18 +1,20 @@ import { expect } from "chai"; import { ethers, network, getNamedAccounts, deployments } from 'hardhat'; -import { NFTMock, Account, IRegistry } from "../typechain-types"; +import { NFTMock, Account, IERC6551Registry } from "../typechain-types"; describe('Execute calls', async function () { - const REGISTRY = "0x02101dfB77FDE026414827Fdc604ddAF224F0921"; + const REGISTRY = "0x000000006551c19487814612e58FE06813775758"; // Contracts - let chargedParticlesAccount: Account, nftMock: NFTMock, registryContract: IRegistry; + let chargedParticlesAccount: Account, nftMock: NFTMock, registryContract: IERC6551Registry; // Addresses let nftMockAddress: string, chargedParticlesAccountAddress: string; // Signers let deployer: string, receiver: string; + const salt = ethers.encodeBytes32String('0') + before(async function () { const { deployer: deployerAccount, user1 } = await getNamedAccounts(); deployer = deployerAccount; @@ -25,7 +27,7 @@ describe('Execute calls', async function () { chargedParticlesAccount = await ethers.getContract('ChargedParticlesAccount'); nftMock = await ethers.getContract('NFTMock'); registryContract = await ethers.getContractAt( - 'IRegistry', + 'IERC6551Registry', REGISTRY ); @@ -46,20 +48,19 @@ describe('Execute calls', async function () { const newAccountAddress = await registryContract.account( chargedParticlesAccountAddress, + salt, network.config.chainId ?? 137, nftMockAddress, tokenId, - 0 ); expect(newAccountAddress).to.not.be.empty; const newAccountReceipt = await registryContract.createAccount( chargedParticlesAccountAddress, + salt, network.config.chainId ?? 137, nftMockAddress, tokenId, - 0, - '0x' ).then(tx => tx.wait()); expect(newAccountReceipt).to.haveOwnProperty('hash'); @@ -80,20 +81,19 @@ describe('Execute calls', async function () { // Create an account const newAccountAddress = await registryContract.account( chargedParticlesAccountAddress, + salt, network.config.chainId ?? 137, nftMockAddress, tokenId, - 0 ); await registryContract.createAccount( chargedParticlesAccountAddress, + salt, network.config.chainId ?? 137, nftMockAddress, tokenId, - 0, - '0x' - ).then(tx => tx.wait()); + ).then(tx => tx.wait()); // Give permission await nftMock.approve(newAccountAddress, depositedTokenId).then(tx => tx.wait()); @@ -116,10 +116,11 @@ describe('Execute calls', async function () { const breakCovalentBondCallData = breakCovalentBond(newAccountAddress, receiver, depositedTokenId); - await account.executeCall( + await account.execute( nftMockAddress, 0, - breakCovalentBondCallData + breakCovalentBondCallData, + 0, ).then(tx => tx.wait()); expect(await nftMock.ownerOf(depositedTokenId)).to.be.eq(receiver); @@ -142,30 +143,29 @@ describe('Execute calls', async function () { // Create an account const newAccountAddress = await registryContract.account( chargedParticlesAccountAddress, + salt, network.config.chainId ?? 137, nftMockAddress, tokenId, - 0 ); await registryContract.createAccount( chargedParticlesAccountAddress, + salt, network.config.chainId ?? 137, nftMockAddress, tokenId, - 0, - '0x' ).then(tx => tx.wait()); const account = await ethers.getContractAt('ChargedParticlesAccount', newAccountAddress); const approveCallData = approveCall('0x277BFc4a8dc79a9F194AD4a83468484046FAFD3A', depositedTokenId); - await expect(account.executeCall( + await expect(account.execute( nftMockAddress, 0, - approveCallData - + approveCallData, + 0 )).revertedWith('Method all not allowed'); });